From d1f4d75bf3acdf51106b11ec7f361acddbd2d41d Mon Sep 17 00:00:00 2001 From: jacobbowdoin Date: Sat, 28 Aug 2021 08:39:27 -0700 Subject: [PATCH] :tada: open source commit --- .env | 2 + .eslintrc.cjs | 32 + .firebaserc | 6 + .github/CODEOWNERS | 4 + .github/lighthouse-budget.json | 31 + .github/lighthouserc.json | 12 + .github/pull_request_template.md | 7 + .github/workflows/audit-main-on-deploy.yml | 58 + .../workflows/test-and-audit-pull-request.yml | 144 + .gitignore | 13 + .prettierrc | 5 + .vscode/extensions.json | 33 + .vscode/launch.json | 16 + .vscode/settings.json | 33 + LICENSE | 696 + README.md | 36 + docs/CONTRIBUTING.md | 32 + docs/Copy-prod-data-to-dev.md | 3 + docs/JSON-to-Firestore-Importer.md | 33 + docs/data/Sub-Entries.md | 55 + docs/env.md | 4 + docs/functions-emulator.md | 99 + docs/functions-unit-tests.md | 42 + docs/i18n.md | 61 + docs/import-dictionary.md | 9 + docs/setup-tips-for-beginner-devs.md | 18 + docs/tips.md | 1 + docs/walkthrough.md | 125 + docs/woolaroo-notes.md | 10 + docs/z-index.md | 20 + e2e/.gitignore | 2 + e2e/E2E.md | 31 + e2e/jest.config.js | 21 + e2e/jest.individual-test.config.js | 16 + e2e/package-lock.json | 5800 +++ e2e/package.json | 22 + e2e/tests/checkly-examples.cjs | 82 + e2e/tests/essentials.cjs | 95 + e2e/tests/example.test.ts | 4 + e2e/tests/globalTypes.ts | 7 + e2e/tests/homepage.test.ts | 8 + e2e/tests/login.test.ts | 19 + e2e/tsconfig.json | 10 + firebase.json | 12 + functions/.gitignore | 11 + functions/jest.config.js | 17 + functions/package-lock.json | 12119 ++++++ functions/package.json | 46 + functions/scripts/algolia/.gitignore | 2 + .../scripts/algolia/addDictionariesToIndex.ts | 52 + functions/scripts/algolia/config.ts | 1 + .../algolia/copyAlgoliaIndexRecords.ts | 14 + .../algolia/copyAlgoliaIndexSettings.ts | 9 + functions/scripts/config.ts | 39 + .../FLEx/FLEx-CategoryCatalogTemplate.xml | 3649 ++ .../scripts/import/FLEx/FLEx-SFM-convert.md | 19 + .../scripts/import/FLEx/abbreviate-pos.ts | 34 + .../scripts/import/FLEx/convert-flex.test.ts | 15 + functions/scripts/import/FLEx/convert-flex.ts | 74 + functions/scripts/import/FLEx/convert.ts | 79 + .../scripts/import/FLEx/semanticDomains.ts | 78 + .../import/import-spreadsheet-v4.test.ts | 58 + .../scripts/import/import-spreadsheet-v4.ts | 124 + functions/scripts/import/import.ts | 12 + functions/scripts/import/old/filterArray.ts | 25 + functions/scripts/import/old/gatherPOS.ts | 33 + ...port-old-talking-dictionary-to-firebase.ts | 182 + .../old/import-spreadsheet-to-firebase.ts | 175 + .../scripts/import/old/import-spreadsheet.ts | 73 + .../scripts/import/old/importToFirestore.ts | 198 + .../import/old/tdv1-import/find-languages.ts | 39 + .../import/old/tdv1-import/import-old-td.ts | 106 + functions/scripts/move-firestore-document.ts | 112 + functions/scripts/refactor/entry-refactor.ts | 97 + .../scripts/refactor/tdv1-dictionaries.ts | 1134 + .../refactor/upload-old-dictionaries.ts | 31 + .../src/aggregation/decreaseEntryCount.ts | 12 + .../src/aggregation/increaseEntryCount.ts | 13 + functions/src/algolia/modifyIndex.ts | 57 + functions/src/algolia/prepareDataForIndex.ts | 107 + functions/src/auth.ts | 14 + functions/src/config.ts | 15 + .../deletion/deleteMediaOnDictionaryDelete.ts | 15 + functions/src/deletion/recursiveDelete.ts | 46 + functions/src/email/adminRecipients.ts | 15 + functions/src/email/inviteContributor.ts | 89 + functions/src/email/onNewDictionary.ts | 87 + functions/src/email/onNewUser.ts | 54 + functions/src/email/supportEmail.ts | 34 + functions/src/export/interfaceExplanations.ts | 210 + ...emanticDomainOfDictionary.emulator.test.ts | 49 + .../src/export/semanticDomainOfDictionary.ts | 124 + functions/src/export/simple.test.ts | 20 + functions/src/helpers.ts | 34 + functions/src/history.ts | 22 + .../src/import/helpers/abbreviate-td-pos.ts | 42 + functions/src/import/helpers/clean-up-data.ts | 13 + .../helpers/delete-duplicate-entries.ts | 150 + .../src/import/helpers/find-unmatched-pos.ts | 46 + .../src/import/helpers/getImageServingUrl.ts | 12 + functions/src/import/helpers/unzip.ts | 72 + functions/src/import/import_features.ts | 465 + functions/src/import/importing.ts | 469 + functions/src/import/importing2.ts | 228 + functions/src/import/mock-dictionary.ts | 16 + functions/src/import/td-converters.ts | 132 + functions/src/index.ts | 82 + functions/src/updateDevAdminRole.ts | 22 + functions/tests/explore/env.test.ts | 66 + functions/tests/import/importing.test.ts | 249 + functions/tests/import/mocks.ts | 72 + functions/tests/import/td-converters.test.ts | 21 + functions/tests/main.test.ts | 11 + functions/tests/test-config.ts | 20 + functions/tsconfig.json | 17 + jest.config.cjs | 11 + package-lock.json | 9717 +++++ package.json | 79 + postcss.config.cjs | 20 + scripts/App-Translations.csv | 201 + scripts/Glossing-Languages.csv | 342 + scripts/Parts-of-Speech.csv | 97 + scripts/Semantic-Domains.csv | 245 + scripts/jest.scripts.cjs | 21 + scripts/update-locales.test.ts | 31 + scripts/update-locales.ts | 116 + src/.svench.js | 8 + src/app.html | 24 + src/docs.svench/note.md | 3 + src/global.css | 40 + src/global.d.ts | 16 + src/hooks.ts | 28 + src/index.svench | 5 + src/lib/components/audio/AddSpeaker.svelte | 139 + src/lib/components/audio/EditAudio.svelte | 202 + src/lib/components/audio/RecordAudio.svelte | 177 + src/lib/components/audio/SelectAudio.svelte | 57 + src/lib/components/audio/UploadAudio.svelte | 135 + src/lib/components/audio/Waveform.svelte | 70 + src/lib/components/editing/BadgeArray.svelte | 57 + src/lib/components/editor/CKEditor.svelte | 38 + .../editor/ClassicCustomized.svelte | 42 + src/lib/components/home/Dictionaries.svelte | 163 + src/lib/components/home/Mapbox.svelte | 139 + src/lib/components/home/Marker.svelte | 16 + src/lib/components/home/Search.svelte | 232 + src/lib/components/home/SelectedDict.svelte | 94 + src/lib/components/home/key.ts | 2 + src/lib/components/home/map.class.ts | 62 + src/lib/components/image/Image.svelte | 89 + src/lib/components/image/UploadImage.svelte | 149 + src/lib/components/image/processImageUrl.ts | 1 + .../keyboards/SpecialCharacters.svelte | 7 + src/lib/components/modals/Contact.svelte | 132 + src/lib/components/modals/Coordinates.svelte | 205 + .../components/modals/EditFieldModal.svelte | 55 + .../components/modals/SelectLanguage.svelte | 42 + .../modals/SemanticDomainsModal.svelte | 81 + .../components/search/ClearRefinements.svelte | 23 + src/lib/components/search/Hits.svelte | 68 + src/lib/components/search/InfiniteHits.svelte | 40 + .../components/search/InstantSearch.svelte | 64 + src/lib/components/search/Pagination.svelte | 80 + .../components/search/RefinementList.svelte | 139 + src/lib/components/search/SearchBox.svelte | 54 + src/lib/components/search/SortBy.svelte | 42 + src/lib/components/search/Stats.svelte | 23 + .../components/search/ToggleRefinement.svelte | 46 + src/lib/components/shell/Header.svelte | 96 + src/lib/components/shell/LogRocket.svelte | 15 + src/lib/components/shell/NProgress.svelte | 24 + src/lib/components/shell/User.svelte | 72 + src/lib/components/shell/nprogress.css | 9 + src/lib/components/table/Cell.svelte | 86 + .../table/ColumnAdjustSlideover.svelte | 126 + src/lib/components/table/ColumnTitle.svelte | 20 + src/lib/components/table/EntriesTable.svelte | 104 + .../components/table/cells/AudioCell.svelte | 52 + .../table/cells/CheckboxCell.svelte | 34 + .../components/table/cells/PhotoCell.svelte | 18 + .../components/table/cells/SelectPOS.svelte | 48 + .../table/cells/SelectSpeakerCell.svelte | 25 + .../table/cells/SemanticDomains.svelte | 37 + src/lib/components/table/cells/Textbox.svelte | 34 + src/lib/components/ui/ActionSheet.svelte | 99 + src/lib/components/ui/AdminGuard.svelte | 9 + src/lib/components/ui/Autocomplete.svelte | 74 + .../components/ui/IntersectionObserver.svelte | 77 + src/lib/components/ui/Modal.svelte | 98 + src/lib/components/ui/MultiSelect.svelte | 281 + src/lib/components/ui/ResponsiveTable.svelte | 26 + src/lib/components/ui/SideSheet.svelte | 100 + src/lib/components/ui/Slideover.svelte | 81 + src/lib/components/ui/Textarea.svelte | 106 + src/lib/components/ui/Toasts.svelte | 43 + src/lib/components/ui/View.svelte | 20 + src/lib/components/ui/VirtualList.svelte | 155 + src/lib/dynamic.svench | 20 + src/lib/graveyard/Leaflet.svelte | 61 + src/lib/graveyard/filterEntries.ts | 25 + src/lib/helpers/cookies.ts | 33 + src/lib/helpers/delete.ts | 26 + src/lib/helpers/dictionariesManaging.ts | 30 + src/lib/helpers/downloadCSV.ts | 84 + src/lib/helpers/fetchDictionaries.ts | 59 + src/lib/helpers/share.ts | 36 + src/lib/helpers/time.ts | 26 + src/lib/helpers/vernacularName.test.ts | 13 + src/lib/helpers/vernacularName.ts | 12 + src/lib/i18n.ts | 82 + src/lib/interfaces/audio.interface.ts | 16 + src/lib/interfaces/column.interface.ts | 15 + src/lib/interfaces/contributor.interface.ts | 5 + src/lib/interfaces/dialect.interface.ts | 5 + .../dictionary-settings.interface.ts | 5 + src/lib/interfaces/dictionary.interface.ts | 34 + src/lib/interfaces/entry.algolia.md | 21 + src/lib/interfaces/entry.interface.ts | 82 + src/lib/interfaces/entry.md | 55 + .../interfaces/exampe-sentence.interface.ts | 6 + .../firestore-metadata.interface.ts | 17 + .../interfaces/gloss-language.interface.ts | 12 + src/lib/interfaces/gloss.interface.ts | 3 + src/lib/interfaces/import.interface.ts | 10 + src/lib/interfaces/index.ts | 49 + src/lib/interfaces/invite.interface.ts | 9 + src/lib/interfaces/languages.interface.ts | 36 + src/lib/interfaces/manager.interface.ts | 5 + .../interfaces/part-of-speech.interface.ts | 5 + src/lib/interfaces/photo.interface.ts | 11 + .../interfaces/semantic-domain.interface.ts | 4 + src/lib/interfaces/speaker.interface.ts | 11 + src/lib/interfaces/user.interface.ts | 23 + .../write-in-collaborator.interface.ts | 4 + src/lib/keyboards/App.svelte | 13 + src/lib/keyboards/CharisSIL-R.woff | Bin 0 -> 557106 bytes src/lib/keyboards/Keyman.svelte | 108 + src/lib/keyboards/index.html | 35 + src/lib/keyboards/keyboards.json | 33968 ++++++++++++++++ src/lib/keyboards/keyman.css | 10 + src/lib/keyboards/vowel_trapezoid.gif | Bin 0 -> 3226 bytes src/lib/keyboards2/App.svelte | 993 + src/lib/keyboards2/index.html | 26 + src/lib/keyboards2/picker.css | 115 + src/lib/mappings/glossing-languages-list.json | 941 + src/lib/mappings/glossing-languages.ts | 944 + src/lib/mappings/parts-of-speech.ts | 98 + src/lib/mappings/semantic-domains.ts | 71 + src/lib/note.md | 3 + src/lib/stores/admin.ts | 76 + src/lib/stores/columns.ts | 166 + src/lib/stores/dictionaries.ts | 53 + src/lib/stores/dictionary.ts | 12 + src/lib/stores/editing.ts | 39 + src/lib/stores/index.ts | 20 + src/lib/stores/search.ts | 2 + src/lib/stores/speakers.BAK | 3 + src/lib/webvitals.ts | 90 + src/locales/am.json | 225 + src/locales/ar.json | 225 + src/locales/as.json | 1 + src/locales/bn.json | 225 + src/locales/en.json | 225 + src/locales/es.json | 225 + src/locales/fr.json | 225 + src/locales/gl/am.json | 291 + src/locales/gl/ar.json | 291 + src/locales/gl/as.json | 3 + src/locales/gl/bn.json | 291 + src/locales/gl/en.json | 291 + src/locales/gl/es.json | 291 + src/locales/gl/fr.json | 291 + src/locales/gl/ha.json | 291 + src/locales/gl/he.json | 291 + src/locales/gl/hi.json | 291 + src/locales/gl/id.json | 291 + src/locales/gl/ms.json | 291 + src/locales/gl/or.json | 291 + src/locales/gl/pt.json | 291 + src/locales/gl/ru.json | 291 + src/locales/gl/sw.json | 291 + src/locales/gl/zh.json | 291 + src/locales/ha.json | 225 + src/locales/he.json | 225 + src/locales/hi.json | 225 + src/locales/id.json | 225 + src/locales/ms.json | 223 + src/locales/or.json | 225 + src/locales/ps/am.json | 91 + src/locales/ps/ar.json | 91 + src/locales/ps/as.json | 3 + src/locales/ps/bn.json | 91 + src/locales/ps/en.json | 91 + src/locales/ps/es.json | 91 + src/locales/ps/fr.json | 91 + src/locales/ps/ha.json | 91 + src/locales/ps/he.json | 91 + src/locales/ps/hi.json | 91 + src/locales/ps/id.json | 91 + src/locales/ps/ms.json | 86 + src/locales/ps/or.json | 91 + src/locales/ps/pt.json | 91 + src/locales/ps/ru.json | 91 + src/locales/ps/sw.json | 91 + src/locales/ps/zh.json | 91 + src/locales/psAbbrev/am.json | 3 + src/locales/psAbbrev/ar.json | 29 + src/locales/psAbbrev/as.json | 3 + src/locales/psAbbrev/bn.json | 86 + src/locales/psAbbrev/en.json | 91 + src/locales/psAbbrev/es.json | 86 + src/locales/psAbbrev/fr.json | 86 + src/locales/psAbbrev/ha.json | 3 + src/locales/psAbbrev/he.json | 10 + src/locales/psAbbrev/hi.json | 3 + src/locales/psAbbrev/id.json | 3 + src/locales/psAbbrev/ms.json | 3 + src/locales/psAbbrev/or.json | 3 + src/locales/psAbbrev/pt.json | 3 + src/locales/psAbbrev/ru.json | 3 + src/locales/psAbbrev/sw.json | 86 + src/locales/psAbbrev/zh.json | 3 + src/locales/pt.json | 225 + src/locales/ru.json | 225 + src/locales/sd/am.json | 72 + src/locales/sd/ar.json | 72 + src/locales/sd/as.json | 3 + src/locales/sd/bn.json | 72 + src/locales/sd/en.json | 72 + src/locales/sd/es.json | 72 + src/locales/sd/fr.json | 72 + src/locales/sd/ha.json | 72 + src/locales/sd/he.json | 72 + src/locales/sd/hi.json | 72 + src/locales/sd/id.json | 72 + src/locales/sd/ms.json | 72 + src/locales/sd/or.json | 72 + src/locales/sd/pt.json | 72 + src/locales/sd/ru.json | 72 + src/locales/sd/sw.json | 72 + src/locales/sd/zh.json | 72 + src/locales/sw.json | 225 + src/locales/zh.json | 225 + src/routes/[dictionaryId]/_SideMenu.svelte | 99 + src/routes/[dictionaryId]/__layout.svelte | 126 + src/routes/[dictionaryId]/about.svelte | 88 + src/routes/[dictionaryId]/contributors.svelte | 310 + .../entries/[redirectId].svelte | 6 + .../[dictionaryId]/entries/_AddImage.svelte | 69 + .../[dictionaryId]/entries/_Audio.svelte | 93 + .../entries/_EntriesGallery.svelte | 71 + .../entries/_EntryFilters.svelte | 177 + .../[dictionaryId]/entries/__layout.svelte | 76 + .../[dictionaryId]/entries/_gallery2.svelte | 126 + .../[dictionaryId]/entries/gallery.svelte | 47 + src/routes/[dictionaryId]/entries/list.svelte | 124 + .../[dictionaryId]/entries/table.svelte | 24 + .../[dictionaryId]/entry/[entryId].svelte | 314 + .../[dictionaryId]/entry/_EntryField.svelte | 44 + .../entry/_EntryPartOfSpeech.svelte | 26 + .../entry/_EntrySemanticDomains.svelte | 54 + src/routes/[dictionaryId]/entry/new.svelte | 81 + src/routes/[dictionaryId]/grammar.svelte | 88 + src/routes/[dictionaryId]/index.svelte | 49 + .../[dictionaryId]/invite/[inviteId].svelte | 141 + src/routes/[dictionaryId]/settings.svelte | 109 + src/routes/__error.svelte | 72 + src/routes/__layout.svelte | 63 + src/routes/about.svelte | 229 + src/routes/account.svelte | 39 + src/routes/admin/_DictionaryFieldEdit.svelte | 37 + src/routes/admin/_Filter.svelte | 31 + .../admin/_SelectDictionaryModal.svelte | 64 + src/routes/admin/_SortUsers.svelte | 86 + src/routes/admin/_Tab.svelte | 24 + src/routes/admin/_UserRow.svelte | 73 + src/routes/admin/__layout.svelte | 32 + src/routes/admin/dictionaries.svelte | 123 + src/routes/admin/index.svelte | 1 + src/routes/admin/users.svelte | 33 + src/routes/create-dictionary.svelte | 370 + src/routes/dictionaries.svelte | 121 + src/routes/index.svelte | 81 + src/routes/setlocale/[bcp].svelte | 24 + src/routes/terms.svelte | 817 + src/service-worker.ts | 83 + src/sveltefire/Collection.svelte | 72 + src/sveltefire/Doc.svelte | 66 + src/sveltefire/FirebaseUiAuth.svelte | 130 + src/sveltefire/REST.ts | 36 + src/sveltefire/RESTParser.ts | 40 + src/sveltefire/auth.ts | 35 + src/sveltefire/config.ts | 28 + src/sveltefire/firebaseui.d.ts | 214 + src/sveltefire/firestore.ts | 117 + src/sveltefire/index.ts | 56 + src/sveltefire/loader.ts | 45 + src/sveltefire/perf.ts | 17 + src/sveltefire/stores.ts | 228 + src/sveltefire/user.ts | 89 + src/svelteui/actions/clickOutside.ts | 15 + src/svelteui/actions/longpress.ts | 39 + src/svelteui/actions/portal.ts | 15 + src/svelteui/data/JSON.svelte | 55 + src/svelteui/functions/DetectUrl.svelte | 23 + src/svelteui/functions/ShowHide.svelte | 11 + src/svelteui/shell/Avatar.svelte | 28 + src/svelteui/shell/Menu.svelte | 25 + src/svelteui/ui/Badge.svelte | 103 + src/svelteui/ui/Button.svelte | 158 + static/fonts/Sompeng-Code200365k.ttf | Bin 0 -> 23943188 bytes static/icons/apple-touch-icon.png | Bin 0 -> 10509 bytes static/icons/favicon-32x32.png | Bin 0 -> 1580 bytes static/icons/favicon-32x32_adjusted.png | Bin 0 -> 1832 bytes static/icons/favicon-32x32_zoomed.png | Bin 0 -> 1961 bytes .../icons/iOS_splashscreens/ipad_splash.png | Bin 0 -> 76050 bytes .../iOS_splashscreens/ipadpro1_splash.png | Bin 0 -> 86449 bytes .../iOS_splashscreens/ipadpro2_splash.png | Bin 0 -> 121359 bytes .../iOS_splashscreens/ipadpro3_splash.png | Bin 0 -> 91612 bytes .../iOS_splashscreens/iphone5_splash.png | Bin 0 -> 30043 bytes .../iOS_splashscreens/iphone6_splash.png | Bin 0 -> 35844 bytes .../iOS_splashscreens/iphoneplus_splash.png | Bin 0 -> 68810 bytes .../iOS_splashscreens/iphonex_splash.png | Bin 0 -> 68069 bytes .../iOS_splashscreens/iphonexr_splash.png | Bin 0 -> 45106 bytes .../iOS_splashscreens/iphonexsmax_splash.png | Bin 0 -> 80981 bytes static/icons/ld_icon_144.png | Bin 0 -> 10450 bytes static/icons/ld_icon_192.png | Bin 0 -> 14274 bytes static/icons/ld_icon_48.png | Bin 0 -> 2286 bytes static/icons/ld_icon_512.png | Bin 0 -> 54627 bytes static/icons/ld_icon_72.png | Bin 0 -> 4274 bytes static/icons/ld_icon_96.png | Bin 0 -> 5557 bytes static/icons/safari-pinned-tab.svg | 1 + static/images/LD_logo_white.svg | 1 + .../search-by-algolia-light-background.svg | 1 + static/manifest.json | 36 + static/robots.txt | 4 + svelte.config.js | 34 + svench.config.js | 17 + tailwind.config.cjs | 56 + tests/jest.svelte.cjs | 40 + tests/jest.svelte.setup.ts | 1 + tests/jest.ts.cjs | 23 + tsconfig.json | 33 + 443 files changed, 102330 insertions(+) create mode 100644 .env create mode 100644 .eslintrc.cjs create mode 100644 .firebaserc create mode 100644 .github/CODEOWNERS create mode 100644 .github/lighthouse-budget.json create mode 100644 .github/lighthouserc.json create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/audit-main-on-deploy.yml create mode 100644 .github/workflows/test-and-audit-pull-request.yml create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/CONTRIBUTING.md create mode 100644 docs/Copy-prod-data-to-dev.md create mode 100644 docs/JSON-to-Firestore-Importer.md create mode 100644 docs/data/Sub-Entries.md create mode 100644 docs/env.md create mode 100644 docs/functions-emulator.md create mode 100644 docs/functions-unit-tests.md create mode 100644 docs/i18n.md create mode 100644 docs/import-dictionary.md create mode 100644 docs/setup-tips-for-beginner-devs.md create mode 100644 docs/tips.md create mode 100644 docs/walkthrough.md create mode 100644 docs/woolaroo-notes.md create mode 100644 docs/z-index.md create mode 100644 e2e/.gitignore create mode 100644 e2e/E2E.md create mode 100644 e2e/jest.config.js create mode 100644 e2e/jest.individual-test.config.js create mode 100644 e2e/package-lock.json create mode 100644 e2e/package.json create mode 100644 e2e/tests/checkly-examples.cjs create mode 100644 e2e/tests/essentials.cjs create mode 100644 e2e/tests/example.test.ts create mode 100644 e2e/tests/globalTypes.ts create mode 100644 e2e/tests/homepage.test.ts create mode 100644 e2e/tests/login.test.ts create mode 100644 e2e/tsconfig.json create mode 100644 firebase.json create mode 100644 functions/.gitignore create mode 100644 functions/jest.config.js create mode 100644 functions/package-lock.json create mode 100644 functions/package.json create mode 100644 functions/scripts/algolia/.gitignore create mode 100644 functions/scripts/algolia/addDictionariesToIndex.ts create mode 100644 functions/scripts/algolia/config.ts create mode 100644 functions/scripts/algolia/copyAlgoliaIndexRecords.ts create mode 100644 functions/scripts/algolia/copyAlgoliaIndexSettings.ts create mode 100644 functions/scripts/config.ts create mode 100644 functions/scripts/import/FLEx/FLEx-CategoryCatalogTemplate.xml create mode 100644 functions/scripts/import/FLEx/FLEx-SFM-convert.md create mode 100644 functions/scripts/import/FLEx/abbreviate-pos.ts create mode 100644 functions/scripts/import/FLEx/convert-flex.test.ts create mode 100644 functions/scripts/import/FLEx/convert-flex.ts create mode 100644 functions/scripts/import/FLEx/convert.ts create mode 100644 functions/scripts/import/FLEx/semanticDomains.ts create mode 100644 functions/scripts/import/import-spreadsheet-v4.test.ts create mode 100644 functions/scripts/import/import-spreadsheet-v4.ts create mode 100644 functions/scripts/import/import.ts create mode 100644 functions/scripts/import/old/filterArray.ts create mode 100644 functions/scripts/import/old/gatherPOS.ts create mode 100644 functions/scripts/import/old/import-old-talking-dictionary-to-firebase.ts create mode 100644 functions/scripts/import/old/import-spreadsheet-to-firebase.ts create mode 100644 functions/scripts/import/old/import-spreadsheet.ts create mode 100644 functions/scripts/import/old/importToFirestore.ts create mode 100644 functions/scripts/import/old/tdv1-import/find-languages.ts create mode 100644 functions/scripts/import/old/tdv1-import/import-old-td.ts create mode 100644 functions/scripts/move-firestore-document.ts create mode 100644 functions/scripts/refactor/entry-refactor.ts create mode 100644 functions/scripts/refactor/tdv1-dictionaries.ts create mode 100644 functions/scripts/refactor/upload-old-dictionaries.ts create mode 100644 functions/src/aggregation/decreaseEntryCount.ts create mode 100644 functions/src/aggregation/increaseEntryCount.ts create mode 100644 functions/src/algolia/modifyIndex.ts create mode 100644 functions/src/algolia/prepareDataForIndex.ts create mode 100644 functions/src/auth.ts create mode 100644 functions/src/config.ts create mode 100644 functions/src/deletion/deleteMediaOnDictionaryDelete.ts create mode 100644 functions/src/deletion/recursiveDelete.ts create mode 100644 functions/src/email/adminRecipients.ts create mode 100644 functions/src/email/inviteContributor.ts create mode 100644 functions/src/email/onNewDictionary.ts create mode 100644 functions/src/email/onNewUser.ts create mode 100644 functions/src/email/supportEmail.ts create mode 100644 functions/src/export/interfaceExplanations.ts create mode 100644 functions/src/export/semanticDomainOfDictionary.emulator.test.ts create mode 100644 functions/src/export/semanticDomainOfDictionary.ts create mode 100644 functions/src/export/simple.test.ts create mode 100644 functions/src/helpers.ts create mode 100644 functions/src/history.ts create mode 100644 functions/src/import/helpers/abbreviate-td-pos.ts create mode 100644 functions/src/import/helpers/clean-up-data.ts create mode 100644 functions/src/import/helpers/delete-duplicate-entries.ts create mode 100644 functions/src/import/helpers/find-unmatched-pos.ts create mode 100644 functions/src/import/helpers/getImageServingUrl.ts create mode 100644 functions/src/import/helpers/unzip.ts create mode 100644 functions/src/import/import_features.ts create mode 100644 functions/src/import/importing.ts create mode 100644 functions/src/import/importing2.ts create mode 100644 functions/src/import/mock-dictionary.ts create mode 100644 functions/src/import/td-converters.ts create mode 100644 functions/src/index.ts create mode 100644 functions/src/updateDevAdminRole.ts create mode 100644 functions/tests/explore/env.test.ts create mode 100644 functions/tests/import/importing.test.ts create mode 100644 functions/tests/import/mocks.ts create mode 100644 functions/tests/import/td-converters.test.ts create mode 100644 functions/tests/main.test.ts create mode 100644 functions/tests/test-config.ts create mode 100644 functions/tsconfig.json create mode 100644 jest.config.cjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.cjs create mode 100644 scripts/App-Translations.csv create mode 100644 scripts/Glossing-Languages.csv create mode 100644 scripts/Parts-of-Speech.csv create mode 100644 scripts/Semantic-Domains.csv create mode 100644 scripts/jest.scripts.cjs create mode 100644 scripts/update-locales.test.ts create mode 100644 scripts/update-locales.ts create mode 100644 src/.svench.js create mode 100644 src/app.html create mode 100644 src/docs.svench/note.md create mode 100644 src/global.css create mode 100644 src/global.d.ts create mode 100644 src/hooks.ts create mode 100644 src/index.svench create mode 100644 src/lib/components/audio/AddSpeaker.svelte create mode 100644 src/lib/components/audio/EditAudio.svelte create mode 100644 src/lib/components/audio/RecordAudio.svelte create mode 100644 src/lib/components/audio/SelectAudio.svelte create mode 100644 src/lib/components/audio/UploadAudio.svelte create mode 100644 src/lib/components/audio/Waveform.svelte create mode 100644 src/lib/components/editing/BadgeArray.svelte create mode 100644 src/lib/components/editor/CKEditor.svelte create mode 100644 src/lib/components/editor/ClassicCustomized.svelte create mode 100644 src/lib/components/home/Dictionaries.svelte create mode 100644 src/lib/components/home/Mapbox.svelte create mode 100644 src/lib/components/home/Marker.svelte create mode 100644 src/lib/components/home/Search.svelte create mode 100644 src/lib/components/home/SelectedDict.svelte create mode 100644 src/lib/components/home/key.ts create mode 100644 src/lib/components/home/map.class.ts create mode 100644 src/lib/components/image/Image.svelte create mode 100644 src/lib/components/image/UploadImage.svelte create mode 100644 src/lib/components/image/processImageUrl.ts create mode 100644 src/lib/components/keyboards/SpecialCharacters.svelte create mode 100644 src/lib/components/modals/Contact.svelte create mode 100644 src/lib/components/modals/Coordinates.svelte create mode 100644 src/lib/components/modals/EditFieldModal.svelte create mode 100644 src/lib/components/modals/SelectLanguage.svelte create mode 100644 src/lib/components/modals/SemanticDomainsModal.svelte create mode 100644 src/lib/components/search/ClearRefinements.svelte create mode 100644 src/lib/components/search/Hits.svelte create mode 100644 src/lib/components/search/InfiniteHits.svelte create mode 100644 src/lib/components/search/InstantSearch.svelte create mode 100644 src/lib/components/search/Pagination.svelte create mode 100644 src/lib/components/search/RefinementList.svelte create mode 100644 src/lib/components/search/SearchBox.svelte create mode 100644 src/lib/components/search/SortBy.svelte create mode 100644 src/lib/components/search/Stats.svelte create mode 100644 src/lib/components/search/ToggleRefinement.svelte create mode 100644 src/lib/components/shell/Header.svelte create mode 100644 src/lib/components/shell/LogRocket.svelte create mode 100644 src/lib/components/shell/NProgress.svelte create mode 100644 src/lib/components/shell/User.svelte create mode 100644 src/lib/components/shell/nprogress.css create mode 100644 src/lib/components/table/Cell.svelte create mode 100644 src/lib/components/table/ColumnAdjustSlideover.svelte create mode 100644 src/lib/components/table/ColumnTitle.svelte create mode 100644 src/lib/components/table/EntriesTable.svelte create mode 100644 src/lib/components/table/cells/AudioCell.svelte create mode 100644 src/lib/components/table/cells/CheckboxCell.svelte create mode 100644 src/lib/components/table/cells/PhotoCell.svelte create mode 100644 src/lib/components/table/cells/SelectPOS.svelte create mode 100644 src/lib/components/table/cells/SelectSpeakerCell.svelte create mode 100644 src/lib/components/table/cells/SemanticDomains.svelte create mode 100644 src/lib/components/table/cells/Textbox.svelte create mode 100644 src/lib/components/ui/ActionSheet.svelte create mode 100644 src/lib/components/ui/AdminGuard.svelte create mode 100644 src/lib/components/ui/Autocomplete.svelte create mode 100644 src/lib/components/ui/IntersectionObserver.svelte create mode 100644 src/lib/components/ui/Modal.svelte create mode 100644 src/lib/components/ui/MultiSelect.svelte create mode 100644 src/lib/components/ui/ResponsiveTable.svelte create mode 100644 src/lib/components/ui/SideSheet.svelte create mode 100644 src/lib/components/ui/Slideover.svelte create mode 100644 src/lib/components/ui/Textarea.svelte create mode 100644 src/lib/components/ui/Toasts.svelte create mode 100644 src/lib/components/ui/View.svelte create mode 100644 src/lib/components/ui/VirtualList.svelte create mode 100644 src/lib/dynamic.svench create mode 100644 src/lib/graveyard/Leaflet.svelte create mode 100644 src/lib/graveyard/filterEntries.ts create mode 100644 src/lib/helpers/cookies.ts create mode 100644 src/lib/helpers/delete.ts create mode 100644 src/lib/helpers/dictionariesManaging.ts create mode 100644 src/lib/helpers/downloadCSV.ts create mode 100644 src/lib/helpers/fetchDictionaries.ts create mode 100644 src/lib/helpers/share.ts create mode 100644 src/lib/helpers/time.ts create mode 100644 src/lib/helpers/vernacularName.test.ts create mode 100644 src/lib/helpers/vernacularName.ts create mode 100644 src/lib/i18n.ts create mode 100644 src/lib/interfaces/audio.interface.ts create mode 100644 src/lib/interfaces/column.interface.ts create mode 100644 src/lib/interfaces/contributor.interface.ts create mode 100644 src/lib/interfaces/dialect.interface.ts create mode 100644 src/lib/interfaces/dictionary-settings.interface.ts create mode 100644 src/lib/interfaces/dictionary.interface.ts create mode 100644 src/lib/interfaces/entry.algolia.md create mode 100644 src/lib/interfaces/entry.interface.ts create mode 100644 src/lib/interfaces/entry.md create mode 100644 src/lib/interfaces/exampe-sentence.interface.ts create mode 100644 src/lib/interfaces/firestore-metadata.interface.ts create mode 100644 src/lib/interfaces/gloss-language.interface.ts create mode 100644 src/lib/interfaces/gloss.interface.ts create mode 100644 src/lib/interfaces/import.interface.ts create mode 100644 src/lib/interfaces/index.ts create mode 100644 src/lib/interfaces/invite.interface.ts create mode 100644 src/lib/interfaces/languages.interface.ts create mode 100644 src/lib/interfaces/manager.interface.ts create mode 100644 src/lib/interfaces/part-of-speech.interface.ts create mode 100644 src/lib/interfaces/photo.interface.ts create mode 100644 src/lib/interfaces/semantic-domain.interface.ts create mode 100644 src/lib/interfaces/speaker.interface.ts create mode 100644 src/lib/interfaces/user.interface.ts create mode 100644 src/lib/interfaces/write-in-collaborator.interface.ts create mode 100644 src/lib/keyboards/App.svelte create mode 100644 src/lib/keyboards/CharisSIL-R.woff create mode 100644 src/lib/keyboards/Keyman.svelte create mode 100644 src/lib/keyboards/index.html create mode 100644 src/lib/keyboards/keyboards.json create mode 100644 src/lib/keyboards/keyman.css create mode 100644 src/lib/keyboards/vowel_trapezoid.gif create mode 100644 src/lib/keyboards2/App.svelte create mode 100644 src/lib/keyboards2/index.html create mode 100644 src/lib/keyboards2/picker.css create mode 100644 src/lib/mappings/glossing-languages-list.json create mode 100644 src/lib/mappings/glossing-languages.ts create mode 100644 src/lib/mappings/parts-of-speech.ts create mode 100644 src/lib/mappings/semantic-domains.ts create mode 100644 src/lib/note.md create mode 100644 src/lib/stores/admin.ts create mode 100644 src/lib/stores/columns.ts create mode 100644 src/lib/stores/dictionaries.ts create mode 100644 src/lib/stores/dictionary.ts create mode 100644 src/lib/stores/editing.ts create mode 100644 src/lib/stores/index.ts create mode 100644 src/lib/stores/search.ts create mode 100644 src/lib/stores/speakers.BAK create mode 100644 src/lib/webvitals.ts create mode 100644 src/locales/am.json create mode 100644 src/locales/ar.json create mode 100644 src/locales/as.json create mode 100644 src/locales/bn.json create mode 100644 src/locales/en.json create mode 100644 src/locales/es.json create mode 100644 src/locales/fr.json create mode 100644 src/locales/gl/am.json create mode 100644 src/locales/gl/ar.json create mode 100644 src/locales/gl/as.json create mode 100644 src/locales/gl/bn.json create mode 100644 src/locales/gl/en.json create mode 100644 src/locales/gl/es.json create mode 100644 src/locales/gl/fr.json create mode 100644 src/locales/gl/ha.json create mode 100644 src/locales/gl/he.json create mode 100644 src/locales/gl/hi.json create mode 100644 src/locales/gl/id.json create mode 100644 src/locales/gl/ms.json create mode 100644 src/locales/gl/or.json create mode 100644 src/locales/gl/pt.json create mode 100644 src/locales/gl/ru.json create mode 100644 src/locales/gl/sw.json create mode 100644 src/locales/gl/zh.json create mode 100644 src/locales/ha.json create mode 100644 src/locales/he.json create mode 100644 src/locales/hi.json create mode 100644 src/locales/id.json create mode 100644 src/locales/ms.json create mode 100644 src/locales/or.json create mode 100644 src/locales/ps/am.json create mode 100644 src/locales/ps/ar.json create mode 100644 src/locales/ps/as.json create mode 100644 src/locales/ps/bn.json create mode 100644 src/locales/ps/en.json create mode 100644 src/locales/ps/es.json create mode 100644 src/locales/ps/fr.json create mode 100644 src/locales/ps/ha.json create mode 100644 src/locales/ps/he.json create mode 100644 src/locales/ps/hi.json create mode 100644 src/locales/ps/id.json create mode 100644 src/locales/ps/ms.json create mode 100644 src/locales/ps/or.json create mode 100644 src/locales/ps/pt.json create mode 100644 src/locales/ps/ru.json create mode 100644 src/locales/ps/sw.json create mode 100644 src/locales/ps/zh.json create mode 100644 src/locales/psAbbrev/am.json create mode 100644 src/locales/psAbbrev/ar.json create mode 100644 src/locales/psAbbrev/as.json create mode 100644 src/locales/psAbbrev/bn.json create mode 100644 src/locales/psAbbrev/en.json create mode 100644 src/locales/psAbbrev/es.json create mode 100644 src/locales/psAbbrev/fr.json create mode 100644 src/locales/psAbbrev/ha.json create mode 100644 src/locales/psAbbrev/he.json create mode 100644 src/locales/psAbbrev/hi.json create mode 100644 src/locales/psAbbrev/id.json create mode 100644 src/locales/psAbbrev/ms.json create mode 100644 src/locales/psAbbrev/or.json create mode 100644 src/locales/psAbbrev/pt.json create mode 100644 src/locales/psAbbrev/ru.json create mode 100644 src/locales/psAbbrev/sw.json create mode 100644 src/locales/psAbbrev/zh.json create mode 100644 src/locales/pt.json create mode 100644 src/locales/ru.json create mode 100644 src/locales/sd/am.json create mode 100644 src/locales/sd/ar.json create mode 100644 src/locales/sd/as.json create mode 100644 src/locales/sd/bn.json create mode 100644 src/locales/sd/en.json create mode 100644 src/locales/sd/es.json create mode 100644 src/locales/sd/fr.json create mode 100644 src/locales/sd/ha.json create mode 100644 src/locales/sd/he.json create mode 100644 src/locales/sd/hi.json create mode 100644 src/locales/sd/id.json create mode 100644 src/locales/sd/ms.json create mode 100644 src/locales/sd/or.json create mode 100644 src/locales/sd/pt.json create mode 100644 src/locales/sd/ru.json create mode 100644 src/locales/sd/sw.json create mode 100644 src/locales/sd/zh.json create mode 100644 src/locales/sw.json create mode 100644 src/locales/zh.json create mode 100644 src/routes/[dictionaryId]/_SideMenu.svelte create mode 100644 src/routes/[dictionaryId]/__layout.svelte create mode 100644 src/routes/[dictionaryId]/about.svelte create mode 100644 src/routes/[dictionaryId]/contributors.svelte create mode 100644 src/routes/[dictionaryId]/entries/[redirectId].svelte create mode 100644 src/routes/[dictionaryId]/entries/_AddImage.svelte create mode 100644 src/routes/[dictionaryId]/entries/_Audio.svelte create mode 100644 src/routes/[dictionaryId]/entries/_EntriesGallery.svelte create mode 100644 src/routes/[dictionaryId]/entries/_EntryFilters.svelte create mode 100644 src/routes/[dictionaryId]/entries/__layout.svelte create mode 100644 src/routes/[dictionaryId]/entries/_gallery2.svelte create mode 100644 src/routes/[dictionaryId]/entries/gallery.svelte create mode 100644 src/routes/[dictionaryId]/entries/list.svelte create mode 100644 src/routes/[dictionaryId]/entries/table.svelte create mode 100644 src/routes/[dictionaryId]/entry/[entryId].svelte create mode 100644 src/routes/[dictionaryId]/entry/_EntryField.svelte create mode 100644 src/routes/[dictionaryId]/entry/_EntryPartOfSpeech.svelte create mode 100644 src/routes/[dictionaryId]/entry/_EntrySemanticDomains.svelte create mode 100644 src/routes/[dictionaryId]/entry/new.svelte create mode 100644 src/routes/[dictionaryId]/grammar.svelte create mode 100644 src/routes/[dictionaryId]/index.svelte create mode 100644 src/routes/[dictionaryId]/invite/[inviteId].svelte create mode 100644 src/routes/[dictionaryId]/settings.svelte create mode 100644 src/routes/__error.svelte create mode 100644 src/routes/__layout.svelte create mode 100644 src/routes/about.svelte create mode 100644 src/routes/account.svelte create mode 100644 src/routes/admin/_DictionaryFieldEdit.svelte create mode 100644 src/routes/admin/_Filter.svelte create mode 100644 src/routes/admin/_SelectDictionaryModal.svelte create mode 100644 src/routes/admin/_SortUsers.svelte create mode 100644 src/routes/admin/_Tab.svelte create mode 100644 src/routes/admin/_UserRow.svelte create mode 100644 src/routes/admin/__layout.svelte create mode 100644 src/routes/admin/dictionaries.svelte create mode 100644 src/routes/admin/index.svelte create mode 100644 src/routes/admin/users.svelte create mode 100644 src/routes/create-dictionary.svelte create mode 100644 src/routes/dictionaries.svelte create mode 100644 src/routes/index.svelte create mode 100644 src/routes/setlocale/[bcp].svelte create mode 100644 src/routes/terms.svelte create mode 100644 src/service-worker.ts create mode 100644 src/sveltefire/Collection.svelte create mode 100644 src/sveltefire/Doc.svelte create mode 100644 src/sveltefire/FirebaseUiAuth.svelte create mode 100644 src/sveltefire/REST.ts create mode 100644 src/sveltefire/RESTParser.ts create mode 100644 src/sveltefire/auth.ts create mode 100644 src/sveltefire/config.ts create mode 100644 src/sveltefire/firebaseui.d.ts create mode 100644 src/sveltefire/firestore.ts create mode 100644 src/sveltefire/index.ts create mode 100644 src/sveltefire/loader.ts create mode 100644 src/sveltefire/perf.ts create mode 100644 src/sveltefire/stores.ts create mode 100644 src/sveltefire/user.ts create mode 100644 src/svelteui/actions/clickOutside.ts create mode 100644 src/svelteui/actions/longpress.ts create mode 100644 src/svelteui/actions/portal.ts create mode 100644 src/svelteui/data/JSON.svelte create mode 100644 src/svelteui/functions/DetectUrl.svelte create mode 100644 src/svelteui/functions/ShowHide.svelte create mode 100644 src/svelteui/shell/Avatar.svelte create mode 100644 src/svelteui/shell/Menu.svelte create mode 100644 src/svelteui/ui/Badge.svelte create mode 100644 src/svelteui/ui/Button.svelte create mode 100644 static/fonts/Sompeng-Code200365k.ttf create mode 100644 static/icons/apple-touch-icon.png create mode 100644 static/icons/favicon-32x32.png create mode 100644 static/icons/favicon-32x32_adjusted.png create mode 100644 static/icons/favicon-32x32_zoomed.png create mode 100644 static/icons/iOS_splashscreens/ipad_splash.png create mode 100644 static/icons/iOS_splashscreens/ipadpro1_splash.png create mode 100644 static/icons/iOS_splashscreens/ipadpro2_splash.png create mode 100644 static/icons/iOS_splashscreens/ipadpro3_splash.png create mode 100644 static/icons/iOS_splashscreens/iphone5_splash.png create mode 100644 static/icons/iOS_splashscreens/iphone6_splash.png create mode 100644 static/icons/iOS_splashscreens/iphoneplus_splash.png create mode 100644 static/icons/iOS_splashscreens/iphonex_splash.png create mode 100644 static/icons/iOS_splashscreens/iphonexr_splash.png create mode 100644 static/icons/iOS_splashscreens/iphonexsmax_splash.png create mode 100644 static/icons/ld_icon_144.png create mode 100644 static/icons/ld_icon_192.png create mode 100644 static/icons/ld_icon_48.png create mode 100644 static/icons/ld_icon_512.png create mode 100644 static/icons/ld_icon_72.png create mode 100644 static/icons/ld_icon_96.png create mode 100644 static/icons/safari-pinned-tab.svg create mode 100644 static/images/LD_logo_white.svg create mode 100644 static/images/search-by-algolia-light-background.svg create mode 100644 static/manifest.json create mode 100644 static/robots.txt create mode 100644 svelte.config.js create mode 100644 svench.config.js create mode 100644 tailwind.config.cjs create mode 100644 tests/jest.svelte.cjs create mode 100644 tests/jest.svelte.setup.ts create mode 100644 tests/jest.ts.cjs create mode 100644 tsconfig.json diff --git a/.env b/.env new file mode 100644 index 000000000..b06ca959e --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +# URL Restricted +VITE_mapboxAccessToken=pk.eyJ1IjoidGFsa2luZ2RpY3Rpb25hcmllcyIsImEiOiJja3BkYW84NjcwYXA2Mm90NjEzemdrZmxjIn0.W9YL4gEpnfIvHhZ_XaFa1g \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 000000000..299496793 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,32 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], + plugins: ['svelte3', '@typescript-eslint'], + ignorePatterns: ['*.cjs', 'functions/lib/**/*', 'functions/scripts/import/old/**/*'], + overrides: [{ files: ['*.svelte', '*.svench'], processor: 'svelte3/svelte3' }], + settings: { + 'svelte3/typescript': () => require('typescript'), + // ignore style tags in Svelte because of Tailwind CSS + // See https://github.com/sveltejs/eslint-plugin-svelte3/issues/70 + 'svelte3/ignore-styles': () => true + }, + parserOptions: { + sourceType: 'module', + ecmaVersion: 2019 + }, + rules: { + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + 'no-undef': 'off', + }, + env: { + browser: true, + es2017: true, + node: true + } +}; diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 000000000..eb80fd5ff --- /dev/null +++ b/.firebaserc @@ -0,0 +1,6 @@ +{ + "projects": { + "default": "talking-dictionaries-dev", + "production": "talking-dictionaries-alpha" + } +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..27299ffab --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,4 @@ +# This is a comment. +# See https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners + +* @jacobbowdoin @Danble \ No newline at end of file diff --git a/.github/lighthouse-budget.json b/.github/lighthouse-budget.json new file mode 100644 index 000000000..61fda1001 --- /dev/null +++ b/.github/lighthouse-budget.json @@ -0,0 +1,31 @@ +[ + { + "path": "/*", + "timings": [ + { + "metric": "interactive", + "budget": 2000 + }, + { + "metric": "first-contentful-paint", + "budget": 2000 + } + ], + "resourceSizes": [ + { + "resourceType": "script", + "budget": 125 + }, + { + "resourceType": "total", + "budget": 200 + } + ], + "resourceCounts": [ + { + "resourceType": "third-party", + "budget": 10 + } + ] + } +] diff --git a/.github/lighthouserc.json b/.github/lighthouserc.json new file mode 100644 index 000000000..0dafcc4dd --- /dev/null +++ b/.github/lighthouserc.json @@ -0,0 +1,12 @@ +{ + "ci": { + "assert": { + "assertions": { + "color-contrast": "off", + "crawlable-anchors": "off", + "unused-css-rules": "off", + "uses-rel-preconnect": "off" + } + } + } +} diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..a8d802ddb --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,7 @@ +#### Relevant Issue + +#### Summarize what changed in this PR (for developers) + +#### Summarize changes in this PR (for public-facing changelog) + +#### What routes/components should be reviewed? Please provide applicable links using the preview deployments and localhost. diff --git a/.github/workflows/audit-main-on-deploy.yml b/.github/workflows/audit-main-on-deploy.yml new file mode 100644 index 000000000..0197896b8 --- /dev/null +++ b/.github/workflows/audit-main-on-deploy.yml @@ -0,0 +1,58 @@ +name: Audit Main on Deploy + +on: deployment_status + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + DEPLOY_URL: https://living-dictionaries.vercel.app/ + # Going to be https://livingdictionaries.app/ + +jobs: + build-publish-audit: + name: Build, Publish, Audit + if: ${{ github.event.deployment.environment == 'production' && github.event.deployment_status.state == 'success' }} + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + # - name: Install Dependencies + # run: npm ci + + - name: Lighthouse Audit + uses: treosh/lighthouse-ci-action@v7 # https://github.com/treosh/lighthouse-ci-action + id: lighthouse_audit + with: + urls: | + ${{env.DEPLOY_URL}} + # configPath: './.github/lighthouserc.json' # https://github.com/GoogleChrome/lighthouse-ci/blob/main/docs/getting-started.md https://github.com/GoogleChrome/lighthouse-ci/blob/main/docs/configuration.md#assert + uploadArtifacts: true + temporaryPublicStorage: true + # serverBaseUrl: ${{ secrets.LHCI_SERVER_URL }} + # serverToken: ${{ secrets.LHCI_SERVER_TOKEN }} + + - name: Format Lighthouse Score + if: steps.lighthouse_audit.outputs.links + id: format_lighthouse_score_for_slack + uses: actions/github-script@v3 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const result = ${{ steps.lighthouse_audit.outputs.manifest }}[0].summary + const links = ${{ steps.lighthouse_audit.outputs.links }} + const formatResult = (res) => Math.round((res * 100)) + Object.keys(result).forEach(key => result[key] = formatResult(result[key])) + const score = res => res >= 90 ? '🟢' : res >= 50 ? '🟠' : '🔴' + const comment = `⚡️ ${score(result.performance)} Performance: ${result.performance}, ${score(result.accessibility)} Accessibility: ${result.accessibility}, ${score(result['best-practices'])} Best practices: ${result['best-practices']}, ${score(result.seo)} SEO: ${result.seo}, ${score(result.pwa)} PWA | ${result.pwa} PWA: ${result.pwa}, ${Object.values(links)[0]}` + core.setOutput("comment", comment); + + - name: Slack Lighthouse Notification + uses: adamkdean/simple-slack-notify@master + with: + status: ${{ job.status }} + success_text: 'Lighthouse successfully audited ${env.DEPLOY_URL} (#${env.GITHUB_RUN_NUMBER})' + failure_text: 'Lighthouse failed (#${env.GITHUB_RUN_NUMBER})' + fields: | + [{ "title": "Action URL", "value": "${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}"}, + { "title": "Lighthouse scores", "value": "${{ steps.format_lighthouse_score_for_slack.outputs.comment}}"}] diff --git a/.github/workflows/test-and-audit-pull-request.yml b/.github/workflows/test-and-audit-pull-request.yml new file mode 100644 index 000000000..03ed67ef8 --- /dev/null +++ b/.github/workflows/test-and-audit-pull-request.yml @@ -0,0 +1,144 @@ +name: Test & Audit Pull Request + +on: + issue_comment: + types: [edited] + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + +jobs: + build-publish-audit: + name: Build, Publish, Audit + if: ${{ github.event.issue.pull_request }} + runs-on: ubuntu-latest + + steps: + - name: Add running comment to PR + uses: marocchino/sticky-pull-request-comment@v2 + with: + number: ${{ github.event.issue.number }} + header: lighthouse + message: | + ⚡️ Running Svelte-Check, Jest tests, and Lighthouse audit... + + - uses: actions/checkout@v2 + + - name: Install Dependencies + run: npm ci + + - run: npm run validate + - run: npm run test + + - name: Capture Vercel preview URL + id: vercel_preview_url + uses: aaron-binary/vercel-preview-url-action@v0.0.3 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Lighthouse Audit + uses: treosh/lighthouse-ci-action@v7 # https://github.com/treosh/lighthouse-ci-action + id: lighthouse_audit + with: + urls: | + ${{ steps.vercel_preview_url.outputs.vercel_preview_url }} + # configPath: './.github/lighthouserc.json' # https://github.com/GoogleChrome/lighthouse-ci/blob/main/docs/getting-started.md https://github.com/GoogleChrome/lighthouse-ci/blob/main/docs/configuration.md#assert + uploadArtifacts: true + temporaryPublicStorage: true + # serverBaseUrl: ${{ secrets.LHCI_SERVER_URL }} + # serverToken: ${{ secrets.LHCI_SERVER_TOKEN }} + + - name: Format Lighthouse Score + if: steps.lighthouse_audit.outputs.links + id: format_lighthouse_score_for_slack + uses: actions/github-script@v3 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const result = ${{ steps.lighthouse_audit.outputs.manifest }}[0].summary + const links = ${{ steps.lighthouse_audit.outputs.links }} + const formatResult = (res) => Math.round((res * 100)) + Object.keys(result).forEach(key => result[key] = formatResult(result[key])) + const score = res => res >= 90 ? '🟢' : res >= 50 ? '🟠' : '🔴' + const comment = `⚡️ ${score(result.performance)} Performance: ${result.performance}, ${score(result.accessibility)} Accessibility: ${result.accessibility}, ${score(result['best-practices'])} Best practices: ${result['best-practices']}, ${score(result.seo)} SEO: ${result.seo}, ${score(result.pwa)} PWA | ${result.pwa} PWA: ${result.pwa}, ${Object.values(links)[0]}` + core.setOutput("comment", comment); + + - name: Slack Lighthouse Notification + uses: adamkdean/simple-slack-notify@master + with: + status: ${{ job.status }} + success_text: 'Lighthouse successfully audited ${{ github.event.issue.title }} (#${env.GITHUB_RUN_NUMBER}) at ${{ steps.vercel_preview_url.outputs.vercel_preview_url }}' + failure_text: 'Lighthouse failed ${{ github.event.issue.title }} (#${env.GITHUB_RUN_NUMBER})' + fields: | + [{ "title": "Action URL", "value": "${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}"}, + { "title": "Lighthouse scores", "value": "${{ steps.format_lighthouse_score_for_slack.outputs.comment}}"}] + + - name: Format Lighthouse Score + id: format_lighthouse_score + uses: actions/github-script@v3 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const result = ${{ steps.lighthouse_audit.outputs.manifest }}[0].summary + const links = ${{ steps.lighthouse_audit.outputs.links }} + const formatResult = (res) => Math.round((res * 100)) + Object.keys(result).forEach(key => result[key] = formatResult(result[key])) + const score = res => res >= 90 ? '🟢' : res >= 50 ? '🟠' : '🔴' + const comment = [ + `⚡️ [Lighthouse report](${Object.values(links)[0]}) for the changes in this PR:`, + '| Category | Score |', + '| --- | --- |', + `| ${score(result.performance)} Performance | ${result.performance} |`, + `| ${score(result.accessibility)} Accessibility | ${result.accessibility} |`, + `| ${score(result['best-practices'])} Best practices | ${result['best-practices']} |`, + `| ${score(result.seo)} SEO | ${result.seo} |`, + `| ${score(result.pwa)} PWA | ${result.pwa} |`, + ' ', + `*Lighthouse ran on [${Object.keys(links)[0]}](${Object.keys(links)[0]})*` + ].join('\n') + core.setOutput("comment", comment); + + - name: Update Lighthouse comment with results + uses: marocchino/sticky-pull-request-comment@v2 + with: + number: ${{ github.event.issue.number }} + header: lighthouse + message: | + ${{ steps.format_lighthouse_score.outputs.comment }} + + # e2e: + # runs-on: ubuntu-latest + # needs: build-publish-audit + # defaults: + # run: + # working-directory: e2e + + # steps: + # - uses: actions/checkout@v2 + # - uses: actions/setup-node@v1 + # - uses: microsoft/playwright-github-action@v1 + + # - name: Install Dependencies + # run: npm ci + + # - name: Run tests + # run: npm t + + # - uses: actions/upload-artifact@v2 + # if: ${{ always() }} + # with: + # name: screenshots + # path: e2e/screenshots + + # - name: Slack E2E Results Notification + # if: always() + # uses: adamkdean/simple-slack-notify@master + # with: + # # channel: '#github' + # status: ${{ job.status }} + # success_text: 'E2E Tests for (#${env.GITHUB_RUN_NUMBER}) completed successfully on ${{ steps.vercel_preview_url.outputs.vercel_preview_url }}' + # failure_text: 'E2E Tests for (#${env.GITHUB_RUN_NUMBER}) failed' + # cancelled_text: 'E2E Tests for (#${env.GITHUB_RUN_NUMBER}) cancelled' + # fields: | + # [{ "title": "Action URL", "value": "${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}"}] diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..f732d9471 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/.svelte-kit +*.local +/.svench +.vercel_build_output + +# Firebase +.firebase/ +firebase-debug.log +*.log +firestore.indexes.json +firestore.rules diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..5bf3c6be6 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "printWidth": 100, + "svelteBracketNewLine": false +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..c2e94fdc5 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,33 @@ +{ + "recommendations": [ + // Svelte + "svelte.svelte-vscode", + "fivethree.vscode-svelte-snippets", + // Styles + "csstools.postcss", + "bradlc.vscode-tailwindcss", + // Code quality + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + // Git + "eamodio.gitlens", + "github.vscode-pull-request-github", + "cschleiden.vscode-github-actions", + // i18n + "lokalise.i18n-ally", + // ---- You should definitely install the ones above, the ones below are recommended + // Efficiency + "usernamehw.errorlens", + "wallabyjs.quokka-vscode", + "wallabyjs.wallaby-vscode", + // Jest - Single Test Runner, used for E2E + "firsttris.vscode-jest-runner", + // ---- 2 more of Jacob's Recommendations + // "aaron-bond.better-comments", + // "vscode-icons-team.vscode-icons", + // ----Useful in some cases + // "jsayol.firebase-explorer", or "toba.vsfire", + // "chflick.firecode" // (Firestore rules) + // "janne252.fontawesome-autocomplete", // clashes w/ Tailwindcss extension and doesn't work + ] +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..886734ed2 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "pwa-chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:3041", + "sourceMaps": true, + "webRoot": "${workspaceFolder}/src" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..d87883aa9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,33 @@ +{ + "workbench.colorCustomizations": { + "activityBar.background": "#557c9b", + "activityBar.activeBorder": "#ef7853", + "activityBar.foreground": "#e7e7e7", + "activityBar.inactiveForeground": "#e7e7e799", + "activityBarBadge.background": "#ef7853", + "activityBarBadge.foreground": "#15202b", + "titleBar.activeBackground": "#557c9b", + "titleBar.inactiveBackground": "#557c9b99", + "titleBar.activeForeground": "#e7e7e7", + "titleBar.inactiveForeground": "#e7e7e799" + }, + "debug.allowBreakpointsEverywhere": true, + "debug.javascript.usePreview": false, + "i18n-ally.localesPaths": ["src/locales"], + "i18n-ally.keystyle": "nested", + "i18n-ally.sourceLanguage": "en", + "emmet.includeLanguages": { + "postcss": "css" + }, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "eslint.validate": ["javascript", "svelte"], + "jestrunner.configPath": "e2e/jest.individual-test.config.js", + "files.associations": { + "*.svench": "svelte", + "*.svx": "markdown" + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..72e2cb84c --- /dev/null +++ b/LICENSE @@ -0,0 +1,696 @@ +“Commons Clause” License Condition v1.0 + + +The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition. + + +Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software. + + +For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/ support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Clause License Condition notice. + + +Software: Living Dictionaries +License: GNU General Public License 3.0 https://www.gnu.org/licenses/gpl-3.0.html +Licensor: Living Tongues Institute for Endangered Languages + + +Copyright (C) 2007-2021 Living Tongues Institute for Endangered Languages + + +------------- + + +​​ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + + + + + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + +Living Dictionaries are multilingual online reference tools created by Living Tongues Institute for Endangered Languages with the goal of documenting language materials in endangered and under-resourced languages around the world. + + Copyright (C) 2007-2021 Living Tongues Institute for Endangered Languages + + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +Living Dictionaries Copyright (C) 2021 Living Tongues Institute for Endangered Languages + + + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000000000..cda669f4e --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# [Living Dictionaries](https://livingdictionaries.app/) + +A mobile-first community focused web app built by [Living Tongues Institute for Endangered Languages](https://livingtongues.org/). + +## Tech stack + +[](https://svelte.dev/) +[](https://kit.svelte.dev/) +[](https://tailwindcss.com/) +[](https://firebase.google.com/) +[](https://vercel.com/) +[](https://www.algolia.com/) + +Firebase is used for: + +- Authentication +- Cloud Firestore (database) +- Storage +- Cloud Functions, see [functions-unit-tests](docs/functions-unit-tests.md) and [functions-emulator](docs/functions-emulator.md) to learn how to emulate functions locally + +## Contributing + +Choose an already approved task from the [Development Roadmap](https://github.com/jwrunner/Living-Dictionaries/projects/1) or [create an issue](https://github.com/jwrunner/Living-Dictionaries/issues) to propose a new feature (please await discussion before creating a pull request). Read [CONTRIBUTING.md](docs/CONTRIBUTING.md) to understand how to commit your changes using Git flow and then follow the instructions in _Developing_ to get started. + +Beginning developers, here are some general [development environment setup tips](docs/setup-tips-for-beginner-devs.md). + +Note that you will need to ask for our dev Mapbox and Firebase API keys or bring your own by adding `VITE_mapboxAccessToken=...` and +`VITE_FirebaseDevApiKey=...` to a `.env.local` file on the root level. + +## Developing + +Install dependencies with `npm install` and then run `npm run dev` to automatically open on [localhost:3051](http://localhost:3051). The app will hot reload as you make changes. As an alternative to have a dev environment set up you can use the Gitpod button here to open a ready-built dev environment w/ npm dependencies already installed: + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/jwrunner/Living-Dictionaries) + +\*_Note that on localhost you will not see the live (prod) site's data, but rather the data from the dev database, which allows us to develop and make changes freely without worrying about deleting or corrupting important data._ diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 000000000..0760f41a0 --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1,32 @@ +# Contributing to Living Dictionaries + +## Git methodology + +We follow [Github flow](https://guides.github.com/introduction/flow/). Changes are made on feature branches and then pull requests are submitted to the main branch. Be sure to read through the GitHub flow article as it gives important information on how often to commit. + +### Example workflow using VS Code's GUI for Git + +1. `git clone https://github.com/` - You're now on the `main` branch. +2. Checkout a new branch using the Git Checkout button and give the branch a descriptive name using kebab-case (my-feature-branch for example). +3. Make your code changes. You can see them being tracked in the Source Control tab (`Ctrl+Shift+G` to navigate to it). +4. Once you have a set of changes that go together (i.e. an atomic commit), enter a descriptive message regarding your changes and hit "Ctrl+Enter". You may continue to make changes and commits, or move on to the next step if you are ready to push your changes to the server. \*If you only want to commit specific files, you can individually "Stage" these by clicking the + symbol by each desired file before entering your commit message and pressing "Ctrl+Enter" to commit. +5. Click the Synchronize Changes button (lower left corner) and your changes will be pushed to the server. +6. Open the repository in GitHub to see your changes and create a pull request (PR). Once created, teammates can comment on the code and changes can be merged into the main branch if approved. _Now that you are done working on this feature, you can switch back to the main and start the process all over._ + +### Example workflow using Git Bash + +1. `git clone https://github.com/` - You're now on the `main` branch. +2. `git checkout -b my-feature-branch` (Note the branch is kebab-case). Make the branch name descriptive. +3. Make a few changes. Run `git diff` to see your changes. +4. Once you have a set of changes that go together (i.e. an atomic commit), run `git add .` If you just want to commit a single file, run `git add readme.md` for example. +5. `git commit -m "Enter your message here"`. If you want to add more than a 1 line message, run `git commit`. + A text editor will open, and you can add your commit message there. _You can run `git status` at any point if you want to see what files have been changed and which are committed and ready to be pushed._ +6. `git push origin my-feature-branch` - Push your changes to the server. You'll see a link to create a PR in the command line. Once you create the PR, teammates can comment on code + +### Catch up branch with changes made to the main branch + +Sometimes a feature branch will take awhile to complete. In the meantime the main branch has moved ahead, possibly with some bug fixes or features that you would like incorporated into your feature branch. If this happens, make sure that both your feature branch and main branches on your local machine are up to date from the repo, then: + +- checkout the main branch +- sync w/ Github (Git pull or use the VSCode sync button) +- checkout your feature branch and run `git merge main` to pull in updates from the main branch. diff --git a/docs/Copy-prod-data-to-dev.md b/docs/Copy-prod-data-to-dev.md new file mode 100644 index 000000000..d8407f45c --- /dev/null +++ b/docs/Copy-prod-data-to-dev.md @@ -0,0 +1,3 @@ +# Copy Production Data to Dev Nightly + +On a nightly basis, we transfer all production data to the dev database so don't be surprised when your dev test edits are erased the next day. diff --git a/docs/JSON-to-Firestore-Importer.md b/docs/JSON-to-Firestore-Importer.md new file mode 100644 index 000000000..21bf4e6ad --- /dev/null +++ b/docs/JSON-to-Firestore-Importer.md @@ -0,0 +1,33 @@ +# JSON to Firestore Importer (OUTDATED) + +Built with help from https://angularfirebase.com/lessons/import-csv-json-or-excel-to-firestore/ + +## Initial setup + +1. Run `npm install` +2. Compile Typescript into Javscript (see below) +3. Import needed service account json files into /service-accounts +4. Place JSON data, audio files, and photos into appropriate folders (/d-data, /d-audio, /d-photos) + +### To Compile Typescript files into Javascript after making changes + +Run `tsc` (must have installed Typescript beforehand) +or press `Ctrl+Shift+B` and select `tsc: watch - tsconfig.json` to start the Typescript watcher + +## How to Import data+audio/photos to Firestore + +1. Write proper gloss fields into importToFirestore.ts (\*at least until a cross-dictionary pattern can be established) +2. Run `firestore-import --data --audio --photos --dictionaryId --dictionaryName --environment prod` + The script defaults to dev environment if prod not mentioned as environment is an optional argument. See https://github.com/tj/commander.js/ for help with required and optional arguments. + +As an example using abbreviated argument names, to import Chamococo to the dev site, run `firestore-import -d d-data/chamacoco_export.json -a d-audio -p d-photos -i yRl8SvrwmeyckpCHU1X5 -n Chamococo` + +Or `firestore-import -d d-data/photo_test.json -a d-audio -p d-photos -i kRlFo5AymRG2hYWg4mpY -n Spanish` + +### How to run the script to gather parts of speech + +Run `npm run gather-pos -s `, for example: `gather-pos -s data/chamacoco_export.json` + +`npm run import-old-td dryRun` + +Debug .ts file w/o compiling: https://medium.com/@dupski/debug-typescript-in-vs-code-without-compiling-using-ts-node-9d1f4f9a94a diff --git a/docs/data/Sub-Entries.md b/docs/data/Sub-Entries.md new file mode 100644 index 000000000..5d5fb5d66 --- /dev/null +++ b/docs/data/Sub-Entries.md @@ -0,0 +1,55 @@ +# Sub Entries + +You can be on an entry and create a sub-entry. When someone creates a sub-entry, we first ask them the type of sub entry. The type determines what entry fields they allowed to edit. For example, to edit the audio for a homonym, you must go and edit the parent entry. To edit the image for a dialectal variant, they need to go and edit the parent entry. + +## Types of Sub Entries (type may restrict editing options) + +- conjugations/varying-forms based on tense/case-marking/etc (will let media be edited, but maybe not needed?) +- homonyms (needs separate glossing, semantic domain, image... but doesn't need separate pronunication) +- dialectal variations (needs separate pronunciation, but not separate glossing, semantic domain, image...) + +- example sentences (full-blown entry, needs everything) + +- ? spelling variations (should this just be another entry field and not be a type of sub-entry) + +## Data Model + +Sibling entries with reference markers indicating parent/child relationships + +- Entry A: lx: "dog", type: "head", children: [C] +- Entry B: lx: "park", type: "head", children: [C] +- Entry C: lx: "a dog runs in the park", type: "example sentence", parents: [A, B] + +When Entry A is opened, load Entry A and then loop over entry.children as subentry and fetch each entry + +## Use cases + +A user searches for dog and they probably want just the entry, but they also might be even more interested in an example sentence. They coud click either + +- if they click "dog" they go to that entry which will also show related entries at the bottom like an example sentence +- if they click "A dog runs in the park" they will get the example sentence entry but it will also show it's parent entry of "dog" + +## Data models not being used because it restricts sub-entries: + +1. Sub-entries nested in same document + Entry A = { + id: A + lx: 'dog' + subEntries: [ + { + lx: 'dog' + "dog-tired" + } + ] + } + +2. Sub-collections + Entry A: "dog" + +- sub-collection of entries (fetched by entries/${id}/sub-entries) + - Entry example: "A dog runs in the park" + +Entry B: "park" + +- sub-collection of entries + - Entry example: "A dog runs in the park" diff --git a/docs/env.md b/docs/env.md new file mode 100644 index 000000000..95a9e02d7 --- /dev/null +++ b/docs/env.md @@ -0,0 +1,4 @@ +# Environment Variables + +- Ask for the .env.local to get the unrestricted Mapbox key and Firebase dev api key for working on localhost +- For Vercel deployment, putting each line from the contents of a private .env file into an environment variable will work also (e.g. VITE_project=development) diff --git a/docs/functions-emulator.md b/docs/functions-emulator.md new file mode 100644 index 000000000..0353e58fd --- /dev/null +++ b/docs/functions-emulator.md @@ -0,0 +1,99 @@ +# Firebase Functions Emulator (INCOMPLETE/OUTDATED Documentation) + +Demonstrates how to write Cloud Firestore + Cloud Functions **unit tests** and observe changes using the Firebase Emulator Suite. + +## Geting Set Up + +- `cd functions` and `npm install` +- Install the [Firebase CLI](https://firebase.google.com/docs/cli) globally. `npm i -g firebase-tools` +- `firebase login` +- `firebase use default` to use the dev project +- Check if you have Java installed (required for Firebase Emulator), run `java -version`, if not see https://java.com/en/download/help/download_options.xml to install + +## Run Tests + +- To run an single test using the command line, simply preface the test name with jest, as in `jest onNewUser.emulator` +- To use the Firebase Emulator UI at the same time as testing you can run `npm run serve` to get the database and cloud functions emulators running and then run the desired test in another terminal, for example: `jest makeUppercase.emulator --watch` + +## Ways to test Cloud Functions + +- Via test runner +- Using online database +- Using offline testing utilities +- Open Emulator, modify files and watch triggered functions (if applicable) + +## Create New Jest Test + +1. To ensure everything is working, create a basic test like so: + test('foo', () => { + expect(true).toBe(true); + }) +2. Make changes to your \*.test.ts file and then run the appropriate testing command. + +See https://jestjs.io/docs/en/getting-started for tips + +--- + +## References consulted + +- https://github.com/firebase/quickstart-testing +- https://firebase.google.com/docs/functions/unit-testing && https://github.com/firebase/functions-samples/blob/master/quickstarts/uppercase/functions/test/test.offline.js +- https://firebase.google.com/docs/functions/local-emulator +- https://firebase.google.com/docs/emulator-suite +- https://fireship.io/lessons/testing-cloud-functions-in-firebase/ +- The Local Firebase Emulator UI in 15 minutes: https://www.youtube.com/watch?v=pkgvFNPdiEs +- https://github.com/ssagga/firebase-emulators-testing-with-jest +- https://firebase.google.com/docs/emulator-suite/connect_and_prototype?database=RTDB && https://firebase.google.com/docs/emulator-suite/connect_functions#web +- https://firebase.google.com/docs/rules/unit-tests#database + +## Connect emulator to frontend app + +``` +firebase.initializeApp(yourFirebaseConfig); + + + if (location.hostname === "localhost") { + + firebase.firestore().settings({ + host: "localhost:8080", + ssl: false + }); + + firebase.functions().useFunctionsEmulator("http://localhost:5001"); + } +``` + +## Generate Fake Data Quickly + +Paste code into browser console to quickly create 100 fake documents. + +``` +(function () { + const script = document.createElement('script'); + script.src = + 'https://cdnjs.cloudflare.com/ajax/libs/Faker/3.1.0/faker.min.js'; + document.body.appendChild(script); + + setTimeout(() => { + faker.seed(23); + + const container = document.querySelector('.Firestore-actions'); + + const btn = document.createElement('button'); + btn.innerHTML = 'Add 100 Users'; + btn.className = 'mdc-button mdc-button--unelevated'; + btn.onclick = async () => { + Array(100) + .fill(0) + .forEach((_) => { + firestore.collection('users').add(faker.helpers.createCard()); + }); + }; + + container.appendChild(btn); + + }, 2000); +})(); +``` + +Or automate script with Tampermonkey Chrome extension diff --git a/docs/functions-unit-tests.md b/docs/functions-unit-tests.md new file mode 100644 index 000000000..d8740b908 --- /dev/null +++ b/docs/functions-unit-tests.md @@ -0,0 +1,42 @@ +# Unit Test Firebase Functions w/ Jest in the command line (OUTDATED) + +## For Contributors: How to run Firebase Functions Testing tools + +1. Procure the service account file from the project admin and save it to the functions directory as `service-account-dev.json` +2. Optional: if testing any functions that depend on environment config variables such as email sends run `firebase functions:config:get > .runtimeconfig.json` as detailed in https://firebase.google.com/docs/functions/local-emulator#set_up_functions_configuration_optional +3. Run `jest main.test` to make sure you have placed the service account correctly. + +## Create new Unit Tests of Functions using Jest + +1. Create a new \*.test.ts file and add `/// ` to the top of the file to avoid type errors. +2. To ensure everything is working, create a basic test like so: + test('foo', () => { + expect(true).toBe(true); + }) +3. Make changes to your \*.test.ts file and then run `npm t`. Alternatively run `npm run test:watch` to actively run tests while developing. + +See https://jestjs.io/docs/en/getting-started for tips + +## Initial Setup of Jest Testing for Typescript Firebase Functions + +1. Install Jest for Typescript: `npm i -D jest typescript` +2. Install typings: `npm i -D ts-jest @types/jest` +3. Create config file, `npx ts-jest config:init` +4. Add to package.json `"test": "jest"` and `"test:watch": "jest --watchAll"` +5. Download the service account file from your Firebase project and save it to the functions directory as `service-account-dev.json` - don't commit this! +6. Install Firebase Functions Test: `npm i firebase-functions-test` +7. Setup test-config.ts as seen in tests/test-config.ts in this repo. + +Read https://firebase.google.com/docs/functions/unit-testing to learn more +Some good testing examples also found in https://github.com/firebase/quickstart-nodejs + +## Manually Test Functions Using the Firebase Shell + +(This is not needed if you use Jest testing tools but it's good to know about.) + +1. Create new function and make sure it's exported from index.ts +2. For anything beyond Firestore and Realtime Database we need to set GOOGLE_APPLICATION_CREDENTIALS + In Powershell on Windows (VS Code) + `$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Apps\talking-dictionaries\functions\service-account-dev.json"` + See https://cloud.google.com/docs/authentication/getting-started#auth-cloud-implicit-nodejs for Linux/MacOS +3. `npm run shell` diff --git a/docs/i18n.md b/docs/i18n.md new file mode 100644 index 000000000..78cfb1ad5 --- /dev/null +++ b/docs/i18n.md @@ -0,0 +1,61 @@ +# i18N + +## Update translated strings + +- `npm run update-locales` +- the JSON files are generated in the `src/locales` folder (and now a few other places) +- check each file as the Google Sheet sometimes had bugs + +## Deploy new language + +- Add bcp code and vernacular name to appropriate array in src\lib\interfaces\languages.interface.ts +- `npm run update-locales` + +## Usage when developing + +- Add new string to component using `$_('entry.sr')` from `import { _ } from 'svelte-i18n';` as seen in docs at: https://github.com/kaisermann/svelte-i18n/blob/main/docs/Getting%20Started.md +- Add new string to translation spreadsheet + - Go to https://docs.google.com/spreadsheets/d/1SqtfUvYYAEQSFTaTPoAJq6k-wlbuAgWCkswE_kiUhLs/edit#gid=0 if it is a new string (i18n Ally will help you see if it's new - also search for similar strings and make sure we're not duplicating). + - Add the string at the bottom of the 1st column, then choose a component name that's already in use or use 'misc' if it's sitewide and doesn't belong in one particular component + - Add an item id in the item column that exactly matches the string but with underscore casing unless it's a longer string then choose a descriptive string + - wait for Google translate to do the magic on the other languages then update the translated strings in the app as described above in **Update Translated Strings** + - let Anna know so she can let the translators know to improve the Google translate piece when it seems a good time to her + +### Using Translations in .js/.ts files + +``` +import { _ } from 'svelte-i18n'; + +export function shout() { + _.subscribe(_ => { + alert(_('nav.home')); // will not be found by svelte-i18n extract CLI option + })(); // the final function call is to immediately unsubscribe +} +``` + +or + +``` +import { \_ } from 'svelte-i18n'; +import { get } from 'svelte/store'; + +export function shout() { + const $_ = get(_); + alert($\_('nav.home')); // will not be found by svelte-i18n extract CLI option + } +} +``` + +## TODO + +- Subdivide messages files based on part of site to avoid needing to load in all translations for the app at once. See example in https://github.com/kaisermann/sapper-template-i18n/blob/master/src/routes/about/index.svelte + +### Inspiration: + +https://github.com/VictorCazanave/google-sheets-i18n-generator#api + +### Other Helpful Links + +https://www.youtube.com/watch?v=UGN6EUi4Yio +https://github.com/tanatornn96/google-sheet-i18n +https://developers.google.com/sheets/api/quickstart/nodejs diff --git a/docs/import-dictionary.md b/docs/import-dictionary.md new file mode 100644 index 000000000..bcf239cc7 --- /dev/null +++ b/docs/import-dictionary.md @@ -0,0 +1,9 @@ +# Import Dictionary from Google Sheets template v4 + +- Download Kalinago CSV from online and replace empty kalinago.csv file. +- `cd functions` +- `npm i` if not done yet +- `npm run importDictionary -- --id kalinago` (will import to dev environment by default) +- Check the outputted log file (functions/scripts/logs/...) and the dictionary on localhost (or deployed dev url) to make sure all is good +- If all looks good `npm run importDictionary -- --id kalinago -e prod` to push the data live +- Tell Anna to look at it and make it public if all is good. diff --git a/docs/setup-tips-for-beginner-devs.md b/docs/setup-tips-for-beginner-devs.md new file mode 100644 index 000000000..d92bab22e --- /dev/null +++ b/docs/setup-tips-for-beginner-devs.md @@ -0,0 +1,18 @@ +## Setup Development Environment +1. Download and install Visual Studio Code (our preferred code editor). +2. Install Git from https://git-scm.com/downloads using the following instructions:
+ a. Select Components - Defaults are fine
+ b) Select Start Menu Folder - Defaults are fine
+ c) Choosing the default editor used by Git: Select “Use Visual Studio as Git’s default editor”
+ d) Adjusting your PATH environment: Select “Use Git from the Windows Command Prompt”
+ e) Choosing the SSH executable: Use OpenSSH
+ f) Choosing the HTTPS transport backend: Use the OpenSSL library
+ g) Configuring the line ending conversions - Default is fine
+ g) Configuring the terminal emulator to use with Git Bash: Select “Use MinTTY”
+ i) Configuring extra options - Defaults are fine
+ *At some point you may need to tell Git who you are (use github email and username).* +3. Open VS Code and pull the repository onto your computer:
+ a) Type `Ctrl + Shift + p` to get VS Code ready to receive a command and enter `Git init` then select a folder where you would like to store the site.
+ b) Type `Ctrl + Shift + p` again and enter `git: clone` followed by `https://github.com/jwrunner/talking-dictionaries` to pull down the code. +4. Install Node.js (includes NPM). +5. Next run `npm install` to install all the project's package dependencies and finish setting up your dev environment. \ No newline at end of file diff --git a/docs/tips.md b/docs/tips.md new file mode 100644 index 000000000..e18cf5367 --- /dev/null +++ b/docs/tips.md @@ -0,0 +1 @@ +- run `npx npm-check -u` to update packages diff --git a/docs/walkthrough.md b/docs/walkthrough.md new file mode 100644 index 000000000..e78c8a879 --- /dev/null +++ b/docs/walkthrough.md @@ -0,0 +1,125 @@ +# SvelteKit + Firebase 9 + TailwindCSS + Vercel Walkthrough + +This is an overview of how this repo, the Living Dictionaries web app, was built with SvelteKit, Firebase, TailwindCSS and Vercel, and includes brief mentions of testing frameworks as implemented thus far on the Living Dictionaries web app. This script originally paired with the [walkthrough video on YouTube](), but is now being updated as the technologies used herein advance. + +# Video-only intro + +This is an overview of how the open-sourced Living Dictionaries web app was built with SvelteKit, Firebase, TailwindCSS, and Vercel, and includes brief mentions of testing frameworks as implemented thus far on the Living Dictionaries web app. SvelteKit is still in beta so adjustments will need to be made to the app to keep up with changes, but this video is made to show how useful these tools have been in my development process and that SvelteKit is production ready. + +--- + +You’ll see my preference towards technologies that give quick feedback during the development process, as well as “using the platform” whenever possible (e.g. using alert, prompt, and confirm instead of building out extra modals that depend on a component). + +## Create SvelteKit app + +We start by creating a new SvelteKit app, `npm init svelte@next`, the `@next` won’t be needed after v1 is released. We'll use the skeleton option though you should try the demo app if new to Svelte and SvelteKit. I opt in to use Typescript, ESLint, and Prettier. Then I `npm install`, init the repo, push it to GitHub, and `npm run dev` to see my app running in dev mode which has almost instead startup and hot module reloads because SvelteKit uses ES modules. SvelteKit uses Vite under the hood to serve up just the modules needed for a particular view. This stands in contrast to how Webpack or Rollup need to bundle the entire app before serving a view and is enabled because ES modules are now supported natively by browsers. With a small app, this is nothing to get excited about because bundlers are pretty fast at this point. The benefits of a quick startup + Hot-module-reloading (HMR) really start to show as our app gets large, as can be seen in the Living Dictionaries repo. + +## Automatic Linting & Formatting + +- As you go along, you may want to adjust the ESLint rules to your preferences by turning them off or adjusting an error to a warning and vice versa +- Take a peek at prettier.io and svelte-prettier to see the code formatting customizations available. I like spaces and trailing commas so I remove those and turn off the custom svelteBracketNewLine setting. +- Let's make formatting and linting automatic. Add the prettier-vscode extension and the vscode-eslint extension and tell VSCode to format and fix all lint errors on save. I like to take things a step further and use the errorlens extension to make my errors easy to read as I'm writing code w/o needing to hover over messages. +- We can take things a step further by using `simple-git-hooks` to run custom `lint-staged` commands as a pre-commit git hook to ensure that every team members' commits (regardless of editor or editor settings) are also formatted and linted according to the team's agreed rules. Install both packages, add the configuation to package.json. Note that you need to manually run `npx simple-git-hooks` every time the simple-git-hooks configuration is changed. If you like this idea but don't like how it slows down the commit process, look into using GitHub actions to lint and format all commits on the GitHub side. + +## Automatic Deployment using Vercel + +I like to get my web app deployed first thing so I can test in its final environment all through the development process, so I'm going to go to Vercel, add a new project, select my repository after giving Vercel the proper permissions, select SvelteKit as the type and deploy! Since you gave Vercel permissions it will now take care of automatically making production and preview deployments on every single commit. _Consider setting up the Slack integration to give you convenient and timely feedback on your deploys_ + +## Automatic Testing & Audit with Slack Notifications + +To automate our deployment, as well as run audits and tests on every deployment, let's use GitHub Actions. Start by creating two .yml files, one audits production deployments and one for tests and audits preview deployments using their Vercel preview URL. You'll see I'm only testing and auditing pull request commits, but you could automate every single push if desired as each push has its own preview deployment. + +- After setting up our action triggers, we declare environment variables available to the whole workflow. (Github token is an automatic secret available to actions) +- See https://api.slack.com/messaging/webhooks to get a slack webhook url - add this to the GitHub secrets for your repo +- Then we declare our DEPLOY_URL to keep from repeating ourselves +- Add the first job, checkout the code, install dependencies, validate their are no errors in our Svelte components and run all tests +- We have a variety of steps that send deployment status notifications to our chosen Slack channel and run a Lighthouse speed audits. The Lighthouse audit report is added to pull requests (updated on future pushes) and also sent to Slack. There is a lot of room here to build things as you desire, but do note that a few things. If you have an open source repo, you may prefer to just add the GitHub app to Slack just subscribe to pull request updates. Also know that you can set up a Lighthouse server to keep track of long-term changes in your web apps loading speeds, as well as setting budgets and parameters that will trigger a workflow failure. +- You'll notice on pull requests, we have a second job that depends on the success of the first job, sets the working directory to `e2e`, runs tests, and saves resulting screenshots as artifacts on the action (currently not implemented). +- That was a bit of work to set up our actions, but it gives us a foundation to rapidly make changes and test things easily, both via automated tests, as well as manual testing. + +## E2E testing w/ Playwright + +- Now let's add a title to our homepage and check for "Living Dictionaries" using a Playwright end-to-end test. +- Please watch my [Playwright Overview Video](https://vimeo.com/539258111/f857aaa64e) for tips on how to set up and use Playwright w/ Jest. +- I don't have any strong reason why I'm using Playwright over Cypress. You could use either, but to me Cypress feels a bit heavier and more geared towards test-driven design usage. Playwright doesn't ship it's own test runner and we'll use Jest to run its tests as Jest is a test runner I particularly like. If you're not comfortable with Jest yet and don't plan to use it for other tests, you may enjoy the batteries included feel of Cypress better. + +--- + +Unfinished notes below + +## Firebase + +- To add Cloud Functions, run `firebase init` and select Functions to add Firebase Functions. Opt out of adding ESLint as we will use root level config for consistency and select your project. +- use dual projects for easy development +- haven't bought in to the Firebase Emulator suite yet as it adds a bit of overhead (install Java, not available in web-based dev environments) but it looks to be powerful and useful for those who don't want the dual project setup +- Firestore helpers (show usage in components) + +## SSR + +## Scripts + +- ts-node + +## Add i18n + +- fetch-messages for i18n (using a Google Sheet but would love something whereby anyone in the world could create a pull-request w/ just a name and email address) +- https://github.com/cibernox/svelte-intl-precompile +- i18n ally + +## Components + +- Svelte makes modals, page transitions, button components and other reusable components painless to build and lazy-load. + - Take for example, this simple JSON component that I keep around to easily inspect data, w/o incurring extra weight to normal end-users. (You'll need the svelte-vscode extension and I highly recommend the vscode-svelte-snippets as well as you'll be using conditionals and loops a lot) + - SEO: https://github.com/svelte-society/sveltesociety-2021/blob/main/src/routes/%24layout.svelte + - Simple Admin Guard: admin components (not fully secure, but OK because real security is in the Firestore rules, show sample for not being able to read other users) + - Take a look at the repo for more component examples. + +## Tailwind CSS + +- I like TailwindCSS because when used with the vscode-tailwindcss extension, it makes writing CSS extremely easy, particularly when trying to take breakpoints into consideration. As well it only compiles the styles actually being used. +- With a fresh repo, you can run `npx svelte-adder tailwind` +- Note that for this repo I ran `npm i -D tailwindcss postcss postcss-cli cssnano autoprefixer` and added postcss.config.cjs and tailwind.config.cjs files. +- `.cjs` is used here to tell node that these are commonjs files. To take advantage of the now standardized ES Modules which both browsers and Node (as of version 12) now natively support, SvelteKit has added a line to your package.json `"type": "module",` to tell Node that `.js` files are ES modules and not commonjs, the Node default. This means that for tooling (like PostCSS and TailwindCSS) that haven't yet made the transition to ESModules, we need to `.cjs` file ending that would otherwise just be `.js` as specified in their documentation. \*\*Note that in projects which still use commonjs (the default) you need to use the `.mjs` file extension to specify the ES module format. The primary noticeable difference is that ES modules uses the `import ____ from ____` syntax we've been using in Typescript and browser modules instead of `const _____ = require(____)`. +- PostCSS will automatically add needed vendor prefixes, as well as minify our styles on production. +- You'll notice that I've added a few things to my Tailwind configuration: + + - I extend Tailwind with styles for prose and forms: `npm i -D @tailwindcss/typography @tailwindcss/forms` + - Adjust the look of the prose styles (use them by adding `.prose` and sometimes `.max-w-none`) + - and add a few colors but let's stop there as Tailwind has great documentation. + - Add global styles to layout.svelte + +- If you prefer not to be hassled with adding styles to your build pipeline, Bootstrap, Bulma, and many other frameworks are good options. Alternatively if you're good at CSS and don't want any style framework at all, Svelte makes it extremely easy to just write vanilla CSS directly in your components because they are scoped to just that component. + +## env variables + +- Mapbox key + +## Unit & Integration Testing + +- Jest +- Testing Library +- Multiple projects (Functions, Svelte, Scripts) +- Wallaby +- Use Quokka for a testing playground + +## Svench + +If you've ever built a component with many different possible states and want to be able to make changes w/o breaking anything, then a visual mocking tool based off various states or "stories" is really nice. Unit testing won't tell you if your CSS layout is broken in many of your views because of that last change you made. Storybook is the industry standard here, but can be quite slow to start up, so we're going to use Svench, an alternative option developed by Rixo for the Svelte community. To get started: + +- `npm i -D svench vite @sveltejs/vite-plugin-svelte` +- I need to import Tailwind styles on startup so I can add `import './global.css';` to a .svench.js file. If you do your style import in your index.html file, you can do that by adding an index.svench file. +- For SvelteKit, at the moment we need to add a `svench.config.js` file to tell the Vite server that Svench runs how to resolve our aliases. +- Run `npx svench` and then create a `Button.svench` file right next to your `Button.svelte` component + +## Making a change + +- Run `npm run dev` to open in your browser. Note the optional addition of `--open --host` has made it automatically open and available over the network for easy mobile device testing. +- Make a change and then make a pull request. +- After tests run to ensure you haven't broken anything, a teammate can easily look at the deployed staging app to check things out. If any edits are needed, they can click the edit in GitPod button (or use GitHub Codespaces) to easily make changes and finish up the feature. +- Then release the feature by merging to the `main` branch where it will be automatically deployed + +## Sign-off + +This video will become out of date but the repo and corresponding Walkthrough.md file will stay up to date on how to set things up. This will be particularly relevant for SvelteKit as it comes out of beta. + +Please comment on what you learned. As well, if you have any suggestions on how to improve things please create an issue or submit a pull request to the [repo](https://github.com/Living-Tongues/living-dictionaries). diff --git a/docs/woolaroo-notes.md b/docs/woolaroo-notes.md new file mode 100644 index 000000000..f565ac2e0 --- /dev/null +++ b/docs/woolaroo-notes.md @@ -0,0 +1,10 @@ +## Interesting Woolaroo Components +https://woolaroo-project.appspot.com/ +https://github.com/GoogleCloudPlatform/woolaroo-language-learning-app + +- client/src/components/camera-preview/camera-preview.ts + +- client/src/components/translation-selector/selection-line.ts +- client/src/components/translation-selector/translation-selector.ts + +- client/src/services/google/image-recognition.ts & Google Cloud Vision API \ No newline at end of file diff --git a/docs/z-index.md b/docs/z-index.md new file mode 100644 index 000000000..f4b3378f6 --- /dev/null +++ b/docs/z-index.md @@ -0,0 +1,20 @@ +# Z-Index levels across the app (OUTDATED) + +nprogress (page load indicator): 1031 +Modal: 60 +SideMenu: z-50 +SideMenuBackdrop: z-40 +User Menu: ? + +[entryId].svelte header: z-30 +Header: 2 +Dictionary Title: 2 +Multi-select in entry edit: 1 +Entries search: z-20 +FilterMenu & FilterMenuBackdrop: z-20 +Basic page lifted items: z-10 +DataGrid: 3-6 + +## Map + +toggle satellite button: 1 diff --git a/e2e/.gitignore b/e2e/.gitignore new file mode 100644 index 000000000..d1a4f7fb7 --- /dev/null +++ b/e2e/.gitignore @@ -0,0 +1,2 @@ +screenshots/ +node_modules/ \ No newline at end of file diff --git a/e2e/E2E.md b/e2e/E2E.md new file mode 100644 index 000000000..e6e504724 --- /dev/null +++ b/e2e/E2E.md @@ -0,0 +1,31 @@ +# E2E Testing w/ Playwright + +[Overview Video](https://vimeo.com/539258111/f857aaa64e) + +## Playwright Notes + +- [Playwright Docs](https://playwright.dev/) +- Easily record user interactions: `npx playwright codegen hvsb.app` + +## Jest Test Runner Notes + +- For use in CI or for being able to run multiple tests and add assertions, we are using Jest and [Jest Playwright Preset](https://github.com/playwright-community/jest-playwright), run `npm t` (shorthand for `npm run test`) to run all tests. +- w/o VSCode, individual tests can be run by installing Jest globally `npm i -g jest` and then running `jest homepage` (all test files matching that glob pattern will be run) or by editing the package.json scripts to target a specific file +- w/ VSCode, use recommended extension `vscode-jest-runner` to get "Run | Debug" codelens shortcuts above each individual test to run or debug. These commands will use the "individual-test" config that will only use 1 browser, turn off headless mode, and slow down the test so we can observe each step +- Learn more about assertions: https://jestjs.io/docs/using-matchers +- Note: the jest.config.js testEnvironmentOptions configure which browsers run the tests and if you want to turn headless mode off and slowMo on to be able to watch tests run in a browser +- Note: that playwright has a bit of boilerplate code to instantiate a browser and page environment, that jest-playwright-preset enables us to remove this boilerplate code and to test across different browser types easily. Read https://www.carlrippon.com/getting-started-with-playwright/ to learn more. +- Not used: modify the testMatch patterns in jest.config.js and then run the "Debug Jest Test" preset on the debug panel. Turn headless mode off if you also want visual testing at the same time + +## Triggering Test Runs + +- Presently, tests can be triggered by going into the repo and clicking on a job and "Re-run jobs" or by modifying a file and pushing (from local or online). If desired, David can set up an HTTP trigger endpoint if wanting to automate the process on every publish as mentioned in: https://dev.to/rikurouvila/how-to-trigger-a-github-action-with-an-htt-request-545 + +### Exploring Playwright without a test runner + +- To see how Playwright works by itself w/o a test runner, run `node tests/e2e/essentials.cjs` to see sample (1st time, Playwright binaries will have to download) + +### Helpful Jest + Playwright resources + +- https://www.carlrippon.com/getting-started-with-playwright/ +- https://dilshani.medium.com/start-ui-tests-with-playwright-jest-typescript-8dcbf4646bcb diff --git a/e2e/jest.config.js b/e2e/jest.config.js new file mode 100644 index 000000000..fc72e3e2c --- /dev/null +++ b/e2e/jest.config.js @@ -0,0 +1,21 @@ +/** @typedef {import('ts-jest')} */ +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + preset: 'jest-playwright-preset', + testEnvironmentOptions: { + "jest-playwright": { + browsers: ["chromium", "firefox", "webkit"], + // browsers: ["chromium"], + // launchOptions: { + // headless: false, + // slowMo: 600, + // }, + }, + }, + testMatch: ["**/?(*.)+(spec|test).+(ts|js)"], + transform: { + "^.+\\.(ts)$": "ts-jest", + } +} + +module.exports = config; \ No newline at end of file diff --git a/e2e/jest.individual-test.config.js b/e2e/jest.individual-test.config.js new file mode 100644 index 000000000..206f8c74f --- /dev/null +++ b/e2e/jest.individual-test.config.js @@ -0,0 +1,16 @@ +/** @typedef {import('ts-jest')} */ +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + ...require('./jest.config'), + testEnvironmentOptions: { + "jest-playwright": { + browsers: ["chromium"], // "firefox", "webkit" + launchOptions: { + headless: false, + slowMo: 1000, + }, + }, + }, +} + +module.exports = config; \ No newline at end of file diff --git a/e2e/package-lock.json b/e2e/package-lock.json new file mode 100644 index 000000000..473e055b9 --- /dev/null +++ b/e2e/package-lock.json @@ -0,0 +1,5800 @@ +{ + "name": "e2e-with-playwright", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "dev": true + }, + "@babel/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", + "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==", + "dev": true + }, + "@hapi/topo": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", + "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@sideway/address": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz", + "integrity": "sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/babel__core": { + "version": "7.1.14", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", + "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", + "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.23", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", + "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/node": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.1.tgz", + "integrity": "sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/prettier": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz", + "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "dev": true + }, + "@types/wait-on": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/wait-on/-/wait-on-5.2.0.tgz", + "integrity": "sha512-3+jsMyPm8aot1mqDUDLOl+dejPvpysUUoUXD6CCRY20MNNhcjEfvdcBnGdnk7DEYs9Hr16ubGJA/9/QW0Df/9g==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "acorn": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", + "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001221", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001221.tgz", + "integrity": "sha512-b9TOZfND3uGSLjMOrLh8XxSQ41x8mX+9MLJYDM4AAHLfaZHttrLNPrScWjVnBITRZbY5sPpCt7X85n7VSLZ+/g==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "dev": true, + "requires": { + "find-pkg": "^0.1.2", + "fs-exists-sync": "^0.1.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron-to-chromium": { + "version": "1.3.726", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.726.tgz", + "integrity": "sha512-dw7WmrSu/JwtACiBzth8cuKf62NKL1xVJuNvyOg0jvruN/n4NLtGYoTzciQquCPNaS2eR+BT5GrxHbslfc/w1w==", + "dev": true + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, + "expect-playwright": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/expect-playwright/-/expect-playwright-0.3.4.tgz", + "integrity": "sha512-JulhMkc5lVvpF18ImWLqviHZpo4qzT9FfpF+lP4D+U9guGUnYOCFpS/5Qk1c3zKhYHJL1JBEfiiGfcRUuzsnEg==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-file-up": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", + "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", + "dev": true, + "requires": { + "fs-exists-sync": "^0.1.0", + "resolve-dir": "^0.1.0" + } + }, + "find-pkg": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", + "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", + "dev": true, + "requires": { + "find-file-up": "^0.1.2" + } + }, + "find-process": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.4.tgz", + "integrity": "sha512-rRSuT1LE4b+BFK588D2V8/VG9liW0Ark1XJgroxZXI0LtwmQJOb490DvDYvbm+Hek9ETFzTutGfJ90gumITPhQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "commander": "^5.1.0", + "debug": "^4.1.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "follow-redirects": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", + "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" + }, + "dependencies": { + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + } + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" + }, + "dependencies": { + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "optional": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "dependencies": { + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + } + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-circus": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", + "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-playwright-preset": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/jest-playwright-preset/-/jest-playwright-preset-1.5.2.tgz", + "integrity": "sha512-L7a5poZUR1vbmVNF4te1Ic3rMDBEU0KmIdjuLfGkdGpLgPdfhr6Xh//blbvmpfMj3TMnuuLlf37QkDtJnVa5gA==", + "dev": true, + "requires": { + "expect-playwright": "^0.3.4", + "jest-circus": "^26.6.3", + "jest-environment-node": "^26.6.2", + "jest-process-manager": "^0.3.1", + "jest-runner": "^26.6.3", + "nyc": "^15.1.0", + "playwright-core": ">=1.2.0", + "rimraf": "^3.0.2", + "uuid": "^8.3.2" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "playwright-core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.10.0.tgz", + "integrity": "sha512-SDA5KPwnJJSfnNX/b7h8y0ChwBmcbbcCofYXkZGMVuzXZsmHPGLOBRhgkwN2nzJ10Ezf4cd1OcVOeOLKPxjeRg==", + "dev": true, + "requires": { + "commander": "^6.1.0", + "debug": "^4.1.1", + "extract-zip": "^2.0.1", + "https-proxy-agent": "^5.0.0", + "jpeg-js": "^0.4.2", + "mime": "^2.4.6", + "pngjs": "^5.0.0", + "progress": "^2.0.3", + "proper-lockfile": "^4.1.1", + "proxy-from-env": "^1.1.0", + "rimraf": "^3.0.2", + "stack-utils": "^2.0.3", + "ws": "^7.3.1" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-process-manager": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/jest-process-manager/-/jest-process-manager-0.3.1.tgz", + "integrity": "sha512-x9W54UgZ7IkzUHgXtnI1x4GKOVjxtwW0CA/7yGbTHtT/YhENO0Lic2yfVyC/gekn7OIEMcQmy0L1r9WLQABfqw==", + "dev": true, + "requires": { + "@types/wait-on": "^5.2.0", + "chalk": "^4.1.0", + "cwd": "^0.10.0", + "exit": "^0.1.2", + "find-process": "^1.4.4", + "prompts": "^2.4.1", + "signal-exit": "^3.0.3", + "spawnd": "^5.0.0", + "tree-kill": "^1.2.2", + "wait-on": "^5.3.0" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "joi": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz", + "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "jpeg-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", + "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.3.tgz", + "integrity": "sha512-Qj1H+PEvUsOtdPJ056ewXM4UJPCi4hhLA8wpiz9F2YvsRBhuFsXxtrIFAgGBDynQA9isAMGE91PfUYbdMPXuTA==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.1.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.4", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "dev": true + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dev": true, + "requires": { + "mime-db": "1.47.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "optional": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "playwright": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.10.0.tgz", + "integrity": "sha512-b7SGBcCPq4W3pb4ImEDmNXtO0ZkJbZMuWiShsaNJd+rGfY/6fqwgllsAojmxGSgFmijYw7WxCoPiAIEDIH16Kw==", + "dev": true, + "requires": { + "commander": "^6.1.0", + "debug": "^4.1.1", + "extract-zip": "^2.0.1", + "https-proxy-agent": "^5.0.0", + "jpeg-js": "^0.4.2", + "mime": "^2.4.6", + "pngjs": "^5.0.0", + "progress": "^2.0.3", + "proper-lockfile": "^4.1.1", + "proxy-from-env": "^1.1.0", + "rimraf": "^3.0.2", + "stack-utils": "^2.0.3", + "ws": "^7.3.1" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + } + } + }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "requires": { + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "spawnd": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-5.0.0.tgz", + "integrity": "sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "signal-exit": "^3.0.3", + "tree-kill": "^1.2.2", + "wait-port": "^0.2.9" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "ts-jest": { + "version": "26.5.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.5.tgz", + "integrity": "sha512-7tP4m+silwt1NHqzNRAPjW1BswnAhopTdc2K3HEkRZjF0ZG2F/e/ypVH0xiZIMfItFtD3CX0XFbwPzp9fIEUVg==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.1.tgz", + "integrity": "sha512-p0BB09E5FRjx0ELN6RgusIPsSPhtgexSRcKETybEs6IGOTXJSZqfwxp7r//55nnu0f1AxltY5VvdVqy2vZf9AA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "wait-on": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", + "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", + "dev": true, + "requires": { + "axios": "^0.21.1", + "joi": "^17.3.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^6.6.3" + } + }, + "wait-port": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-0.2.9.tgz", + "integrity": "sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "commander": "^3.0.2", + "debug": "^4.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", + "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/e2e/package.json b/e2e/package.json new file mode 100644 index 000000000..9f1d7c7e7 --- /dev/null +++ b/e2e/package.json @@ -0,0 +1,22 @@ +{ + "name": "e2e-with-playwright", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "jest --verbose", + "test:watch": "jest --watchAll", + "test:specific": "jest login --watch" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@types/jest": "^26.0.22", + "jest": "^26.6.3", + "jest-playwright-preset": "^1.5.2", + "playwright": "^1.10.0", + "ts-jest": "^26.5.5", + "typescript": "^4.2.4" + } +} diff --git a/e2e/tests/checkly-examples.cjs b/e2e/tests/checkly-examples.cjs new file mode 100644 index 000000000..c7466edbb --- /dev/null +++ b/e2e/tests/checkly-examples.cjs @@ -0,0 +1,82 @@ +const { chromium } = require('playwright') +const browser = await chromium.launch() +const page = await browser.newPage() + +const errorCount = { + failedRequests: 0, // failed http request + appExceptions: 0, // uncaught exceptions + scriptErrors: 0, // errors in your test script + assertionErrors: 0 // you can count other errors here +} + +const script = async () => { + // This block will track failed http request in your app. + // Note that 4xx and 5xx responses are still successful from HTTP standpoint + // Feel free to remove or modify it according to your app behavior + page.on('requestfailed', (request) => { + console.log(`Failed request: ${request.url()} reason: ${request.failure().errorText}`) + errorCount.failedRequests++ + }) + + // This block will track uncaught exceptions in your app. + // Feel free to remove or modify if according to your app behavior + page.on('error', (exception) => { + console.log(`Uncaught exception: ${exception}`) + errorCount.appExceptions++ + }) + + const appUrl = process.env.ENVIRONMENT_URL || 'https://staging.hvsb.workers.dev' + console.log(`Starting to check: ${appUrl}`) + + // Navigate to your app and waits until there is no network activity for 500ms + const response = await page.goto(appUrl, { waitUntil: 'networkidle' }) + console.log(`Successfully loaded: ${appUrl}, status: ${response.status()}`) + + // Wait for 1s + await page.waitForTimeout(1000) + // Note that it's much better to not use waitForTimeout and wait for a specific selector in your app like this: + // await page.waitForSelector('.home-dashboard') + + // Take a full-page screenshot of the app + await page.screenshot({ + path: 'home.png', + fullPage: true + }) + + // // This block will find a DOM element using a selector and verify its inner text + // const elementContent = await page.$eval('.dashboard > h2', el => el.innerText) + // const expectedContent = 'Newest clients' + // if (elementContent !== expectedContent) { + // console.info(`The innerText is "${elementContent}", expected "${expectedContent}"`) + // errorCount.assertionErrors++ + // } + + + // // This block fills a login-form with a username and password + // await page.type('input[type="email"]', 'user@myapp.com') + // await page.type('input[type="password"]', 'password1234') + // await page.click('button[type="submit"]') // click a button + // await page.waitForNavigation({ waitUntil: 'networkidle' }) // wait for the app to reload +} + +// This block of code will bootstrap your script. +// The check run will fail if any errors are detected. +const main = async () => { + try { + await script() + } catch (error) { + console.error(`E2E script error:`, error) + errorCount.scriptErrors++ + } finally { + await browser.close() + } + + const totalErrors = Object.values(errorCount).reduce((accumulator, current) => accumulator + current, 0) + if (totalErrors > 0) { + // This will fail the check + throw new Error(`${totalErrors} Errors detected on your page. Breakdown: ${JSON.stringify(errorCount)}`) + } + + console.log('Check finished successfully - no errors') +} +await main() diff --git a/e2e/tests/essentials.cjs b/e2e/tests/essentials.cjs new file mode 100644 index 000000000..a5dc928ec --- /dev/null +++ b/e2e/tests/essentials.cjs @@ -0,0 +1,95 @@ +// run `node e2e/essentials.cjs` +const { chromium } = require('playwright'); + +(async () => { + const browser = await chromium.launch({ + headless: false, + slowMo: 50, + }); + const context = await browser.newContext(); + + const page = await context.newPage(); + await page.goto('http://staging.hvsb.workers.dev/'); + await page.click('text=Begin Reading'); + // assert.equal(page.url(), 'http://staging.hvsb.workers.dev/WEB/MAT/1'); + + await page.click('text=The Family History of Jesus, the Messiah'); + // assert.equal(page.url(), 'http://staging.hvsb.workers.dev/WEB/MAT/1'); + + // Click text=Sign in with emailEmail + await page.click('text=Sign in with email'); + + await page.fill('input[name="email"]', '1234@checklye2e.com'); + await page.press('input[name="email"]', 'Enter'); + + // await page.fill('input[name="name"]', 'e2e tester'); + // await page.press('input[name="name"]', 'Tab'); + // await page.fill('input[name="newPassword"]', '1234@checklye2e.com'); + // await page.press('input[name="newPassword"]', 'Enter'); + await page.fill('input[name="password"]', '1234@checklye2e.com'); + await page.press('input[name="password"]', 'Enter'); + + await page.click('text=e2e'); + await page.click('text=Account Details'); + // assert.equal(page.url(), 'http://staging.hvsb.workers.dev/account'); + + await page.click('text=1234@checklye2e.com'); + + await Promise.all([ + page.waitForNavigation(/*{ url: 'http://staging.hvsb.workers.dev/search' }*/), + page.click('a:has-text("Search")') + ]); + + await Promise.all([ + page.waitForNavigation(/*{ url: 'http://staging.hvsb.workers.dev/search?media_prod%5Bquery%5D=The%20Family%20History%20of%20Jesus' }*/), + page.fill('[placeholder="Search Media"]', 'The Family History of Jesus') + ]); + + await page.click('text=The Family History of Jesus, the Messiah'); + // assert.equal(page.url(), 'http://staging.hvsb.workers.dev/WEB/MAT/1/doc/4ksmpgO0pBPYQ4M09Et1'); + + await page.click('text=The opening of the first book of the New Testament reflects a clear Jewish'); + + await page.click('.next-ch-btn'); + // assert.equal(page.url(), 'http://staging.hvsb.workers.dev/WEB/MAT/2'); + + await page.click('text=Matthew Matt 2'); + await page.waitForTimeout(1000); + await page.click('a:has-text("3")'); + // assert.equal(page.url(), 'http://staging.hvsb.workers.dev/WEB/MAT/3'); + + await page.click('text=1In those days, John the Baptizer came, preaching in the wilderness of Judea'); + + await page.click('button:has-text("Contact Us")'); + await page.click('text=What is your question or comment?'); + await page.click('[aria-label="Close"]'); + + await page.click('text=A Possible Site for the Cave of John the Baptist'); + // assert.equal(page.url(), 'http://staging.hvsb.workers.dev/WEB/MAT/3/img/MJjp4u7RVxn6pHkHMPoP'); + + // await page.click('text=Subscribe to HVSB Basic'); + // await page.click('text=Checkout Using Stripe'); + + // await page.click('[placeholder="1234 1234 1234 1234"]'); + // await page.fill('[placeholder="1234 1234 1234 1234"]', '4242 4242 4242 4242'); + // // await page.press('[placeholder="1234 1234 1234 1234"]', 'Tab'); + // await page.fill('[placeholder="MM / YY"]', '12 / 26'); + // // await page.press('[placeholder="MM / YY"]', 'Tab'); + // await page.fill('[placeholder="CVC"]', '424'); + // // await page.press('[placeholder="CVC"]', 'Tab'); + // await page.fill('input[name="billingName"]', 'e2e tester'); + // // await page.press('input[name="billingName"]', 'Tab'); + // // await page.press('[aria-label="Country or region"]', 'Tab'); + // await page.fill('[placeholder="ZIP"]', '12345'); + // // await page.press('[placeholder="ZIP"]', 'Tab'); + + // await Promise.all([ + // // await page.goto('http://staging.hvsb.workers.dev/WEB/MAT/3'); + // page.waitForNavigation(/*{ url: 'http://staging.hvsb.workers.dev/WEB/MAT/3' }*/), + // page.click('button:has-text("Start trial")') + // ]); + + // --------------------- + await context.close(); + await browser.close(); +})(); \ No newline at end of file diff --git a/e2e/tests/example.test.ts b/e2e/tests/example.test.ts new file mode 100644 index 000000000..b265d56e8 --- /dev/null +++ b/e2e/tests/example.test.ts @@ -0,0 +1,4 @@ +test.skip('example.com loads a title of "Example Domain"', async () => { + await page.goto('https://www.example.com'); + expect(await page.title()).toBe('Example Domain'); +}); diff --git a/e2e/tests/globalTypes.ts b/e2e/tests/globalTypes.ts new file mode 100644 index 000000000..cff296929 --- /dev/null +++ b/e2e/tests/globalTypes.ts @@ -0,0 +1,7 @@ +import { Browser, Page } from 'playwright'; + +declare global { + const page: Page; + const browser: Browser; + const browserName: string; +} diff --git a/e2e/tests/homepage.test.ts b/e2e/tests/homepage.test.ts new file mode 100644 index 000000000..ea1a707b6 --- /dev/null +++ b/e2e/tests/homepage.test.ts @@ -0,0 +1,8 @@ +describe('Homepage', () => { + test('has title of House Visual Study Bible', async () => { + await page.goto('https://staging.livingdictionaries.workers.dev/'); + await page.screenshot({ path: `screenshots/hvsb-${browserName}.png` }); + console.log(`Screenshot saved to screenshots/hvsb-${browserName}.png`); + expect(await page.title()).toBe('Living Dictionaries'); + }); +}); diff --git a/e2e/tests/login.test.ts b/e2e/tests/login.test.ts new file mode 100644 index 000000000..5a0604392 --- /dev/null +++ b/e2e/tests/login.test.ts @@ -0,0 +1,19 @@ +test.skip('Login with a test account', async () => { + if (browserName !== 'webkit') { + // Safari on Windows runs into a "Server Error" + await page.goto('https://staging.hvsb.workers.dev/'); + await page.click('text=Begin Reading'); + await page.click('text=The Family History of Jesus, the Messiah'); + await page.click('text=Sign in with email'); + + await page.fill('input[name="email"]', '1234@checklye2e.com'); + await page.press('input[name="email"]', 'Enter'); + await page.fill('input[name="password"]', '1234@checklye2e.com'); + await page.press('input[name="password"]', 'Enter'); + + await page.click('text=e2e'); + await page.click('text=Account Details'); + expect(await page.innerText('text=1234@checklye2e.com')); + expect(await page.url()).toBe('https://staging.hvsb.workers.dev/account'); + } +}); diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 000000000..6b9852aaf --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "es6", + "lib": ["dom", "dom.iterable", "esnext"], + "strict": true, + "module": "commonjs", + "noEmit": true + }, + "include": ["tests"] +} diff --git a/firebase.json b/firebase.json new file mode 100644 index 000000000..0128480d2 --- /dev/null +++ b/firebase.json @@ -0,0 +1,12 @@ +{ + "functions": { + "predeploy": [ + "npm --prefix \"$RESOURCE_DIR\" run build" + ] + }, + "emulators": { + "functions": { + "port": 5001 + } + } +} diff --git a/functions/.gitignore b/functions/.gitignore new file mode 100644 index 000000000..a90fd3eac --- /dev/null +++ b/functions/.gitignore @@ -0,0 +1,11 @@ +# Compiled JavaScript files +lib/**/* + +# TypeScript v1 declaration files +typings/ + +node_modules/ + +service-account* +sheets-viewer-SA.json +logs \ No newline at end of file diff --git a/functions/jest.config.js b/functions/jest.config.js new file mode 100644 index 000000000..8dde3d961 --- /dev/null +++ b/functions/jest.config.js @@ -0,0 +1,17 @@ +// const path = require('path') + +/** @typedef {import('ts-jest')} */ +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + // rootDir: path.join(__dirname, '..'), + // displayName: 'functions-scripts', + preset: 'ts-jest', + testEnvironment: "node", + // transform: { + // "^.+\\.(ts)$": "ts-jest", + // }, + testMatch: ["**/scripts/import/**/*.test.ts"], + // testMatch: ["/functions/scripts/**/*.test.ts"], +} + +module.exports = config; \ No newline at end of file diff --git a/functions/package-lock.json b/functions/package-lock.json new file mode 100644 index 000000000..cb379c440 --- /dev/null +++ b/functions/package-lock.json @@ -0,0 +1,12119 @@ +{ + "name": "ld-functions", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@algolia/cache-browser-local-storage": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.5.1.tgz", + "integrity": "sha512-TAQHRHaCUAR0bNhUHG0CnO6FTx3EMPwZQrjPuNS6kHvCQ/H8dVD0sLsHyM8C7U4j33xPQCWi9TBnSx8cYXNmNw==", + "requires": { + "@algolia/cache-common": "4.5.1" + } + }, + "@algolia/cache-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.5.1.tgz", + "integrity": "sha512-Sux+pcedQi9sfScIiQdl6pEaTVl712qM9OblvDhnaeF1v6lf4jyTlRTiBLP7YBLuvO1Yo54W3maf03kmz9PVhA==" + }, + "@algolia/cache-in-memory": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.5.1.tgz", + "integrity": "sha512-fzwAtBFwveuG+E5T/namChEIvdVl0DoV3djV1C078b/JpO5+DeAwuXIJGYbyl950u170n5NEYuIwYG+R6h4lJQ==", + "requires": { + "@algolia/cache-common": "4.5.1" + } + }, + "@algolia/client-account": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.5.1.tgz", + "integrity": "sha512-2WFEaI7Zf4ljnBsSAS4e+YylZ5glovm78xFg4E1JKA8PE6M+TeIgUY6HO2ouLh2dqQKxc9UfdAT1Loo/dha2iQ==", + "requires": { + "@algolia/client-common": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "@algolia/client-analytics": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.5.1.tgz", + "integrity": "sha512-bTmZUU8zhZMWBeGEQ/TVqLoL3OOT0benU0HtS3iOnQURwb+AOCv3RsgZvkj2djp+M24Q6P8/L34uBJMmCurbLg==", + "requires": { + "@algolia/client-common": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "@algolia/client-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.5.1.tgz", + "integrity": "sha512-5CpIf8IK1hke7q+N4e+A4TWdFXVJ5Qwyaa0xS84DrDO8HQ7vfYbDvG1oYa9hVEtGn6c3WVKPAvuWynK+fXQQCA==", + "requires": { + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "@algolia/client-recommendation": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.5.1.tgz", + "integrity": "sha512-GiFrNSImoEBUQICjFBEoxPGzrjWji8PY9GeMg2CNvOYcRQ0Xt0Y36v9GN53NLjvB7QdQ2FlE1Cuv/PLUfS/aQQ==", + "requires": { + "@algolia/client-common": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "@algolia/client-search": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.5.1.tgz", + "integrity": "sha512-wjuOTte9Auo9Cg4fL0709PjeJ9rXFh4okYUrOt/2SWqQid6DSdZOp+BtyaHKV3E94sj+SlmMxkMUacYluYg5zA==", + "requires": { + "@algolia/client-common": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "@algolia/logger-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.5.1.tgz", + "integrity": "sha512-ZoVnGriinlLHlkvn5K7djOUn1/1IeTjU8rDzOJ3t06T+2hQytgJghaX7rSwKIeH4CjWMy61w8jLisuGJRBOEeg==" + }, + "@algolia/logger-console": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.5.1.tgz", + "integrity": "sha512-1qa7K18+uAgxyWuguayaDS5ViiZFcOjI3J5ACBb0i/n7RsXUo149lP6mwmx6TIU7s135hT0f0TCqnvfMvN1ilA==", + "requires": { + "@algolia/logger-common": "4.5.1" + } + }, + "@algolia/requester-browser-xhr": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.5.1.tgz", + "integrity": "sha512-tsQz+9pZw9dwPm/wMvZDpsWFZgmghLjXi4c3O4rfwoP/Ikum5fhle5fiR14yb4Lw4WlOQ1AJIHJvrg1qLIG8hQ==", + "requires": { + "@algolia/requester-common": "4.5.1" + } + }, + "@algolia/requester-common": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.5.1.tgz", + "integrity": "sha512-bPCiLvhHKXaka7f5FLtheChToz0yHVhvza64naFJRRh/3kC0nvyrvQ0ogjiydiSrGIfdNDyyTVfKGdk4gS5gyA==" + }, + "@algolia/requester-node-http": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.5.1.tgz", + "integrity": "sha512-BfFc2h9eQOKu1gGs3DtQO7GrVZW/rxUgpJVLja4UVQyGplJyTCrFgkTyfl+8rb3MkNgA/S2LNo7cKNSPfpqeAQ==", + "requires": { + "@algolia/requester-common": "4.5.1" + } + }, + "@algolia/transporter": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.5.1.tgz", + "integrity": "sha512-asPDNToDAPhH0tM6qKGTn1l0wTlNUbekpa1ifZ6v+qhSjo3VdqGyp+2VeciJOBW/wVHXh3HUbAcycvLERRlCLg==", + "requires": { + "@algolia/cache-common": "4.5.1", + "@algolia/logger-common": "4.5.1", + "@algolia/requester-common": "4.5.1" + } + }, + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true + }, + "@babel/core": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", + "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + } + }, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.8" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz", + "integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==", + "dev": true, + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.8", + "@babel/types": "^7.14.8" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.2.tgz", + "integrity": "sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } + } + }, + "@babel/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + } + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", + "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, + "@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@firebase/analytics": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.4.2.tgz", + "integrity": "sha512-WCoeUAO3lP6ikHJ3/XYptV90fpTidzTS9VpAfiVQK8gl9w1zvvKSavY9U3+EVG3frOPCFdE5DBO4MYrUw4gaqw==", + "dev": true, + "requires": { + "@firebase/analytics-types": "0.3.1", + "@firebase/component": "0.1.18", + "@firebase/installations": "0.4.16", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/analytics-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.3.1.tgz", + "integrity": "sha512-63vVJ5NIBh/JF8l9LuPrQYSzFimk7zYHySQB4Dk9rVdJ8kV/vGQoVTvRu1UW05sEc2Ug5PqtEChtTHU+9hvPcA==", + "dev": true + }, + "@firebase/app": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.10.tgz", + "integrity": "sha512-USg/AbgqBERhY0LayrKmmp7pka08WPa7OlFI46kaNW1pA2mUNf/ifTaxhCr2hGg/eWI0zPhpbEvtGQhSJ/QqWg==", + "dev": true, + "requires": { + "@firebase/app-types": "0.6.1", + "@firebase/component": "0.1.18", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.1", + "dom-storage": "2.1.0", + "tslib": "^1.11.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/app-types": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz", + "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==" + }, + "@firebase/auth": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.14.9.tgz", + "integrity": "sha512-PxYa2r5qUEdheXTvqROFrMstK8W4uPiP7NVfp+2Bec+AjY5PxZapCx/YFDLkU0D7YBI82H74PtZrzdJZw7TJ4w==", + "dev": true, + "requires": { + "@firebase/auth-types": "0.10.1" + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz", + "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==" + }, + "@firebase/auth-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz", + "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==", + "dev": true + }, + "@firebase/component": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.17.tgz", + "integrity": "sha512-/tN5iLcFp9rdpTfCJPfQ/o2ziGHlDxOzNx6XD2FoHlu4pG/PPGu+59iRfQXIowBGhxcTGD/l7oJhZEY/PVg0KQ==", + "requires": { + "@firebase/util": "0.3.0", + "tslib": "^1.11.1" + } + }, + "@firebase/database": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.10.tgz", + "integrity": "sha512-Hc8zIPAroIbAoRe6xFCI5oFHubcHKoDsbYE3J5G1/BhT6DnEUSoLgx8kJ2npybVSCVyb8BvsD6swh17DGEz+0g==", + "requires": { + "@firebase/auth-interop-types": "0.1.5", + "@firebase/component": "0.1.17", + "@firebase/database-types": "0.5.2", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.0", + "faye-websocket": "0.11.3", + "tslib": "^1.11.1" + } + }, + "@firebase/database-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz", + "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==", + "requires": { + "@firebase/app-types": "0.6.1" + } + }, + "@firebase/firestore": { + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.16.4.tgz", + "integrity": "sha512-Ur+I8a8RkkbbJRsebkYAUwKFkbh9FemDxTFD/2Vp01pAPM8S3MoIcVegAfTvnPlG/ObBq5O7wI4CRA6b/G/Iyg==", + "dev": true, + "requires": { + "@firebase/component": "0.1.18", + "@firebase/firestore-types": "1.12.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.1", + "@firebase/webchannel-wrapper": "0.3.0", + "@grpc/grpc-js": "^1.0.0", + "@grpc/proto-loader": "^0.5.0", + "node-fetch": "2.6.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + } + } + }, + "@firebase/firestore-types": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.12.0.tgz", + "integrity": "sha512-OqNxVb63wPZdUc7YnpacAW1WNIMSKERSewCRi+unCQ0YI0KNfrDSypyGCyel+S3GdOtKMk9KnvDknaGbnaFX4g==", + "dev": true + }, + "@firebase/functions": { + "version": "0.4.50", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.50.tgz", + "integrity": "sha512-eBsNrUm/Jfc/xsQXmxQRSkEg6pwHlMd2hice8N90/EeqgwqS/SCvC+O9cJITLlXroAghb9jWDWRvAkDU/TOhpw==", + "dev": true, + "requires": { + "@firebase/component": "0.1.18", + "@firebase/functions-types": "0.3.17", + "@firebase/messaging-types": "0.5.0", + "isomorphic-fetch": "2.2.1", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/functions-types": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz", + "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==", + "dev": true + }, + "@firebase/installations": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.16.tgz", + "integrity": "sha512-gqv3IrBUmPWKpH8wLJ0fZcAH1NEXwQhqjqnK3cQXRcIkEARP430cmIAaj7CcPdgdemHX9HqwJG+So/yBHIYXPA==", + "dev": true, + "requires": { + "@firebase/component": "0.1.18", + "@firebase/installations-types": "0.3.4", + "@firebase/util": "0.3.1", + "idb": "3.0.2", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/installations-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", + "dev": true + }, + "@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" + }, + "@firebase/messaging": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.0.tgz", + "integrity": "sha512-PTD5pQw9QremOjiWWZYOkzcX6OKByMvlG+NQXdTnyL3kLbE01Bdp9iWhkH6ipNpHYMiwcK1RZD4TLkYVBviBsw==", + "dev": true, + "requires": { + "@firebase/component": "0.1.18", + "@firebase/installations": "0.4.16", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "0.3.1", + "idb": "3.0.2", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", + "dev": true + }, + "@firebase/performance": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.3.11.tgz", + "integrity": "sha512-L00vBUa2zzoSSOq3StTN43fPxtJ+myF+t+2kP5bQGHN5WOmf22lIsuEjAy1FAscDjVjhL1k5rKMY332ZwEfblg==", + "dev": true, + "requires": { + "@firebase/component": "0.1.18", + "@firebase/installations": "0.4.16", + "@firebase/logger": "0.2.6", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==", + "dev": true + }, + "@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "dev": true, + "requires": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", + "dev": true + } + } + }, + "@firebase/remote-config": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.27.tgz", + "integrity": "sha512-BGjmQomRKNf+yGJ/3/5Kw6zNLM5jY9oTVjLmYsQXf6U+HMgz6J2H6EVGc1bZW7YSsvak8f6DomxegQtvfvwaMw==", + "dev": true, + "requires": { + "@firebase/component": "0.1.18", + "@firebase/installations": "0.4.16", + "@firebase/logger": "0.2.6", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==", + "dev": true + }, + "@firebase/storage": { + "version": "0.3.42", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.42.tgz", + "integrity": "sha512-FqHDWZPhATQeOFBQUZPsQO7xhnGBxprYVDb9eIjCnh1yRl6WAv/OQGHOF+JU5+H+YkjsKTtr/5VjyDl3Y0UHxw==", + "dev": true, + "requires": { + "@firebase/component": "0.1.18", + "@firebase/storage-types": "0.3.13", + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/storage-types": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz", + "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==", + "dev": true + }, + "@firebase/testing": { + "version": "0.20.11", + "resolved": "https://registry.npmjs.org/@firebase/testing/-/testing-0.20.11.tgz", + "integrity": "sha512-cXu3B4NDG1HbmZby/lxaY7zAWdrhX/HzTzTkk15d3IJ0v+JlBHBWE8y8969UquoGv6fVcbTstUqMX3jgCRcfuw==", + "dev": true, + "requires": { + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.1", + "firebase": "7.18.0", + "request": "2.88.2" + }, + "dependencies": { + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "@firebase/util": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.0.tgz", + "integrity": "sha512-GTwC+FSLeCPc44/TXCDReNQ5FPRIS5cb8Gr1XcD1TgiNBOvmyx61Om2YLwHp2GnN++6m6xmwmXARm06HOukATA==", + "requires": { + "tslib": "^1.11.1" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.3.0.tgz", + "integrity": "sha512-VniCGPIgSGNEgOkh5phb3iKmSGIzcwrccy3IomMFRWPCMiCk2y98UQNJEoDs1yIHtZMstVjYWKYxnunIGzC5UQ==", + "dev": true + }, + "@google-cloud/common": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.3.2.tgz", + "integrity": "sha512-W7JRLBEJWYtZQQuGQX06U6GBOSLrSrlvZxv6kGNwJtFrusu6AVgZltQ9Pajuz9Dh9aSXy9aTnBcyxn2/O0EGUw==", + "optional": true, + "requires": { + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^6.0.0", + "retry-request": "^4.1.1", + "teeny-request": "^7.0.0" + }, + "dependencies": { + "duplexify": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz", + "integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==", + "optional": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "@google-cloud/firestore": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.2.0.tgz", + "integrity": "sha512-YCiKaTYCbXSoEvZ8cTmpgg4ebAvmFUOu3hj/aX+lHiOK7LsoFVi4jgNknogSqIiv04bxAysTBodpgn8XoZ4l5g==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^2.2.0" + } + }, + "@google-cloud/paginator": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.4.tgz", + "integrity": "sha512-fKI+jYQdV1F9jtG6tSRro3ilNSeBWVmTzxc8Z0kiPRXcj8eshh9fiF8TtxfDefyUKgTdWgHpzGBwLbZ/OGikJg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/precise-date": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-1.0.3.tgz", + "integrity": "sha512-wWnDGh9y3cJHLuVEY8t6un78vizzMWsS7oIWKeFtPj+Ndy+dXvHW0HTx29ZUhen+tswSlQYlwFubvuRP5kKdzQ==" + }, + "@google-cloud/projectify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz", + "integrity": "sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ==", + "optional": true + }, + "@google-cloud/promisify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.2.tgz", + "integrity": "sha512-EvuabjzzZ9E2+OaYf+7P9OAiiwbTxKYL0oGLnREQd+Su2NTQBpomkdlkBowFvyWsaV0d1sSGxrKpSNcrhPqbxg==", + "optional": true + }, + "@google-cloud/pubsub": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-1.7.3.tgz", + "integrity": "sha512-v+KdeaOS17WtHnsDf2bPGxKDT9HIRPYo3n+WsAEmvAzDHnh8q65mFcuYoQxuy2iRhmN/1ql2a0UU2tAAL7XZ8Q==", + "requires": { + "@google-cloud/paginator": "^2.0.0", + "@google-cloud/precise-date": "^1.0.0", + "@google-cloud/projectify": "^1.0.0", + "@google-cloud/promisify": "^1.0.0", + "@types/duplexify": "^3.6.0", + "@types/long": "^4.0.0", + "arrify": "^2.0.0", + "async-each": "^1.0.1", + "extend": "^3.0.2", + "google-auth-library": "^5.5.0", + "google-gax": "^1.14.2", + "is-stream-ended": "^0.1.4", + "lodash.snakecase": "^4.1.1", + "p-defer": "^3.0.0", + "protobufjs": "^6.8.1" + }, + "dependencies": { + "@google-cloud/paginator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz", + "integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==", + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/projectify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz", + "integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==" + }, + "@google-cloud/promisify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz", + "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==" + }, + "@grpc/grpc-js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.0.5.tgz", + "integrity": "sha512-Hm+xOiqAhcpT9RYM8lc15dbQD7aQurM7ZU8ulmulepiPlN7iwBXXwP3vSBUimoFoApRqz7pSIisXU8pZaCB4og==", + "requires": { + "semver": "^6.2.0" + } + }, + "@types/fs-extra": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz", + "integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==", + "requires": { + "@types/node": "*" + } + }, + "gaxios": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz", + "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==", + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + }, + "gcp-metadata": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz", + "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==", + "requires": { + "gaxios": "^2.1.0", + "json-bigint": "^0.3.0" + } + }, + "google-auth-library": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz", + "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==", + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^2.1.0", + "gcp-metadata": "^3.4.0", + "gtoken": "^4.1.0", + "jws": "^4.0.0", + "lru-cache": "^5.0.0" + } + }, + "google-gax": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz", + "integrity": "sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ==", + "requires": { + "@grpc/grpc-js": "~1.0.3", + "@grpc/proto-loader": "^0.5.1", + "@types/fs-extra": "^8.0.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^3.6.0", + "google-auth-library": "^5.0.0", + "is-stream-ended": "^0.1.4", + "lodash.at": "^4.6.0", + "lodash.has": "^4.5.2", + "node-fetch": "^2.6.0", + "protobufjs": "^6.8.9", + "retry-request": "^4.0.0", + "semver": "^6.0.0", + "walkdir": "^0.4.0" + } + }, + "google-p12-pem": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz", + "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==", + "requires": { + "node-forge": "^0.9.0" + } + }, + "gtoken": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz", + "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==", + "requires": { + "gaxios": "^2.1.0", + "google-p12-pem": "^2.0.0", + "jws": "^4.0.0", + "mime": "^2.2.0" + } + }, + "json-bigint": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz", + "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==", + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "@google-cloud/storage": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.1.2.tgz", + "integrity": "sha512-j2blsBVv6Tt5Z7ff6kOSIg5zVQPdlcTQh/4zMb9h7xMj4ekwndQA60le8c1KEa+Y6SR3EM6ER2AvKYK53P7vdQ==", + "optional": true, + "requires": { + "@google-cloud/common": "^3.0.0", + "@google-cloud/paginator": "^3.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.0", + "compressible": "^2.0.12", + "concat-stream": "^2.0.0", + "date-and-time": "^0.13.0", + "duplexify": "^3.5.0", + "extend": "^3.0.2", + "gaxios": "^3.0.0", + "gcs-resumable-upload": "^3.0.0", + "hash-stream-validation": "^0.2.2", + "mime": "^2.2.0", + "mime-types": "^2.0.8", + "onetime": "^5.1.0", + "p-limit": "^3.0.1", + "pumpify": "^2.0.0", + "readable-stream": "^3.4.0", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "through2": "^4.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "optional": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "optional": true, + "requires": { + "readable-stream": "3" + } + } + } + }, + "@grpc/grpc-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.3.tgz", + "integrity": "sha512-HtOsk2YUofBcm1GkPqGzb6pwHhv+74eC2CUO229USIDKRtg30ycbZmqC+HdNtY3nHqoc9IgcRlntFgopyQoYCA==", + "requires": { + "semver": "^6.2.0" + } + }, + "@grpc/proto-loader": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.5.tgz", + "integrity": "sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==", + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", + "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.0.6", + "jest-util": "^27.0.6", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", + "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/reporters": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.0.6", + "jest-config": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-resolve-dependencies": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "jest-watcher": "^27.0.6", + "micromatch": "^4.0.4", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "@jest/environment": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", + "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/fake-timers": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", + "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@sinonjs/fake-timers": "^7.0.2", + "@types/node": "*", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/globals": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", + "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/types": "^27.0.6", + "expect": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/reporters": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", + "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", + "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/test-sequencer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", + "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", + "dev": true, + "requires": { + "@jest/test-result": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-runtime": "^27.0.6" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + } + } + }, + "@jest/transform": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", + "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.0.6", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.0.6", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@sendgrid/client": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.2.3.tgz", + "integrity": "sha512-HGU/vipv5i/j4Nm/HAXCrFi7gwEuaUukfqlF8SZ4A6jtyKJfa7emV2H4dMvMO/vzqcH4E7Gl+5sDdIi9v8j88g==", + "requires": { + "@sendgrid/helpers": "^7.2.3", + "axios": "^0.19.2" + } + }, + "@sendgrid/helpers": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.2.3.tgz", + "integrity": "sha512-MMi7AtCs0uMzoYeKkyKOoONRjGDWbEYFF05d7OAohKglWFfbphE1dULHazHRQ/AnHcJFXMzb5rWL/PaDjeZwxg==", + "requires": { + "chalk": "^2.0.1", + "deepmerge": "^4.2.2" + } + }, + "@sendgrid/mail": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.2.3.tgz", + "integrity": "sha512-ZuVYzXI+3M02w6Qsu562aJXzwhoymMJ589is0yaL+Y+VMMMdM/cFlgwLcNFbmuvsRw9qBrjy5S2HpdeB5E8vtA==", + "requires": { + "@sendgrid/client": "^7.2.3", + "@sendgrid/helpers": "^7.2.3" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A==", + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", + "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.17.tgz", + "integrity": "sha512-YYlVaCni5dnHc+bLZfY908IG1+x5xuibKZMGv8srKkvtul3wUuanYvpIj9GXXoWkQbaAdR+kgX46IETKUALWNQ==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/lodash": { + "version": "4.14.159", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.159.tgz", + "integrity": "sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg==", + "dev": true + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + }, + "@types/node": { + "version": "8.10.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.60.tgz", + "integrity": "sha512-YjPbypHFuiOV0bTgeF07HpEEqhmHaZqYNSdCKeBJa+yFoQ/7BC+FpJcwmi34xUIIRVFktnUyP1dPU8U0612GOg==" + }, + "@types/node-fetch": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", + "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", + "dev": true + }, + "@types/qs": { + "version": "6.9.5", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz", + "integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.8.tgz", + "integrity": "sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA==", + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", + "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "algoliasearch": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.5.1.tgz", + "integrity": "sha512-b6yT1vWMlBdVObQipKxvt0M6SEvGetVj+FFFlo0Fy06gkdj6WCJaS4t10Q/hC3I2VG9QmpCqlK3Esgg1y1E+uw==", + "requires": { + "@algolia/cache-browser-local-storage": "4.5.1", + "@algolia/cache-common": "4.5.1", + "@algolia/cache-in-memory": "4.5.1", + "@algolia/client-account": "4.5.1", + "@algolia/client-analytics": "4.5.1", + "@algolia/client-common": "4.5.1", + "@algolia/client-recommendation": "4.5.1", + "@algolia/client-search": "4.5.1", + "@algolia/logger-common": "4.5.1", + "@algolia/logger-console": "4.5.1", + "@algolia/requester-browser-xhr": "4.5.1", + "@algolia/requester-common": "4.5.1", + "@algolia/requester-node-http": "4.5.1", + "@algolia/transporter": "4.5.1" + } + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "archiver": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", + "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", + "requires": { + "archiver-utils": "^2.1.0", + "async": "^2.6.3", + "buffer-crc32": "^0.2.1", + "glob": "^7.1.4", + "readable-stream": "^3.4.0", + "tar-stream": "^2.1.0", + "zip-stream": "^2.1.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "as-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/as-array/-/as-array-2.0.0.tgz", + "integrity": "sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-jest": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", + "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", + "dev": true, + "requires": { + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.0.6", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz", + "integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", + "integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.0.6", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + }, + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "bl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", + "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.16.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz", + "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001248", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.793", + "escalade": "^3.1.1", + "node-releases": "^1.1.73" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", + "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caniuse-lite": { + "version": "1.0.30001249", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz", + "integrity": "sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + }, + "cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", + "requires": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "char-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/char-spinner/-/char-spinner-1.0.1.tgz", + "integrity": "sha1-5upnvSR+EHESmDt6sEee02KAAIE=" + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "cjson": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.3.tgz", + "integrity": "sha1-qS2ceG5b+bkwgGMp7gXV0yYbSvo=", + "requires": { + "json-parse-helpfulerror": "^1.0.3" + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, + "cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "requires": { + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", + "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==" + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "requires": { + "colors": "1.0.3" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "compare-semver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/compare-semver/-/compare-semver-1.1.0.tgz", + "integrity": "sha1-fAp5onu4C2xplERfgpWCWdPQIVM=", + "requires": { + "semver": "^5.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "compress-commons": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", + "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^3.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "optional": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "connect-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/connect-query/-/connect-query-1.0.0.tgz", + "integrity": "sha1-3kT1dyCdokBNH8BGktGkEY5YIRk=", + "requires": { + "qs": "~6.4.0" + }, + "dependencies": { + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + } + } + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "requires": { + "buffer": "^5.1.0" + } + }, + "crc32-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", + "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "requires": { + "crc": "^3.4.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-env": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "requires": { + "cross-spawn": "^6.0.5" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "csv-streamify": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/csv-streamify/-/csv-streamify-3.0.4.tgz", + "integrity": "sha1-TLYUxX4/KZzKF7Y/3LStFnd39Ho=", + "requires": { + "through2": "2.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", + "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", + "requires": { + "readable-stream": "~2.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "csvtojson": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", + "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "lodash": "^4.17.3", + "strip-bom": "^2.0.0" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "date-and-time": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.13.1.tgz", + "integrity": "sha512-/Uge9DJAT+s+oAcDxtBhyR8+sKjUnZbYmyhbmWjTHNtX7B7oWD8YyYdeXcBRbwSj6hVvj+IQegJam7m7czhbFw==", + "optional": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "requires": { + "streamsearch": "0.1.2" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.800", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.800.tgz", + "integrity": "sha512-qagikPjZJSDWP85uWoxs32oK/xk/y3MhDZELfKRCWI7pBc0ZFlmjnXb+3+aNMaiqboeDJJa0v7CJd5cO1HKwEQ==", + "dev": true + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "optional": true + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-code": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/exit-code/-/exit-code-1.0.2.tgz", + "integrity": "sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ=" + }, + "expect": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", + "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, + "fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fecha": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", + "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "firebase": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.18.0.tgz", + "integrity": "sha512-RGq0rWX25EDsM21TjRe1FbnygJwHXL7yN4P0Zh2Z7dWrBcfJ8tQpDxgwMDtiJTuo9UYExK3py4wjgpGJBau6wg==", + "dev": true, + "requires": { + "@firebase/analytics": "0.4.2", + "@firebase/app": "0.6.10", + "@firebase/app-types": "0.6.1", + "@firebase/auth": "0.14.9", + "@firebase/database": "0.6.11", + "@firebase/firestore": "1.16.4", + "@firebase/functions": "0.4.50", + "@firebase/installations": "0.4.16", + "@firebase/messaging": "0.7.0", + "@firebase/performance": "0.3.11", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.1.27", + "@firebase/storage": "0.3.42", + "@firebase/util": "0.3.1" + }, + "dependencies": { + "@firebase/component": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.18.tgz", + "integrity": "sha512-c8gd1k/e0sbBTR0xkLIYUN8nVkA0zWxcXGIvdfYtGEsNw6n7kh5HkcxKXOPB8S7bcPpqZkGgBIfvd94IyG2gaQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.1", + "tslib": "^1.11.1" + } + }, + "@firebase/database": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.11.tgz", + "integrity": "sha512-QOHhB7+CdjVhEXG9CyX0roA9ARJcEuwbozz0Bix+ULuZqjQ58KUFHMH1apW6EEiUP22d/mYD7dNXsUGshjL9PA==", + "dev": true, + "requires": { + "@firebase/auth-interop-types": "0.1.5", + "@firebase/component": "0.1.18", + "@firebase/database-types": "0.5.2", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.1", + "faye-websocket": "0.11.3", + "tslib": "^1.11.1" + } + }, + "@firebase/util": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.1.tgz", + "integrity": "sha512-zjVd9rfL08dRRdZILFn1RZTHb1euCcnD9N/9P56gdBcm2bvT5XsCC4G6t5toQBpE/H/jYe5h6MZMqfLu3EQLXw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + } + } + }, + "firebase-admin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.0.0.tgz", + "integrity": "sha512-LP4xD+JxfEZ+e1kBIKT2kbDa9UFChwgL4488NexvTjhynNcJsKCGmawl2FMvZ2UPwXKgWBpLXJ07cYp6gk5lcw==", + "requires": { + "@firebase/database": "^0.6.0", + "@google-cloud/firestore": "^4.0.0", + "@google-cloud/storage": "^5.0.0", + "@types/node": "^10.10.0", + "dicer": "^0.3.0", + "jsonwebtoken": "^8.5.1", + "node-forge": "^0.9.1" + }, + "dependencies": { + "@types/node": { + "version": "10.17.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.28.tgz", + "integrity": "sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ==" + } + } + }, + "firebase-functions": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.13.0.tgz", + "integrity": "sha512-tnltJL5KlGtbeBD9scsVjoKTSTMeo6EAy1gsdOfRlrwAu6idgLRKYVdmw0YymS8N7SwJ3CXo+3fuvSSihKhXbA==", + "requires": { + "@types/express": "4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "lodash": "^4.17.14" + } + }, + "firebase-functions-test": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.2.1.tgz", + "integrity": "sha512-+ZaNrDoRVy0ar4NGtrYbqVTsnitL3/Ud5yC7ElZUkX3956j+AzPCcrsCfa+5GJnpnVODXkMKpw9AySFJ/12nvA==", + "dev": true, + "requires": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5" + } + }, + "firebase-tools": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-8.7.0.tgz", + "integrity": "sha512-pBl8WVbBnGKKp5pql/AD9BhmGEWajCccPeWsfwAzcdk0oJQlW0aAp1IO9c8mvamsDqdTny8PXIfm2U3iCcZpQw==", + "requires": { + "@google-cloud/pubsub": "^1.7.0", + "JSONStream": "^1.2.1", + "archiver": "^3.0.0", + "body-parser": "^1.19.0", + "chokidar": "^3.0.2", + "cjson": "^0.3.1", + "cli-color": "^1.2.0", + "cli-table": "^0.3.1", + "commander": "^4.0.1", + "configstore": "^5.0.1", + "cross-env": "^5.1.3", + "cross-spawn": "^7.0.1", + "csv-streamify": "^3.0.4", + "dotenv": "^6.1.0", + "exit-code": "^1.0.2", + "express": "^4.16.4", + "filesize": "^3.1.3", + "fs-extra": "^0.23.1", + "glob": "^7.1.2", + "google-auth-library": "^5.5.0", + "google-gax": "~1.12.0", + "inquirer": "~6.3.1", + "js-yaml": "^3.13.1", + "jsonschema": "^1.0.2", + "jsonwebtoken": "^8.2.1", + "leven": "^3.1.0", + "lodash": "^4.17.19", + "marked": "^0.7.0", + "marked-terminal": "^3.3.0", + "minimatch": "^3.0.4", + "morgan": "^1.10.0", + "open": "^6.3.0", + "ora": "^3.4.0", + "plist": "^3.0.1", + "portfinder": "^1.0.23", + "progress": "^2.0.3", + "request": "^2.87.0", + "rimraf": "^3.0.0", + "semver": "^5.7.1", + "superstatic": "^6.0.1", + "tar": "^4.3.0", + "tcp-port-used": "^1.0.1", + "tmp": "0.0.33", + "triple-beam": "^1.3.0", + "universal-analytics": "^0.4.16", + "unzipper": "^0.10.10", + "update-notifier": "^4.1.0", + "uuid": "^3.0.0", + "winston": "^3.0.0", + "ws": "^7.2.3" + }, + "dependencies": { + "@grpc/grpc-js": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.6.18.tgz", + "integrity": "sha512-uAzv/tM8qpbf1vpx1xPMfcUMzbfdqJtdCYAqY/LsLeQQlnTb4vApylojr+wlCyr7bZeg3AFfHvtihnNOQQt/nA==", + "requires": { + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "fs-extra": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz", + "integrity": "sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "gaxios": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz", + "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==", + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + }, + "gcp-metadata": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz", + "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==", + "requires": { + "gaxios": "^2.1.0", + "json-bigint": "^0.3.0" + } + }, + "google-auth-library": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz", + "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==", + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^2.1.0", + "gcp-metadata": "^3.4.0", + "gtoken": "^4.1.0", + "jws": "^4.0.0", + "lru-cache": "^5.0.0" + } + }, + "google-gax": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.12.0.tgz", + "integrity": "sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg==", + "requires": { + "@grpc/grpc-js": "^0.6.12", + "@grpc/proto-loader": "^0.5.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^3.6.0", + "google-auth-library": "^5.0.0", + "is-stream-ended": "^0.1.4", + "lodash.at": "^4.6.0", + "lodash.has": "^4.5.2", + "node-fetch": "^2.6.0", + "protobufjs": "^6.8.8", + "retry-request": "^4.0.0", + "semver": "^6.0.0", + "walkdir": "^0.4.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "google-p12-pem": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz", + "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==", + "requires": { + "node-forge": "^0.9.0" + } + }, + "gtoken": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz", + "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==", + "requires": { + "gaxios": "^2.1.0", + "google-p12-pem": "^2.0.0", + "jws": "^4.0.0", + "mime": "^2.2.0" + } + }, + "json-bigint": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz", + "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==", + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "ws": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "flat-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flat-arguments/-/flat-arguments-1.0.2.tgz", + "integrity": "sha1-m6p4Ct8FAfKC1ybJxqA426ROp28=", + "requires": { + "array-flatten": "^1.0.0", + "as-array": "^1.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isobject": "^3.0.0" + }, + "dependencies": { + "as-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/as-array/-/as-array-1.0.0.tgz", + "integrity": "sha1-KKbu6qVynx9OyiBH316d4avaDtE=", + "requires": { + "lodash.isarguments": "2.4.x", + "lodash.isobject": "^2.4.1", + "lodash.values": "^2.4.1" + }, + "dependencies": { + "lodash.isarguments": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-2.4.1.tgz", + "integrity": "sha1-STGpwIJTrfCRrnyhkiWKlzh27Mo=" + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + } + } + }, + "lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=" + } + } + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "optional": true + }, + "gaxios": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.1.0.tgz", + "integrity": "sha512-DDTn3KXVJJigtz+g0J3vhcfbDbKtAroSTxauWsdnP57sM5KZ3d2c/3D9RKFJ86s43hfw6WULg6TXYw/AYiBlpA==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + }, + "gcp-metadata": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.1.4.tgz", + "integrity": "sha512-5J/GIH0yWt/56R3dNaNWPGQ/zXsZOddYECfJaqxFWgrZ9HC2Kvc5vl9upOgUUHKzURjAVf2N+f6tEJiojqXUuA==", + "optional": true, + "requires": { + "gaxios": "^3.0.0", + "json-bigint": "^1.0.0" + } + }, + "gcs-resumable-upload": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.1.1.tgz", + "integrity": "sha512-RS1osvAicj9+MjCc6jAcVL1Pt3tg7NK2C2gXM5nqD1Gs0klF2kj5nnAFSBy97JrtslMIQzpb7iSuxaG8rFWd2A==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "configstore": "^5.0.0", + "extend": "^3.0.2", + "gaxios": "^3.0.0", + "google-auth-library": "^6.0.0", + "pumpify": "^2.0.0", + "stream-events": "^1.0.4" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz", + "integrity": "sha1-/lLvpDMjP3Si/mTHq7m8hIICq5U=" + }, + "glob-slasher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz", + "integrity": "sha1-dHoOW7IiZC7hDT4FRD4QlJPLD44=", + "requires": { + "glob-slash": "^1.0.0", + "lodash.isobject": "^2.4.1", + "toxic": "^1.0.0" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "google-auth-library": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.0.6.tgz", + "integrity": "sha512-fWYdRdg55HSJoRq9k568jJA1lrhg9i2xgfhVIMJbskUmbDpJGHsbv9l41DGhCDXM21F9Kn4kUwdysgxSYBYJUw==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^3.0.0", + "gcp-metadata": "^4.1.0", + "gtoken": "^5.0.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + } + }, + "google-gax": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.7.0.tgz", + "integrity": "sha512-0dBATy8mMVlfOBrT85Q+NzBpZ4OJZUMrPI9wJULpiIDq2w1zlN30Duor+fQUcMEjanYEc72G58M4iUVve0jfXw==", + "optional": true, + "requires": { + "@grpc/grpc-js": "~1.1.1", + "@grpc/proto-loader": "^0.5.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^3.6.0", + "google-auth-library": "^6.0.0", + "is-stream-ended": "^0.1.4", + "lodash.at": "^4.6.0", + "lodash.has": "^4.5.2", + "node-fetch": "^2.6.0", + "protobufjs": "^6.9.0", + "retry-request": "^4.0.0", + "semver": "^6.0.0", + "walkdir": "^0.4.0" + } + }, + "google-p12-pem": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.2.tgz", + "integrity": "sha512-tbjzndQvSIHGBLzHnhDs3cL4RBjLbLXc2pYvGH+imGVu5b4RMAttUTdnmW2UH0t11QeBTXZ7wlXPS7hrypO/tg==", + "optional": true, + "requires": { + "node-forge": "^0.9.0" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "gtoken": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.3.tgz", + "integrity": "sha512-Nyd1wZCMRc2dj/mAD0LlfQLcAO06uKdpKJXvK85SGrF5+5+Bpfil9u/2aw35ltvEHjvl0h5FMKN5knEU+9JrOg==", + "optional": true, + "requires": { + "gaxios": "^3.0.0", + "google-p12-pem": "^3.0.0", + "jws": "^4.0.0", + "mime": "^2.2.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "hash-stream-validation": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.3.tgz", + "integrity": "sha512-OEohGLoUOh+bwsIpHpdvhIXFyRGjeLqJbT8Yc5QTZPbRM7LKywagTQxnX/6mghLDOrD9YGz88hy5mLN2eKflYQ==", + "optional": true, + "requires": { + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "home-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/home-dir/-/home-dir-1.0.0.tgz", + "integrity": "sha1-KRfrRL3JByztqUJXlUOEfjAX/k4=" + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==" + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==", + "dev": true + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", + "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + } + } + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "is2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.1.tgz", + "integrity": "sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA==", + "requires": { + "deep-is": "^0.1.3", + "ip-regex": "^2.1.0", + "is-url": "^1.2.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", + "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", + "dev": true, + "requires": { + "@jest/core": "^27.0.6", + "import-local": "^3.0.2", + "jest-cli": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-cli": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", + "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", + "dev": true, + "requires": { + "@jest/core": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "prompts": "^2.0.1", + "yargs": "^16.0.3" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", + "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-circus": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", + "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.0.6", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", + "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.0.6", + "@jest/types": "^27.0.6", + "babel-jest": "^27.0.6", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", + "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", + "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6", + "jsdom": "^16.6.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", + "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", + "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", + "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.0.6", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", + "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", + "dev": true, + "requires": { + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-matcher-utils": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", + "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-diff": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + } + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", + "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.0.6", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + } + } + }, + "jest-mock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", + "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true + }, + "jest-resolve": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", + "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "escalade": "^3.1.1", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "resolve": "^1.20.0", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", + "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runner": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", + "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-leak-detector": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", + "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/globals": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.0.3" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", + "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", + "dev": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "natural-compare": "^1.4.0", + "pretty-format": "^27.0.6", + "semver": "^7.3.2" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-diff": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + } + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", + "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "leven": "^3.1.0", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", + "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.0.6", + "string-length": "^4.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=" + }, + "join-path": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/join-path/-/join-path-1.1.1.tgz", + "integrity": "sha1-EFNaEm0ky9Zff/zfFe8uYxB2tQU=", + "requires": { + "as-array": "^2.0.0", + "url-join": "0.0.1", + "valid-url": "^1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "optional": true, + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "requires": { + "jju": "^1.1.0" + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "jsonschema": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.6.tgz", + "integrity": "sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA==" + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "requires": { + "package-json": "^4.0.0" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=" + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=" + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.at": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz", + "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g=" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=" + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" + }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", + "requires": { + "lodash.keys": "~2.4.1" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "logform": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + } + } + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "requires": { + "es5-ext": "~0.10.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" + }, + "marked-terminal": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz", + "integrity": "sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A==", + "requires": { + "ansi-escapes": "^3.1.0", + "cardinal": "^2.1.1", + "chalk": "^2.4.1", + "cli-table": "^0.3.1", + "node-emoji": "^1.4.1", + "supports-hyperlinks": "^1.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memoizee": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", + "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "requires": { + "d": "1", + "es5-ext": "^0.10.45", + "es6-weak-map": "^2.0.2", + "event-emitter": "^0.3.5", + "is-promise": "^2.1", + "lru-queue": "0.1", + "next-tick": "1", + "timers-ext": "^0.1.5" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "dependencies": { + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/nash/-/nash-3.0.0.tgz", + "integrity": "sha512-M5SahEycXUmko3zOvsBkF6p94CWLhnyy9hfpQ9Qzp+rQkQ8D1OaTlfTl1OBWktq9Fak3oDXKU+ev7tiMaMu+1w==", + "requires": { + "async": "^1.3.0", + "flat-arguments": "^1.0.0", + "lodash": "^4.17.5", + "minimist": "^1.1.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz", + "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, + "onetime": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.1.tgz", + "integrity": "sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg==", + "optional": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "p-defer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==" + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "requires": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==", + "dev": true + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "protobufjs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.1.tgz", + "integrity": "sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": "^13.7.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "13.13.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.15.tgz", + "integrity": "sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw==" + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "optional": true, + "requires": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + }, + "dependencies": { + "duplexify": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz", + "integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==", + "optional": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", + "requires": { + "esprima": "~4.0.0" + } + }, + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "^1.0.1" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + } + } + }, + "retry-request": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.2.tgz", + "integrity": "sha512-fa4OwUcplhOYIhTm7zt6xsUfoApWo+auhvxbpPR4XLxHj0k67MhPItpCzYWzOEjtJlCH4MJ5V0qUrXiu/pOpag==", + "requires": { + "debug": "^4.1.1", + "through2": "^3.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "router": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/router/-/router-1.3.5.tgz", + "integrity": "sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g==", + "requires": { + "array-flatten": "3.0.0", + "debug": "2.6.9", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "dependencies": { + "array-flatten": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "^5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=", + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "optional": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "optional": true + }, + "superstatic": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-6.0.4.tgz", + "integrity": "sha512-Nfli9mSPa9fJloKuDeUOdqC1lcw4c4SnxiWPB8s7Yn1iYo7Ja3pj7qc8AXMqHVqn/Kf7QsxBjAeOJTpuJ0mcrQ==", + "requires": { + "as-array": "^2.0.0", + "async": "^1.5.2", + "basic-auth-connect": "^1.0.0", + "chalk": "^1.1.3", + "char-spinner": "^1.0.1", + "compare-semver": "^1.0.0", + "compression": "^1.7.0", + "connect": "^3.6.2", + "connect-query": "^1.0.0", + "destroy": "^1.0.4", + "fast-url-parser": "^1.1.3", + "fs-extra": "^0.30.0", + "glob": "^7.1.2", + "glob-slasher": "^1.0.1", + "home-dir": "^1.0.0", + "is-url": "^1.2.2", + "join-path": "^1.1.1", + "lodash": "^4.17.4", + "mime-types": "^2.1.16", + "minimatch": "^3.0.4", + "morgan": "^1.8.2", + "nash": "^3.0.0", + "on-finished": "^2.2.0", + "on-headers": "^1.0.0", + "path-to-regexp": "^1.7.0", + "router": "^1.3.1", + "rsvp": "^3.6.2", + "string-length": "^1.0.0", + "try-require": "^1.0.0", + "update-notifier": "^2.5.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "requires": { + "is-obj": "^1.0.0" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + } + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "requires": { + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", + "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", + "requires": { + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "tar-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz", + "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==", + "requires": { + "bl": "^4.0.1", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "tcp-port-used": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.1.tgz", + "integrity": "sha512-rwi5xJeU6utXoEIiMvVBMc9eJ2/ofzB+7nLOdnZuFTmNCLqRiQh2sMG9MqCxHU/69VC/Fwp5dV9306Qd54ll1Q==", + "requires": { + "debug": "4.1.0", + "is2": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "teeny-request": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.0.tgz", + "integrity": "sha512-kWD3sdGmIix6w7c8ZdVKxWq+3YwVPGWz+Mq0wRZXayEKY/YHb63b8uphfBzcFDmyq8frD9+UTc3wLyOhltRbtg==", + "optional": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.2.0", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "toxic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz", + "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==", + "requires": { + "lodash": "^4.17.10" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "try-require": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/try-require/-/try-require-1.2.1.tgz", + "integrity": "sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I=" + }, + "ts-jest": { + "version": "27.0.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.4.tgz", + "integrity": "sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "ts-node": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.0.tgz", + "integrity": "sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "0.6.1", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn-walk": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", + "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", + "dev": true + } + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "optional": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universal-analytics": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", + "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", + "requires": { + "debug": "^4.1.1", + "request": "^2.88.2", + "uuid": "^3.0.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "unzipper": { + "version": "0.10.10", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.10.tgz", + "integrity": "sha512-wEgtqtrnJ/9zIBsQb8UIxOhAH1eTHfi7D/xvmrUoMEePeI6u24nq1wigazbIFtHt6ANYXdEVTvc8XYNlTurs7A==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "update-notifier": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "requires": { + "ini": "^1.3.5" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "optional": true + }, + "v8-to-istanbul": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz", + "integrity": "sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walkdir": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz", + "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz", + "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ==", + "dev": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "winston": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.1.0", + "is-stream": "^2.0.0", + "logform": "^2.2.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + }, + "dependencies": { + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "winston-transport": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "requires": { + "readable-stream": "^2.3.7", + "triple-beam": "^1.2.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmldom": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "zip-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", + "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^2.1.1", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + } + } +} diff --git a/functions/package.json b/functions/package.json new file mode 100644 index 000000000..7b0e2b7d5 --- /dev/null +++ b/functions/package.json @@ -0,0 +1,46 @@ +{ + "name": "ld-functions", + "scripts": { + "build": "tsc", + "serve": "npm run build && firebase emulators:start --only functions,firestore", + "shell": "npm run build && firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "deploy:dev": "firebase deploy --only functions -P default", + "deploy:specific": "firebase deploy --only functions:inviteContributor -P production", + "logs": "firebase functions:log", + "test": "jest", + "test:watch": "jest --watchAll --verbose", + "------------": "Local Scripts", + "importDictionary": "ts-node scripts/import/import.ts", + "addDictionariesToIndex:dev": "tsc && node lib/functions/scripts/algolia/addDictionariesToIndex.js dev", + "addDictionariesToIndex:prod": "tsc && node lib/functions/scripts/algolia/addDictionariesToIndex.js prod", + "copyAlgoliaIndexRecords": "tsc && node lib/functions/scripts/algolia/copyAlgoliaIndexRecords.js", + "copyAlgoliaIndexSettings": "tsc && node lib/functions/scripts/algolia/copyAlgoliaIndexSettings.js" + }, + "engines": { + "node": "14" + }, + "main": "lib/functions/src/index.js", + "dependencies": { + "@sendgrid/mail": "^7.2.3", + "algoliasearch": "^4.5.1", + "firebase-admin": "^9.0.0", + "firebase-functions": "^3.13.0", + "firebase-tools": "^8.7.0" + }, + "devDependencies": { + "@firebase/testing": "^0.20.11", + "@types/jest": "^26.0.24", + "@types/node-fetch": "^2.5.7", + "commander": "^7.2.0", + "csvtojson": "^2.0.10", + "firebase-functions-test": "^0.2.1", + "jest": "^27.0.6", + "ts-jest": "^27.0.4", + "ts-node": "^10.2.0", + "tslint": "^6.1.3", + "typescript": "^3.9.7" + }, + "private": true +} diff --git a/functions/scripts/algolia/.gitignore b/functions/scripts/algolia/.gitignore new file mode 100644 index 000000000..e425a8f15 --- /dev/null +++ b/functions/scripts/algolia/.gitignore @@ -0,0 +1,2 @@ +algolia-admin-key.json +logs/* \ No newline at end of file diff --git a/functions/scripts/algolia/addDictionariesToIndex.ts b/functions/scripts/algolia/addDictionariesToIndex.ts new file mode 100644 index 000000000..9942b92fb --- /dev/null +++ b/functions/scripts/algolia/addDictionariesToIndex.ts @@ -0,0 +1,52 @@ +import { projectId, db } from '../config'; +import algoliasearch from 'algoliasearch'; + +import algoliaKeys from './algolia-admin-key.json'; +const ADMIN_KEY = algoliaKeys.adminKey; + +import { ALGOLIA_APP_ID } from './config'; +const client = algoliasearch(ALGOLIA_APP_ID, ADMIN_KEY); +const index = client.initIndex( + projectId === 'talking-dictionaries-dev' ? 'entries_dev' : 'entries_prod' +); + +import fs from 'fs'; +const iterateThroughDictionaries = async () => { + const dictionariesSnapshot = await db.collection(`dictionaries`).get(); + const dictionaryIds = dictionariesSnapshot.docs.map((doc) => doc.id); + console.log(dictionaryIds); + process.stdout.write(dictionaryIds + '\n'); + + for (const dictionaryId of dictionaryIds) { + await indexDictionary(dictionaryId); + } +}; +// iterateThroughDictionaries(); + +import { prepareDataForIndex } from '../../src/algolia/prepareDataForIndex'; +import { IEntry } from '../../../src/lib/interfaces'; + +async function indexDictionary(dictionaryId) { + const entriesSnapshot = await db.collection(`dictionaries/${dictionaryId}/words`).get(); + const entryPromises = entriesSnapshot.docs.map(async (doc) => { + const entry = await prepareDataForIndex(doc.data() as IEntry, dictionaryId); + return { ...entry, objectID: doc.id }; + }); + + const entries = await Promise.all(entryPromises); + + console.log(entries); + + // https://www.algolia.com/doc/api-reference/api-methods/add-objects/#examples + // if forced to iterate instead of save all at once, take note of the rate limiting at 5000 backlogged requests https://www.algolia.com/doc/faq/indexing/is-there-a-rate-limit/ + index + .saveObjects(entries) + .then(({ objectIDs }) => { + console.log('Entries indexed: ', objectIDs.length); + }) + .catch((err) => { + console.log(err); + }); +} + +// indexDictionary('conestoga_language'); diff --git a/functions/scripts/algolia/config.ts b/functions/scripts/algolia/config.ts new file mode 100644 index 000000000..fa61af873 --- /dev/null +++ b/functions/scripts/algolia/config.ts @@ -0,0 +1 @@ +export const ALGOLIA_APP_ID = 'XCVBAYSYXD'; diff --git a/functions/scripts/algolia/copyAlgoliaIndexRecords.ts b/functions/scripts/algolia/copyAlgoliaIndexRecords.ts new file mode 100644 index 000000000..4c7dd080e --- /dev/null +++ b/functions/scripts/algolia/copyAlgoliaIndexRecords.ts @@ -0,0 +1,14 @@ +import algoliasearch from 'algoliasearch'; +import { ALGOLIA_APP_ID } from './config'; +import algoliaKeys from './algolia-admin-key.json'; +const ADMIN_KEY = algoliaKeys.adminKey; +const client = algoliasearch(ALGOLIA_APP_ID, ADMIN_KEY); + +client.copyIndex('entries_prod', 'entries_dev').then(() => { + console.log('entry records copied'); +}); + +// const client = algoliasearch(ALGOLIA_APP_ID, process.env.ALGOLIA_ADMIN_KEY); +// "copy-algolia-prod-records-to-dev": "cross-env ALGOLIA_ADMIN_KEY=_________ node scripts/algolia/copyAlgoliaIndexRecords.js" + +// https://www.algolia.com/doc/api-reference/api-methods/copy-index/?client=javascript#examples diff --git a/functions/scripts/algolia/copyAlgoliaIndexSettings.ts b/functions/scripts/algolia/copyAlgoliaIndexSettings.ts new file mode 100644 index 000000000..7106ea557 --- /dev/null +++ b/functions/scripts/algolia/copyAlgoliaIndexSettings.ts @@ -0,0 +1,9 @@ +import algoliasearch from 'algoliasearch'; +import { ALGOLIA_APP_ID } from './config'; +import algoliaKeys from './algolia-admin-key.json'; +const ADMIN_KEY = algoliaKeys.adminKey; +const client = algoliasearch(ALGOLIA_APP_ID, ADMIN_KEY); + +client.copySettings('entries_dev', 'entries_prod').then(() => { + console.log('settings copied'); +}); diff --git a/functions/scripts/config.ts b/functions/scripts/config.ts new file mode 100644 index 000000000..5967a7a91 --- /dev/null +++ b/functions/scripts/config.ts @@ -0,0 +1,39 @@ +import { program } from 'commander'; +import admin from 'firebase-admin'; + +program + // .version('0.0.1') + .option('-e, --environment [dev/prod]', 'Firebase Project', 'dev') + .parse(process.argv); + +export const environment = program.opts().environment === 'prod' ? 'prod' : 'dev'; +export const projectId = + environment === 'prod' ? 'talking-dictionaries-alpha' : 'talking-dictionaries-dev'; + +import serviceAccountDev from '../service-account-dev.json'; +import serviceAccountProd from '../service-account-prod.json'; +const serviceAccount = environment === 'dev' ? serviceAccountDev : serviceAccountProd; + +admin.initializeApp({ + //@ts-ignore - for some reason, the object is correct but not typed properly + credential: admin.credential.cert(serviceAccount), + databaseURL: `https://${projectId}.firebaseio.com`, + storageBucket: `${projectId}.appspot.com`, +}); +export const db = admin.firestore(); +// const settings = { timestampsInSnapshots: true }; +// db.settings(settings); +export const firebase = admin; +export const timestamp = admin.firestore.FieldValue.serverTimestamp(); +export const storage = admin.storage(); + +///LOGGER/// +import fs from 'fs'; +const logFile = fs.createWriteStream(`./scripts/logs/${Date.now()}.txt`, { flags: 'w' }); // 'a' to append, 'w' to truncate the file every time the process starts. +console.log = function (data: any) { + logFile.write(JSON.stringify(data) + '\n'); + process.stdout.write(JSON.stringify(data) + '\n'); +}; +///END-LOGGER/// + +console.log(`Running on ${environment}`); diff --git a/functions/scripts/import/FLEx/FLEx-CategoryCatalogTemplate.xml b/functions/scripts/import/FLEx/FLEx-CategoryCatalogTemplate.xml new file mode 100644 index 000000000..98bf159ca --- /dev/null +++ b/functions/scripts/import/FLEx/FLEx-CategoryCatalogTemplate.xml @@ -0,0 +1,3649 @@ + + + + + + + + en + Adjective + adj + An adjective is a part of speech whose members modify nouns. An adjective specifies the attributes of a noun referent. Note: this is one case among many. Adjectives are a class of modifiers. + + Crystal 1997:8 + Mish et al. 1990:56 + Payne 1997:63 + + + + es + Adjetivo + adj + + + + + fr + Adjectif + adj + Un adjectif est un modificateur du nom. + + + + zh_CN + 形容词 + + + + + + ko + 형용사 + + + + + + fa + صفت + صفت + + + + + ru + прилагательное + прил + Прилагательное - это часть речи, члены которой модифицируют существительные. Прилагательное указывает на атрибуты референта. Примечание: Это только один случай из многих. Прилагательные являются классом модификаторов. + + + + id + Adjektiva + adj + Adjektiva adalah kelas kata yang menerangkan nomina (kata benda). Juga disebut kata sifat. Contoh: "merah", "besar", "tertinggi" + + + + + + + + en + Adposition + adp + An adposition is a part of speech whose members are of a closed set and occur before or after a complement composed of a noun phrase, noun, pronoun, or clause that functions as a noun phrase and forms a single structure with the complement to express its grammatical and semantic relation to another unit within a clause. + + Comrie 1989:91 + Crystal 1997: 305 + Mish et al. 1990:929 + Payne 1997:86 + + + + es + Adposición + adpos + + + + + fr + Adposition + adpos + + + + + zh_CN + 位置词 + 位置 + An adposition is a part of speech whose members are of a closed set and occur before or after a complement composed of a noun phrase, noun, pronoun, or clause that functions as a noun phrase and forms a single structure with the complement to express its grammatical and semantic relation to another unit within a clause. Alternate: 介词 + + + + ko + 위치사 + + + + + + fa + حرف اضافه پیشین + ح.پیش + + + + + ru + Прилог + Прилог + Прилог - часть речи, слова которой составляют замкнутое множество и встречаются перед и после дополнения, включающего именное слвосочетание, существительное, местоимение или предложение, которая функционирует как именное словсочетание и образует единую структуру с дополнением для выражения его грамматического или семантического отношения с другой языковой единицей внутри предложения. + + + + id + + + + + + + + + + en + Postposition + post + A postposition is an adposition that occurs after its complement. + + Crystal 1997:300 + Payne 1997:86 + + + + es + Postposición + post + + + + + fr + Postposition + post + + + + + zh_CN + 后置词 + 后置 + + + + + ko + 후치사 + + + + + + fa + پیوست + پیو + + + + + ru + послелог + послелог + Послелог - прилог, встречающийся после своего дополнения. + + + + id + + + + + + + + + + + en + Preposition + prep + A preposition is an adposition that occurs before its complement. + + Crystal 1997:305 + Mish et al. 1990:929 + Payne 1997:86 + + + + es + Preposición + prep + + + + + fr + Préposition + prép + + + + + zh_CN + 前置词 + 前置 + A preposition is an adposition that occurs before its complement. Alternate: 介词 + + + + ko + 전치사 + + + + + + fa + حرف اضافه + ح.اض + + + + + ru + предлог + предл + Предлог - прилог, встречающийся перед своим дополнением. + + + + id + Preposisi + prps + Preposisi adalah kata-kata yang diletakkan di depan nomina/frasa nomina untuk menyatakan hubungan antara nomina (kata benda) tersebut dan kata-kata lain di dalam kalimat. Juga disebut kata depan. Contoh : "ke", "atas", "sampai", "pada" + + + + + + + + + en + Adverb + adv + An adverb, narrowly defined, is a part of speech whose members modify verbs for such categories as time, manner, place, or direction. An adverb, broadly defined, is a part of speech whose members modify any constituent class of words other than nouns, such as verbs, adjectives, adverbs, phrases, clauses, or sentences. Under this definition, the possible type of modification depends on the class of the constituent being modified. + + Crystal 1997:11 + Mish et al. 1990:59 + Payne 1997:69 + + + + es + Adverbio + adv + + + + + fr + Adverbe + adv + Dans un sens restreint, un adverbe modifie un verbe à propos d’informations concernant le moment, le lieu, la manière ou la direction. Dans un sens plus large, un adverbe modifie n’importe quel autre constituant autre que le nom, tel qu’un verbe, un adjectif, un adverbe, un syntagme, une proposition ou une phrase. Dans cette acception, le type de modification apportée par l’adverbe dépend de la classe du constituant qui est modifié. + + + + zh_CN + 副词 + + + + + + ko + 부사 + + + + + + fa + قید + قید + + + + + ru + наречие + нареч + Наречие в узком смысле является частью речи, которая изменяет глагол в таких категориях, как время, образ действия, место или направление. Наречие в широком смысле - это часть речи, которая модифицирует любой класс непосредственных составляющих кроме существительных, а именно глаголы, прилагательные, наречия, словосочетания, клаузы или предложения. По этому определению возможный тип изменения зависит от класса изменяемой непосредственной составляющей. + + + + id + Adverbia + adv + Dalam definisi biasa, adverbia adalah kata yang menerangkan kata kerja. Dalam definisi lebih luas, adverbia menerangkan kata apa saja kecuali kata benda/nomina. Juga disebut kata keterangan. + + + + + + + + en + Classifier + clf + A classifier is a part of speech whose members express the classification of a noun. + + Crystal 1997:61 + Mish et al. 1990:246 + Payne 1997:107 + + + + es + + + + + + + fr + Classificateur + class + + + + + zh_CN + 量词 + + + + + + ko + 분류사 + + + + + + fa + توصیف‌کننده + توص + + + + + ru + Классификатор + сч.сл + Классификатор - это часть речи, члены которой выражают классификацию существительного. + + + + id + Penggolong + pnggl + Penggolong adalah kelas kata yang menjelaskan jenis/golongan kata bendanya. Juga disebut penjodoh. Contoh : "sebuah mangga", "seorang perempuan". + + + + + + + en + Noun classifier + nclf + A noun classifier is a part of speech whose members express the classification of a noun + + Cryustal 1997:61 + Mish et al. 1990:246 + Payne 1997:107 + + + + es + + + + + + + fr + Classificateur nominal + class.nom + + + + + zh_CN + + + + + + + ko + 명사분류사 + 명분 + + + + + fa + توصیف‌کنندۀ اسمی + توص.اس + + + + + ru + Классификатор + сч. сл + Классификатор - это часть речи, члены которой выражают классификацию существительного. + + + + id + + + + + + + + + + + + en + Connective + conn + Also known as a conjunction, a connective is a class of parts of speech whose members syntactically link words or larger constituents, and expresses a semantic relationship between them. A conjunction is positionally fixed relative to one or more of the elements related by it, thus distinguishing it from constituents such as English conjunctive adverbs. + + Crystal 1997:81 + Mish et al. 1990:277-278 + + + + es + + + + + + + fr + Connecteur + conn + Appelé aussi conjonction, un connecteur est une partie du discours qui lie syntaxiquement des mots ou des constituants plus vastes. La place du connecteur est fixe par rapport à un ou plusieurs des éléments qu’elle relie. + + + + zh_CN + 连词 + + + + + + ko + 연결사 + + + + + + fa + حرف ربط + ح.ربط + + + + + ru + Союз + союз + Союз - это класс частей речи, члены которых синтаксически связывают слова или группы непосредственных составляющих, и выражает семантическое отношение между ними. Союз имеет фиксированное положение относительно одного или нескольких элементов, к которым он относится, что отличает его от непосредственных составляющих, таких как соединительные наречия в английском языке. + + + + id + Konjungsi + knj + Konjungsi adalah kelas kata yang digunakan untuk menghubungkan perkataan yang setaraf, kata dengan kata/frasa, frasa dengan frasa, dan ayat dengan ayat. Juga disebut kata penghubung. + + + + + + + en + Coordinating connective + coordconn + A coordinating connective is a connective that links constituents without syntactically subordinating one to the other. + + Crystal 1997:93 + Mish et al. 1990:288 + + + + es + + + + + + + fr + Connecteur coordonnant + conn.coord + Un connecteur coordonnant est un connecteur qui relie des constituants entre eux sans établir une subordination de l’un ou de l’autre. + + + + zh_CN + + + + + + + ko + 등위연결사 + 등연 + + + + + fa + حرف ربط برابری + ح.برابر + + + + + ru + Сочинительный союз + соч.союз + Сочинительный союз - это союз, который связывает непосредственные составляющие без синтаксического подчинения одной другой. + + + + id + + + + + + + + + + en + Correlative connective + correlconn + A correlative connective is either of a pair of coordinating conjunctions (connectives) used in ordered fashion. Typically, one is used immediately before each member of a pair of constituents. + + Crystal 1997:96 + Mish et al. 1990:293 + + + + es + + + + + + + fr + Connecteur corrélatif + conn.corrél + Un connecteur corrélatif est un ensemble de deux connecteurs coordonnants qui se présupposent mutuellement et qui sont généralement placés par rapport aux constituants reliés (p.ex. en anglais « either the President or the Prime Minister »). + + + + zh_CN + + + + + + + ko + + + + + + + fa + حرف ربط جفتی + ح.جفت + + + + + ru + Парный союз + парн.союз + Парный союз является одним из пары сочинительных союзов, используемых упорядоченно. Обычно он используется непосредственно перед каждым членом пары непосредственных составляющих. + + + + id + + + + + + + + + + + + en + Subordinating connective + subordconn + A subordinating connective is a connective that links constructions by making one of them a constituent of another. The subordinating conjunction typically marks the incorporated constituent. + + Crystal 1997:370 + Mish et al. 1990:1175 + + + + es + + + + + + + fr + Connecteur subordonnant + conn.subord + Un connecteur subordonnant est un connecteur qui relie des constituants entre eux en faisant de l’un d’entre eux le constituant de l’autre. Le plus souvent, le connecteur subordonnant marque le constituant qui est incorporé dans l’autre. + + + + zh_CN + + + + + + + ko + 종속연결사 + 종연 + + + + + fa + وابستهٔ ربطی + وا.ربط + + + + + ru + Подчинительный союз + подч.союз + Подчинительный союз - это союз, который связывает конструкции, тем что делает одну из них непосредственной составляющей другой. Подчинительный союз обычно маркирует встроенную непосредственную составляющую. + + + + id + Konjungsi subordinatif + konjungsi subordinatif + Konjungsi subordinatif adalah konjungsi yang menghubungkan konstruksi tata bahasa dengan membuat satu menjadi konstituen (sebagian) dari yang lain dan juga menandai konstruksi yang konstituen. Contoh : "ketika" dalam kalimat "Kami basah kuyup ketika hujan turun." + + + + + + + en + Adverbializer + advlizer + An adverbializer is a subordinating connective that links a subordinate clause to a main clause, and indicates that the subordinate clause has an 'adverbial' or interpropositional relation to the main clause, indicating purpose, condition, time, and location. + + + + + + es + + + + + + + fr + Adverbialisateur + adverbialisateur + + + + + zh_CN + + + + + + + ko + + + + + + + fa + قیدساز + ق.ساز + + + + + ru + + + + + + + id + + + + + + + + + + + en + Complementizer + comp + A complementizer is a connective which marks a complement clause. + + Crystal 1997:75 + + + + es + + + + + + + fr + Complémenteur + compltr + Un complémenteur est un connecteur subordonnant qui marque une proposition objet. + + + + zh_CN + + + + + + + ko + 보사 + + + + + + fa + حرف توصیفی + ح.توص + + + + + ru + Изъяснительный союз + изъясн.союз + Изъяснительный союз - это союз, который маркирует изъяснительные подчинительные предложения. + + + + id + + + + + + + + + + + en + Relativizer + rel + A relativizer is a subordinating connective that links a relative clause to its head noun. It is distinguishable from a relative pronoun in that it does not have a nominal function within the relative clause. + + Payne1997:332 + + + + es + + + + + + + fr + Relativiseur + relativis + Un relativiseur est un connecteur subordonnant qui relie une proposition relative à son antécédent, mais qui se distingue d’un pronom relatif en ce qu’il n’assume aucune fonction dans la proposition relative. + + + + zh_CN + + + + + + + ko + 관계사 + 관계 + + + + + fa + حرف نسبی + ح.نس + + + + + ru + Относительный союз + отн.союз + Относительный союз - это союз, который связывает относительное придаточное с главным словом. Его следует отличать от относительного местоимения, тем что он не имеет номинативную функцию внутри относительного придаточного. + + + + id + Konjungsi relatif + konjungsi relatif + Konjungsi relatif adalah semacam konjungsi subordinatif yang menghubungkan satu klausa relatif pada satu nomina dalam klausa lain. Konjungsi relatif beda dari pronomina relatif karena tidak ada fungsi nomina dalam klausa relatifnya. Contoh : "yang" dalam kalimat "Ia melihat anjing yang kemarin pamannya pukuli." + + + + + + + + + + en + Determiner + det + A determiner is a part of speech whose members belong to a class of noun modifiers and express the reference, including quantity, of a noun. + + Crystal 1997:112 + Mish et al. 1990:346 + + + + es + + + + + + + fr + Déterminant + dét + Un déterminant est un modificateur nominal dépendant du nom. + + + + zh_CN + 限定词 + 限定 + + + + + ko + 한정사 + + + + + + fa + وابستۀ اسمی + وا.اسم + + + + + ru + Определитель + опр + Определитель - это часть речи, члены которой относятся к классу именных модификаторов, и выражает референцию на существительное, включая количество. + + + + id + + + + + + + + + + en + Article + art + An article is a member of a small class of determiners that identify a noun's definite or indefinite reference, and new or given status. + + Crystal 1997:26 + Mish et al. 1990:105 + + + + es + Artículo + art + + + + + fr + Article + art + Un article est un déterminant qui modifie le nom en apportant des précisions quant à la définitude (défini, indéfini) ou quant à la structure d’information (nouvelle, donnée). + + + + zh_CN + 冠词 + + + + + + ko + 관사 + + + + + + fa + حرف تعریف + ح.تعر + + + + + ru + Артикль + арт + Артикль является членом небольшого класса определителей, который устанавливает определённую или неопределённую референцию и новое или данное состояние. + + + + id + + + + + + + + + + en + Definite article + def + A definite article is a part of speech whose members refer to a specific, identifiable entity (or class of entities). + + Crystal 1997:107 + + + + es + Artículo definido + déf + + + + + fr + Article défini + art.déf + Un article défini est un article qui spécifie que le nom qu’il détermine est une personne ou une chose spécifique et précise. + + + + zh_CN + + + + + + + ko + 정관사 + 정관 + + + + + fa + حرف تعریف شناخته + ح.شنا + + + + + ru + Определённый артикль + опр.арт + Определённый артикль - это часть речи, члены которой указывают на особый, опознаваемый объект (или класс объектов). + + + + id + + + + + + + + + + + en + Indefinite article + indf + An indefinite article is a part of speech whose members are used to refer to an entity (or class of entities) which is not capable of specific identification. + + Crystal 1997:193 + + + + es + Artículo indefinido + indf + + + + + fr + Article indéfini + art.indéf + Un article indéfini est un article qui indique que le nom qu’il détermine n’est pas sujet à une identification spécifique et précise. + + + + zh_CN + + + + + + + ko + 부정관사 + 부관 + + + + + fa + حرف تعریف ناشناخته + ح.ناشنا + + + + + ru + Неопределённый артикль + неопр.арт + Неопределённый артикль - это часть речи, члены которой используются для указания на объект (или класс объектов), который не поддаётся идентификации. + + + + id + + + + + + + + + + + + en + Demonstrative + dem + A demonstrative is a determiner that is used deictically to indicate a referent's spatial, temporal, or discourse location. A demonstrative functions as a modifier of a noun, or a pronoun. + + Crystal 1997:312 + Mish et al. 1990:338 + + + + es + + + + + + + fr + Démonstratif + dém + Un démonstratif est un déterminant déictique indiquant la situation spatiale, temporelle ou discursive du référent. Il fonctionne comme modificateur d’un nom ou d’un pronom. + + + + zh_CN + 指示代词 + 指示代 + + + + + ko + 지시사 + + + + + + fa + اسم اشاره + ا.اش + + + + + ru + Указательное слово + указат + Указательное слово - это определитель, который используется дейктически для указания на пространственное, временное или дискурсное положение референта. Указательное слово функционирует как модификатор существительного или местоимения. + + + + id + Demonstrativa + dem + Demonstrativa adalah kelas kata yang digunakan dengan kata rujukan untuk menunjukkan tempat atau waktu yang tergantung pada konteks pembicaraan atau wacana. Contoh : "itu", "ini", "kini", "kuno", "tadi" + + + + + + + + en + Quantifier + quant + A quantifier is a determiner that expresses a referent's definite or indefinite number or amount. A quantifier functions as a modifier of a noun, or a pronoun. + + Crystal 1997:317 + Mish et al. 1990:963 + + + + es + + + + + + + fr + Quantificateur + quant + Un quantificateur est un déterminant qui précise la quantité précise ou non par laquelle le nom est défini. Il fonctionne comme modificateur d’un nom ou d’un pronom. + + + + zh_CN + + + + + + + ko + 양화사 + + + + + + fa + حرف اندازه + ح.اند + + + + + ru + Квантификатор + квантиф + Квагтификатор - это определитель, который выражает определённое или неопределённое число или количество реверентов. Квантификатор функционирует как модификатор существительного или местоимения. + + + + id + + + + + + + + + + en + Numeral + num + A numeral is a part of speech whose members function most typically as adjectives or pronouns and express a number, or relation to the number, such as one of the following: quantity, sequence, frequency, fraction. + + Hartmann and Stork 1972:155 + Pei and Gaynor 1954:149 + + + + es + + + + + + + fr + Numéral + num + Un numéral est une sous-classe de nominaux fonctionnant généralement comme adjectifs ou pronoms et exprimant un nombre ou une relation à un nombre comme par exemple une quantité, une séquence, une fréquence ou une fraction. + + + + zh_CN + 数词 + + + + + + ko + 수사 + + + + + + fa + عدد + عدد + + + + + ru + Числительное + числ + Числительное - это чать речи, члены которой функционируют главным образом как прилагательные или местоимения, и выражает число или отношение с числом, например: количество, последовательность, частота, часть. + + + + id + Numeralia + blngn + Numeralia adalah kelas kata yang digunakan untuk menyatakan jumlah atau bilangan. Juga disebut kata bilangan. Contoh : "seratus", "ribuan", "pasangan", "sekali" (1X), "kelima", "separoh", "seperempat" + + + + + + + en + Cardinal numeral + cardnum + A cardinal numeral is a numeral of the class whose members are considered basic in form, are used in counting, and are used in expressing how many objects are referred to. + + Crystal 1997:52 + Mish et al. 1990:207 + + + + es + + + + + + + fr + Numéral cardinal + num.card + Un numéral cardinal est un numéral utilisé lorsqu’on compte ou comme quantificateur exprimant à combien d’éléments on fait référence. + + + + zh_CN + + + + + + + ko + 기수사 + 기수 + + + + + fa + عدد اصلی + ع.اصل + + + + + ru + Количественное числительное + кол.числ + Количественное числительное - это числительное класса, члены которого считаются основными по форме, используются при счёте, а также используются для выражения, на сколько объектов производится референция. + + + + id + Numeralia pokok/kardinal + numeralia pokok + Numeralia pokok adalah bilangan dari kelas yang anggotanya dianggap dasar bentuknya, digunakan untuk menghitung, dan digunakan untuk mengungkapkan berapa benda yang dimaksudkan. Contoh : "satu", "dua belas", "seratus" + + + + + + + + en + Distributive numeral + distrnum + A distributive numeral is a numeral which expresses a group of the number specified. + + + + + + es + + + + + + + fr + Numéral distributif + num.distr + Un numéral distributif est in numéral qui exprime un groupe dont le nombre est précisé. + + + + zh_CN + + + + + + + ko + + + + + + + fa + عدد پخشی + ع.پخش + + + + + ru + Разделительное числительное + разд.числ + Разделительное числительное - это числительное, которое выражает группу указанного числа. + + + + id + Numeralia Penggolong + numeralia penggolong + Numeralia Penggolong adalah bilangan yang mengungkapkan satu kelompok dengan jumlah begini. Contoh : "sepasang", "segabung bunga", "setumpuk _", "sekolompok _" + + + + + + + + en + Multiplicative numeral + multipnum + A multiplicative numeral is a numeral that expresses how many fold or how many times. + + Pei and Gaynor 1954:149 + Hartmann and Stork 1972:147 + + + + es + + + + + + + fr + Numéral multiplicatif + num.mult + Un numéral multiplicatif est un numéral qui exprime le nombre de fois qu’une action est accomplie. + + + + zh_CN + + + + + + + ko + + + + + + + fa + عدد تکثیری + ع.تکث + + + + + ru + Кратное числительное + кратн.числ + Кратное числительное - это числительное, которое выражает количество раз. + + + + id + Numeralia pengganda + numeralia pengganda + Numeralia pengganda adalah kata yang menjelaskan berapa kali atau berapa kali lipat. Contoh : "sekali" (satu kali), "panca" + + + + + + + + en + Ordinal numeral + ordnum + An ordinal numeral is a numeral belonging to a class whose members designate positions in a sequence. + + Crystal 1997:272 + Mish et al. 1990:831 + + + + es + + + + + + + fr + Numéral ordinal + num.ord + Un numéral ordinal est un numéral désignant un rang tenu dans une séquence et fonctionnant comme un adjectif. + + + + zh_CN + + + + + + + ko + 서수사 + 서수 + + + + + fa + عدد ترتیبی + ع.ترتیب + + + + + ru + Порядковое числительное + пор.числ + Порядковое числительное - это числительное, относящееся к классу, члены которого указыват на позицию в последовательности. + + + + id + Numeralia tingkat + numeralia tingkat + Numeralia tingkat adalah bilangan yang menunjuk pada posisi dalam urutan. Contoh : "pertama", "kedua" + + + + + + + + en + Partitive numeral + partnum + A partitive numeral is a numeral that expresses a fraction. + + Pei and Gaynor 1954:149 + Hartmann and Stork 1972:165 + + + + es + + + + + + + fr + Numéral fractionnaire + num.fract + Un numéral fractionnaire est un numéral exprimant une fraction. + + + + zh_CN + + + + + + + ko + + + + + + + fa + عدد بخشی + ع.بخش + + + + + ru + Дробное числительное + дробн.числ + Дробное числительное - это числительное, которое выражает дробь. + + + + id + Numeralia partitif + numeralia partitif + Numeralia partitif adalah bilangan yang mengungkapkan pecahan. Contoh : "sebelah", "sepotong", "seperempat" + + + + + + + + + + + en + Existential marker + existmrkr + An existential marker is a part of speech whose members are found in distinct clause types and which mark a referent's existence. + + Crystal 1997:142 + + + + es + + + + + + + fr + Marqueur existentiel + marq.exist + + + + + zh_CN + + + + + + + ko + + + + + + + fa + نشانۀ وجودی + ن.وجود + + + + + ru + Экзистеницальный маркер + экз.марк + Экзистеницальный маркер - это часть речи, членов которой можно найти в определённых типах придаточных, и которые маркируют существование референта. + + + + id + + + + + + + + + + + en + Expletive + expl + An expletive (also known as a dummy word) is a part of speech whose members have no meaning, but complete a sentence to make it grammatical. + + Crystal 1997:127 + Mish et al. 1990:437 + + + + es + + + + + + + fr + Explétif + expl + Un explétif est un terme vide de sens mais qui est nécessaire au sens de l’expression (p.ex. en français « la ville DE Paris », ou « ce train est plus rapide que je NE pensais » où « de » et « ne » n’ont pas de sens mais sont exigés par la construction) + + + + zh_CN + + + + + + + ko + 허사 + + + + + + fa + تکمیل‌کننده + تکمیل + + + + + ru + Формальное слово + форм.сл + Формальное слово (известное также как пустое слово) - это часть речи, члены которой не имеют значения, но заполняют предложение, чтобы сделать его грамматически правильным. + + + + id + + + + + + + + + + + en + Interjection + interj + An interjection is a part of speech, typically brief in form, such as one syllable or word, whose members are used most often as exclamations or parts of an exclamation. An interjection, typically expressing an emotional reaction, often with respect to an accompanying sentence, is not syntactically related to other accompanying expressions, and may include a combination of sounds not otherwise found in the language. + + Crystal 1997:200 + + + + es + Interjección + interj + + + + + fr + Interjection + interj + Une interjection est une partie du discours, généralement de forme brève (p.ex. une syllabe [Zut !], un mot [Ciel !]), indécomposable en morphèmes distincts, et qui est utilisée pour exprimer une réaction affective vive du locuteur. De façon générale, l’interjection n’est reliée syntaxiquement à aucun élément d’une phrase, mais forme à elle seule une phrase. Il n’est pas rare que certains sons ou certaines combinaisons de sons soient propres aux interjections. + + + + zh_CN + 感叹词 + 感叹 + + + + + ko + 감탄사 + + + + + + fa + واژۀ شگفت نما + شگفت + + + + + ru + Междометие + межд + Междометие - это часть речи, обычно краткая по форме, такое как слог или слово, члены которой чаще всего используются в качестве восклицаний или части восклицания. Междометие, обычно выражающее эмоциональную реакцию, часто в связи с сопровождаемым предложением, синтаксически не связано с другими членами предложения, и может содержать сочетания звуков больше не встерчающихся в данном языке. + + + + id + Interjeksi + intrj + Interjeksi adalah kelas kata yang digunakan untuk menyatakan perasaan pembicara. Interjeksi biasanya pendek, dan tidak berkaitan dengan kalimat terdekat secara sintaksis. Kadang-kadang mengandung bunyi yang tidak terdapat dalam fonologi bahasanya. Juga disebut kata seru. Contoh : "wah!" "aduh!" + + + + + + + + en + Noun + n + A noun is a broad classification of parts of speech which include substantives and nominals. + + Crystal 1997:371 + Mish et al. 1990:1176 + + + + es + Nombre + sus + + + + + fr + Nom + n + + + + + zh_CN + 名词 + + + + + + ko + 명사 + + + + + + fa + اسم + اسم + + + + + ru + существительное + сущ + Существительное является широкой классификацией частей речи, которая включает имена нарицательные и собственные. + + + + id + Nomina + n + Nomina adalah kelas kata yang mencakup benda, tempat, orang, dan binatang. Termasuk juga banyak konsep abstrak, mis. kehidupan, perkiraan, pembunuhan. Juga disebut kata nama atau kata benda. + + + + + + + en + Nominal + nom + A nominal is a part of speech whose members differ grammatically from a substantive but which functions as one. + + Crystal 1997:260 + Mish et al. 1990:801 + + + + es + Nominal + nom + + + + + fr + Nominal + nom + Un nominal est un constituant syntaxique caractérisé par ses latitudes de fonctions. Selon ce critère on distingue les noms (ainsi que les pronoms et les syntagmes nominaux), capables en particulier d’assumer les fonctions de sujet et d’objet, et les adjectifs, assumant celle de déterminant du nom. Dans bien des langues le nominal a aussi un certain nombre de caractéristiques morphologiques. (Dans la terminologie française, « nominal » est plus vaste que nom, et comporte les nominaux substantifs ou noms, les nominaux adjectifs ou adjectifs, ainsi que les syntagmes nominaux et les pronoms.) + + + + zh_CN + + + + + + + ko + + + + + + + fa + اسمی + اسمی + + + + + ru + Имя + имя + + + + + id + + + + + + + + + + en + Gerund + ger + A part of speech derived from a verb and used as a noun, usually restricted to non-finite forms of the verb. + + Crystal 1997: 279 + + + + es + + + + + + + fr + Gérundif + ger + + + + + zh_CN + + + + + + + ko + 동명사 + + + + + + fa + اسم فعل + ا.فعل + + + + + ru + + + + + + + id + + + + + + + + + + + + en + Proper Noun + nprop + Proper noun, also referred to as proper names, is the class of nouns that are used to address particular persons or culturally significant personages or places. They refer to specific entities and are not usually with articles, modifiers, or possessors. + + Payne 1997:39 + + + + es + + + + + + + fr + Nom propre + n.pr + Les noms propres constituent une sous-classe de noms qui ne s’appliquent qu’à un être ou une chose pris en particulier (prénom, nom de famille, de dynastie, de peuple ; nom géographique de pays, de région, de lieu, de cours d’eau, de montagne, etc.) + + + + zh_CN + 专有名词 + 专有名 + + + + + ko + 고유명사 + 고명 + + + + + fa + اسم خاص + ا.خاص + + + + + ru + Имя собственное + собств + Имя собственное - это класс существительных, который используется для адресации к отдельному человеку или важному для культуры персонажу или месту. Они указывают на специфические характеристики и обычно используются без артиклей, атрибутов или притяжательных слов. + + + + id + + + + + + + + + + + en + Substantive + subs + A substantive is a member of the syntactic class in which the names of physical, concrete, relatively unchanging experiences are most typically found whose members may act as subjects and objects, and most of whose members have inherently determined grammatical gender (in languages which inflect for gender). + + Crystal 1997:264 + Mish et al. 1990:808 + Givon 1984:51-52 + Payne 1997:33 + + + + es + + + + + + + fr + Substantif + subst + + + + + zh_CN + + + + + + + ko + 실사 + + + + + + fa + ذاتی + ذات + + + + + ru + + + + + + + id + + + + + + + + + + + + en + Participle + ptcp + A participle refers to non-finite forms of verbs other than infinitive. In some uses it is restricted to those forms that are used as an adjective. + + Crystal 2008:352 + + + + es + + + + + + + fr + Participe + part + Un participe est une forme impersonnelle du verbe distincte de l’infinitif. Généralement on réserve ce terme à des formes verbales utilisées comme adjectifs. + + + + zh_CN + + + + + + + ko + 분사 + + + + + + fa + صفت فعلی + ص.فعل + + + + + ru + Причастие + прич + Причастие - это неличная форма глагола на ряду с инфинитивом. Иногда используется только в адъективной форме. + + + + id + + + + + + + + + + + en + Particle + prt + A particle is a part of speech whose members do not belong to one of the main classes of words, is invariable, and typically has grammatical or pragmatic meaning. + + + + + + es + + + + + + + fr + Particule + partic + Une particule est une partie du discours qui n’appartient pas aux classes majeures de mot, qui est invariable et qui a généralement un sens grammatical ou pragmatique. + + + + zh_CN + 小品词 + + A particle is a word that does not belong to one of the main classes of words, is invariable, and typically has grammatical or pragmatic meaning. Alternate labels: 助词 or 虚词 + + + + ko + 조사 + + + + + + fa + لفظ + لفظ + + + + + ru + Частица + част + Частица - это часть речи, члены которой не относятся к одному из главных классов слов, не имеют словоизменения, и обычно имеют грамматическое или прагматическое значение. + + + + id + Partikel + partikel + Partikel adalah kata yang 1) tidak termasuk kelas kata utama, 2) bentuknya tidak bervariasi dan 3) biasanya mempunyai makna gramatikal atau pragmatik. Contoh : "tidak", "O", "deh" + + + + + + + en + Nominal particle + nomprt + A nominal particle is a member of a closed class of particles that co-occur with nouns. + + + + + + es + + + + + + + fr + Particule nominale + partic.nom + Une particule nominale est une particule qui modifie un nominal. + + + + zh_CN + + + + + + + ko + + + + + + + fa + لفظ اسمی + ل.اسم + + + + + ru + Номинативная частица + ном.част + Номинативная частица - слен замкнутого класса частиц, которые встерчаются с существительными. + + + + id + + + + + + + + + + + en + Question particle + q + A question particle is a part of speech whose members signal a yes/no question. + + Payne 1997:296 + + + + es + + + + + + + fr + Particule interrogative + partic.interr + Un particule interrogative est une particule indiquant une question polaire (réponse par oui ou par non). + + + + zh_CN + 疑问助词 + 疑问 + + + + + ko + 의문조사 + 의조 + + + + + fa + لفظ پرسشی + ل.پرس + + + + + ru + Вопросительная частица + вопр + Вопросительная частица - это часть речи, члены которой указывают на общий вопрос. + + + + id + + + + + + + + + + + en + Verbal particle + verbprt + A verbal particle is a member of a closed class of particles which co-occur with some verbs to form phrasal verbs. In some languages, verbal particles are identical to certain adpositions. + + + + + + es + + + + + + + fr + Particule verbale + partic.verb + Une particule verbale est une particule qui modifie un verbe. Dans certaines langues, les particules verbales sont identiques à certaines adpositions. + + + + zh_CN + + + + + + + ko + + + + + + + fa + لفظ فعلی + ل.فعل + + + + + ru + Глагольная частица + гл.част + Глагольная частица является членом замкнутого класса частиц, которые встречаются с некоторыми глаголами, образуя фразовые глаголы. В некоторых языках глагольные частицы совпадают с некоторыми прилогами. + + + + id + + + + + + + + + + + + en + Prenoun + prenoun + An element which may be compounded to the front of a noun to signal information such as size, color, etc.. + + Valentine 2001: 152-154 + + + + es + + + + + + + fr + + + + + + + zh_CN + + + + + + + ko + + + + + + + fa + پیش اسم + پ.اسم + + + + + ru + + + + + + + id + + + + + + + + + + + en + Preverb + preverb + An element which may be compounded to the front of a verb, to signal information such as tense, direction, etc.. + + Valentine 2001: 154-158 + + + + es + + + + + + + fr + + + + + + + zh_CN + + + + + + + ko + + + + + + + fa + پیش فعل + پ.فعل + + + + + ru + + + + + + + id + + + + + + + + + + + en + Pro-form + pro-form + A pro-form is a part of speech whose members usually substitute for other constituents, including phrases, clauses, or sentences, and whose meaning is recoverable from the linguistic or extralinguistic context. + + Schachter 1985:24-25 + Crystal 1997:310 + + + + es + + + + + + + fr + Proforme + proforme + + + + + zh_CN + + + + + + + ko + + + + + + + fa + شکل تابع + تابع + + + + + ru + Местоименное слово + + Местоименное слово - часть речи, слова которой обычно замещают другие непосредственные составляющие, включая словосочетания, клаузы или предложения, и смысл которых восстанавливается из лингвистического или экстралингвистического контекста. + + + + id + + + + + + + + + + en + Interrogative pro-form + interrog + An interrogative pro-form is a pro-form that is used in questions to stand for the item questioned. + + + + + + es + + + + + + + fr + Pronom interrogatif + pron.int + Une proforme interrogatif (pronom interrogatif) est une proforme (un pronom) remplaçant le terme sur lequel porte l’interrogation [Qui a-t-il vu ? Que voit-il ? Où va-t-il ?, etc.]. + + + + zh_CN + + + + + + + ko + + + + + + + fa + + + + + + + ru + Вопросительное местоименное слово + вопр + Вопросительное местоименное слово - это местоименное слово, которое используется в вопросительных предложениях, заменяя элемент, о котором задаётся вопрос. + + + + id + Pronomina tanya + pronomina tanya + Pronomina tanya adalah kata yang digunakan dalam pertanyaan sebagai pengganti bagi hal yang ditanyakan. Contoh : "apa", "siapa", "kapan" + + + + + + + + en + Pro-adjective + pro-adj + A pro-adjective is a pro-form that substitutes for an adjective or adjective phrase. + + + + + + es + + + + + + + fr + + + + + + + zh_CN + + + + + + + ko + + + + + + + fa + + + + + + + ru + + + + + + + id + + + + + + + + + + + en + Pro-adverb + pro-adv + A pro-adverb is a pro-form that substitutes for an adverb or other expression having an adverbial function. + + + + + + es + + + + + + + fr + + + + + + + zh_CN + + + + + + + ko + + + + + + + fa + + + + + + + ru + + + + + + + id + + + + + + + + + + + en + Pronoun + pro + A pronoun is a pro-form which functions like a noun and substitutes for a noun or noun phrase. + + Crystal 1997:312 + Mish et al. 1990:942 + + + + es + Pronombre + pro + + + + + fr + Pronom + pron + Un pronom se substitue à un nominal (nom ou syntagme nominal). + + + + zh_CN + 代词 + + + + + + ko + 대명사 + 대명 + + + + + fa + ضمیر + ضمیر + + + + + ru + местоимение + мест + Местоимение является местоименным словом, которое функционирует как существительное и замещает существительное или именное словосочетание. + + + + id + Pronomina + pro + Pronomina adalah kelas kata yang menggantikan nomina atau frasa nomina dalam kalimat. Juga disebut kata ganti (orang). Contoh: "dia", "saya", "mereka". + + + + + + + en + Indefinite pronoun + indfpro + An indefinite pronoun is a pronoun that belongs to a class whose members indicate indefinite reference. + + Crystal 1997: 312 + Mish et al. 1990:612 + + + + es + Pronombre indefinido + indf + + + + + fr + Pronom indéfini + pron.indéf + Un pronom indéfini est un pronom qui exclut toute référence à un élément antérieur ou à un élément précis de la situation. + + + + zh_CN + 人称代词 + 人称代 + + + + + ko + 부정대명사 + 부대 + + + + + fa + ضمیر ناشناخته + ض.ناشن + + + + + ru + Неопределённое местоимение + неопр.мест + Неопределённое местоимение - этот местоимение, которое относится к классу, члены которого обозначают неопределённую референцию. + + + + id + + + + + + + + + + + en + Personal pronoun + pers + A personal pronoun is a pronoun that expresses a distinction of person deixis. + + Mish et al. 1990:878 + + + + es + Pronombre personal + pers + + + + + fr + Pronom personnel + pron.pers + Un pronom personnel est un pronom se référant aux participants impliqués dans la communication (locutif ou 1ère personne, allocutif ou 2ème personne) ainsi qu’aux référents externes à la communication (délocutif ou 3ème personne). + + + + zh_CN + 人称代词 + 人称代 + + + + + ko + 인칭대명사 + 인대 + + + + + fa + ضمیر شخصی + ض.شخص + + + + + ru + Личное местоимение + личн.мест + Личное местоимение - это местоимение, которое выражает отличие в дейксисе лица. + + + + id + + + + + + + + + + en + Emphatic pronoun + emph + An emphatic pronoun is a personal pronoun that is used to emphasize its referent. + + + + + + es + + + + + + + fr + Pronom emphatique + pron.emph + Un pronom emphatique est un pronom personnel renvoyant avec emphase à son référent. + + + + zh_CN + + + + + + + ko + 강세대명사 + 강대 + + + + + fa + ضمیر تأکیدی + ض.تأک + + + + + ru + Эмфатическое местоимение + эмф.мест + Эмфатическое местоимение - это личное местоимение, которое используется для акцентирования его референта. + + + + id + + + + + + + + + + + en + Possessive pronoun + poss + A possessive pronoun is a pronoun that expresses ownership and relationships like ownership, such as kinship, and other forms of association. + + Crystal 1997:312 + Mish et al. 1990:918 + + + + es + pronombre posesivo + pos + + + + + fr + Pronom possessif + pron.poss + Un pronom possessif est un pronom qui indique que le nom auquel il s’adjoint est dans une relation d’« appartenance » au sens large (possession [ton pantalon], relation de parenté [ton père], association [ton professeur, ton élève], affectation [ta maladie]). + + + + zh_CN + 物主代词 + 物主 + A possessive pronoun is a pronoun that expresses ownership and relationships like ownership, such as kinship and other forms of association. Alternate: 属领 + + + + ko + 소유대명사 + 소대 + + + + + fa + ضمیر ملکی + ض.ملکی + + + + + ru + Притяжательное местоимение + прит.мест + Притяжательное местоимение - это местоимение, которое выражает владение чем-либо или отношения подобные владению, такие как родство и другие формы связи. + + + + id + Pronomina posesif (kepemilikan) + milik + Pronomina posesif adalah kelas kata yang menyatakan kepemilikan atau hubungan. Contoh : "negara mereka", "saudara saya". + + + + + + + + en + Reflexive pronoun + refl + A reflexive pronoun is a pronoun that has coreference with the subject. + + Mish et al. 1990:990 + + + + es + pronombre reflexivo + pro.refl + + + + + fr + Pronom réfléchi + pron.réfl + Un pronom réfléchi est un pronom en position d’objet indiquant qu’il y a coréférence avec le sujet [Pierre se lave]. + + + + zh_CN + + + + + + + ko + 재귀대명사 + 재대 + + + + + fa + ضمیر بازتابی + ض.باز + + + + + ru + Возвратное местоимение + возвр.мест + Возвратное местоимение - это местоимение, которое имеет кореференцию на субъект. + + + + id + + + + + + + + + + + + en + Reciprocal pronoun + recp + A reciprocal pronoun is a pronoun that expresses a mutual feeling or action among the referents of a plural subject. + + Crystal 1997:323 + Mish et al. 1990:982 + + + + es + + + + + + + fr + Pronom réciproque + pron.réc + Un pronom réciproque indique que chacun des référents présuppose l’autre et vice versa [Pierre et Paul se battent]. + + + + zh_CN + + + + + + + ko + 상호대명사 + 상대 + + + + + fa + ضمیر دوسویه + ض.دوسو + + + + + ru + Взаимное местоимение + взаимн.мест + Взаимное местоимение - это местоимение, которое выражает взаимное чувство или действие среди референтов множественного субъекта. + + + + id + + + + + + + + + + + en + Relative pronoun + relpro + A relative pronoun is a pronoun that marks a relative clause, functions grammatically within the relative clause, and is coreferential to the word modified by the relative clause. + + Crystal 1997:329 + + + + es + Pronombre relativo + rel + + + + + fr + Pronom relatif + pron.rel + Un pronom relatif indique qu’il y a une relation entre le nom ou le pronom qu’il représente (appelé « antécédent ») et une proposition subordonnée dite relative dans laquelle il assume une fonction syntaxique. + + + + zh_CN + + + + + + + ko + 관계대명사 + 관대 + + + + + fa + ضمیر نسبی + ض.نسب + + + + + ru + Относительное местоимение + относ.мест + Относительное местоимение - это местоимение, которое маркирует относительное придаточное, грамматически функционирует внутри относительного придаточного и имеет кореференцию на слово, которое модифицируется относительным придаточным предложением. + + + + id + Pronomina relatif + prrlt + Pronomina relatif adalah pronomina yang menandakan klausa relatif. Tidak terdapat dalam Bahasa Indonesia tetapi fungsinya mirip dengan kata "yang". Lihat kata "who" dalam Bahasa Inggris dalam konteks tertentu : "He is the one who owes me money." + + + + + + + + + + en + Verb + v + A verb is a part of speech whose members typically signal events and actions; constitute, singly or in a phrase, a minimal predicate in a clause; govern the number and types of other constituents which may occur in the clause; and, in inflectional languages, may be inflected for tense, aspect, voice, modality, or agreement with other constituents in person, number, or grammatical gender. + + Crystal 1997:409 + Mish et al. 1990:1309 + Givon 1984:52 + Payne 1997:47 + + + + es + Verbo + v + "Verbo" típicamente significa palabras de acción. + + Alvarez 1905:103 + + + + fr + Verbe + v + Un verbe est une partie du discours caractérisée syntaxiquement par sa fonction de prédicat. En tant que tel, il gouverne la structure argumentale de la proposition, c’est-à-dire le nombre d’arguments possibles. Dans les langues flexionnelles, il peut être fléchi en ce qui concerne le temps, l’aspect, la voix ou le mode ; il peut aussi être en accord avec d’autres constituants en ce qui concerne la personne, le nombre ou le genre. Du point de vue sémantique, il désigne généralement des événements et des actions ou encore des états. + + + + zh_CN + 动词 + + + + + + + + ko + 동사 + + + + + + fa + فعل + فعل + + + + + ru + Глагол + гл + Глагол - это часть речи, члены которой типично обозначают события и действия; составляет самостоятельно или в словосочетании минимальный предикат предложения; управляет определённым количеством и типами других непосредственных составляющих, которые могут встретиться в предложении; во флективных языках может изменяться по времени, виду, залогу, модальности или согласовываться с другими непосредственными составляющими по лицу, числу или грамматическому роду. + + + + id + Verba + v + Biasanya verba adalah kelas kata yang merujuk kepada perbuatan yang dikerjakan atau keadaan yang sedang berlangsung. Juga disebut kata kerja. Contoh : "membunuh", "dibunuh", "tinggal", "berwarna", "berada", "terlupakan" + + + + + + + en + Copulative verb + cop + A type of verb, eg, 'seem' and 'appear' + + + + + + es + + + + + + + fr + Verbe copulatif + v.cop + Un verbe copulatif est un verbe qui gouverne un adjectif ou un syntagme nominal attributif (p.ex. devenir [il est devenu un grand chef d’état], sembler [il semble fatigué], paraître [il paraît bête], rester [il reste seul], etc.). + + + + zh_CN + + + + + + + ko + 계사 + + + + + + fa + فعل ربطی + ف.ربطی + + + + + ru + глагол-связка + гл.-связ + Тип глагола, например, 'казаться' и 'появляться' + + + + id + + + + + + + + + + + en + Ditransitive verb + vd + A ditransitive verb is a verb that takes two objects. + + Crystal 1997:397 + + + + es + Verbo bitransitivo + vb + + + + + fr + Verbe bitransitif + v.bi-tr + Un verbe bitransitif est un verbe qui prend deux arguments objet en plus de l’argument sujet, donc un verbe de valence 3. + + + + zh_CN + 双宾语动词 + 双宾语 + + + + + ko + + + + + + + fa + فعل متعدی دو مفعولی + ف.دو.مف + + + + + ru + Дитранзитивный глагол + дитр.гл + Дитранзитивный глагол - это глагол, который управляет двумя дополнениями. + + + + id + Verba dwitransitif + verba dwitransitif + Verba dwitransitif adalah verba yang ada dua objek. + + + + + + + + en + Intransitive verb + vi + An intransitive verb is a verb that cannot take a direct object, and describes a property, state, or situation involving only one participant. + + Crystal 1997:397 + Payne 1997:171 + + + + es + Verbo intransitivo + vi + + + + + fr + Verbe intransitif + v.i + Un verbe intransitif est un verbe qui n’accepte pas d’objet direct, mais uniquement l’argument sujet, donc un verbe de valence 1. Sémantiquement il désigne en général une propriété, un état ou une situation n’impliquant qu’un participant unique. + + + + zh_CN + 不及物动词 + 不及物动 + + + + + ko + 자동사 + + + + + + fa + فعل لازم + ف.لازم + + + + + ru + Непереходный глагол + vi + Непереходный глагол - это глагол, который не может управлять прямым дополнением и описывает владение, состояние или ситуацию только с одним участником. + + + + id + Verba intransitif + vtt + Verba intransitif hanya menyebut perbuatan atau keadaan di mana ada subjek saja. Tidak mungkin ada objek. Contoh : "berdiri", "tersenyum", "berwarna". + + + + + + + + en + Transitive verb + vt + A transitive verb is a verb that takes a direct object, and describes a relation between two participants. + + Crystal 1997:397 + Mish et al. 1990:1254 + Payne 1997:171 + + + + es + Verbo transitivo + vt + + + + + fr + Verbe transitif + v.tr + Un verbe transitif est un verbe qui prend un argument objet en plus de l’argument sujet, donc un verbe de valence 2. Typiquement, du point de vue sémantique, il indique une relation entre deux participants. + + + + zh_CN + 及物动词 + 及物动 + + + + + ko + 타동사 + + + + + + fa + فعل متعدی + ف.متع + + + + + ru + Переходный глагол + vt + Переходный глагол - это глагол, который управляет прямым дополнением и описывает отношением между двумя участниками. + + + + id + Verba transitif + vt + Verba transitif memiliki subjek dan satu atau dua objek. Contoh: "membuka", "membukakan", "berdasarkan" + + + + + + \ No newline at end of file diff --git a/functions/scripts/import/FLEx/FLEx-SFM-convert.md b/functions/scripts/import/FLEx/FLEx-SFM-convert.md new file mode 100644 index 000000000..fcb093751 --- /dev/null +++ b/functions/scripts/import/FLEx/FLEx-SFM-convert.md @@ -0,0 +1,19 @@ +## Convert to key-value pairs + +Find: `\\(\S*) (.*)` +Replace: `$1: "$2",` + +## Make each entry a separate object + +`\n\n` +`},\n{` + +## Turn the data into an array and surround with brackets not added in previous find-replace + +export const data = [{}] + +Converted single ph_Tor_IPA into ph +converted single lc (citation form) into note: Citation form ... +Made lexeme with two xv_Tor into one field with a | between them + +Find ending whitespace (?!:)[\S] " diff --git a/functions/scripts/import/FLEx/abbreviate-pos.ts b/functions/scripts/import/FLEx/abbreviate-pos.ts new file mode 100644 index 000000000..d3b78f9da --- /dev/null +++ b/functions/scripts/import/FLEx/abbreviate-pos.ts @@ -0,0 +1,34 @@ +import { partsOfSpeech } from '../../../../src/lib/mappings/parts-of-speech'; + +// export interface IMatchResult { +// matchedPOS?: string; +// unMatchedPOS?: string; +// } + +export const abbreviateTDPartOfSpeech = (input: string): string => { + // save any notes in parentheses + // const parentheticalNote = input.match(/\(.+\)/); + + const sanitizedInput = input + .replace(/\(.+\)/, '') // remove notes in parentheses + .trim() + .toLowerCase() + .replace(/[.]$/, '') // removes word-final periods + .replace(/:/g, ''); // removes random colons in old TD data + const matchingPOS = partsOfSpeech.find((part) => { + //TODO, possibly more efficient just to return enAbbrev and not whole part object + return ( + part.enName === sanitizedInput || + part.esName === sanitizedInput || + part.enAbbrev === sanitizedInput || + part.esAbbrev === sanitizedInput || + (part.tdAlternates && part.tdAlternates.includes(sanitizedInput)) + ); + }); + if (matchingPOS) { + return matchingPOS.enAbbrev; + } else { + console.log('unmatched: ', input); + return null; + } +}; diff --git a/functions/scripts/import/FLEx/convert-flex.test.ts b/functions/scripts/import/FLEx/convert-flex.test.ts new file mode 100644 index 000000000..d03a777b5 --- /dev/null +++ b/functions/scripts/import/FLEx/convert-flex.test.ts @@ -0,0 +1,15 @@ +// import { data } from './Babanki-Kejom'; **Note that data files aren't in this repo** +import { convertFLExToLDFormat } from './convert-flex'; + +test.skip('Convert Babanki', async () => { + const entries = convertFLExToLDFormat([]); + // const entries = convertFLExToLDFormat(data); + entries.length /*?*/; + // console.log(entries); +}); + +// test('parts of speech are mapped correctly', () => { +// expect(matchPartsOfSpeech('Adverb')).toBe('adv'); +// expect(matchPartsOfSpeech('pro indef')).toBe('indfpro'); +// expect(matchPartsOfSpeech('con')).toBe('con'); +// }) diff --git a/functions/scripts/import/FLEx/convert-flex.ts b/functions/scripts/import/FLEx/convert-flex.ts new file mode 100644 index 000000000..d2ce8f0ed --- /dev/null +++ b/functions/scripts/import/FLEx/convert-flex.ts @@ -0,0 +1,74 @@ +// import { data } from "./Babanki-Kejom"; + +import type { IEntry } from '../../../../src/lib/interfaces'; + +interface IFLExData { + lx: string; + lx_Bab: string; // ignore as only 8 entries have a different lx_Bab than lx and these only leave off the suffix or prefix dash + d_Eng?: string; // english gloss + co_Eng?: string; // notes or definition clarification + ps_Eng?: string; // converted - unmatch parts left as is + + // All the variants are dialectal: Kejom Keku, Kejom Ketinguh + lf?: string; // 'cf' for compare with + lv?: string; // word to compare with + va?: string; // variant + mn?: string; // main entry form (used in homonyms) + hm?: string; // 1,2,3,4,5 + + z0?: string; // 'added', 'gradually', 'new' or sequence of 4 numbers like 1655 (ignoring) + + z1?: string; // plural + z2?: string; // 6, 9 , 1/2 noun class numbers (singular/plural), 10 is suffixal +} + +export function convertFLExToLDFormat(data: IFLExData[]) { + const entries: IEntry[] = []; + // const check = new Set(); + + data.map((e) => { + const entry: IEntry = { + lx: e.lx.trim(), + gl: { + en: e.d_Eng || null, + }, + }; + + // check.add(e.z1); + + if (e.co_Eng) { + entry.nt = e.co_Eng; + } + if (e.ps_Eng) { + entry.ps = matchPartsOfSpeech(e.ps_Eng); + } + entries.push(entry); + }); + // console.log(check); + return entries; +} + +function matchPartsOfSpeech(input: string): string { + const mapping = { + prep: 'prep', + Adverb: 'adv', + interrog: 'q', + Noun: 'n', + num: 'no', + Verb: 'v', + conj: 'conj', + // 'con', // TODO: concord, put into nt field + // 'am', // asssociative marker (genitive) + 'pro indef': 'indfpro', + // 'pro subj', // ? pronoun or subjunctive + // 'pro obj', // ? pronoun or object + // 'pro demons', // ? mark as pronoun or demonstrative + adj: 'adj', + tm: 'tns', + 'pro poss': 'poss', + neg: 'neg', + Pronoun: 'pro', + }; + //@ts-ignore + return mapping[input] || input; +} diff --git a/functions/scripts/import/FLEx/convert.ts b/functions/scripts/import/FLEx/convert.ts new file mode 100644 index 000000000..ee4bb22ba --- /dev/null +++ b/functions/scripts/import/FLEx/convert.ts @@ -0,0 +1,79 @@ +// import torwali from './torwali-edited.json'; **Note that data files aren't in this repo** +import { abbreviateTDPartOfSpeech } from './abbreviate-pos'; +import { IEntry } from '../../../../src/lib/interfaces'; + +// const entries = [...torwali]; +const entries = []; + +const data: IEntry[] = entries.map((entry) => { + entry.lx.trim(); + delete entry.lx_Tor; // duplicate of lx + delete entry.sn; + + if (entry.ps_Eng) { + if (entry.ps_Eng === 'Idiom') { + entry.nt = 'idiom'; + } else { + entry.ps = abbreviateTDPartOfSpeech(entry.ps_Eng); + } + } + delete entry.ps_Eng; // part of speech + + entry.gl = {}; + // English definition/gloss + if (entry.d_Eng) { + entry.gl.en = entry.d_Eng.trim(); + delete entry.d_Eng; // English definition/gloss + } + + if (entry.d_Urd) { + entry.gl.ur = entry.d_Urd.trim(); + delete entry.d_Urd; // Urdu definition/gloss + } + + entry.xs = {}; + if (entry.xv_Eng) { + entry.xs.en = entry.xv_Eng; + delete entry.xv_Eng; // example English + } + if (entry.xv_Tor) { + entry.xs.vn = entry.xv_Tor; + delete entry.xv_Tor; // Example (sentence) vernacular + } + if (entry.xv_Urd) { + entry.xs.ur = entry.xv_Urd; + delete entry.xv_Urd; // Example (sentence) Urdu + } + if (Object.keys(entry.xs).length === 0) { + delete entry.xs; + } + + // leave entry.hm; // 1, 2, 3, 4, 5 (homonym) + // leave entry.dt; // date written as 12/Jan/2020 + // leave entry.semdom & entry.sd; // semdom numbers that weren't represented in our abbreviated semantic domains list + + const semanticDomainNumbers: string[] = []; + Object.keys(entry).forEach((key) => { + if (/sd.+/.test(key)) { + // sd1, sd2, etc... + semanticDomainNumbers.push(key.replace('sd', '').replace('_', '.')); + delete entry[key]; + } + }); + if (semanticDomainNumbers.length) { + entry.sdn = semanticDomainNumbers; + } + + return entry; +}); +// .filter((entry) => Object.keys(entry).length !== 0); + +function download(entries: IEntry[], fileName: string, contentType: string) { + const a = document.createElement('a'); + const file = new Blob([JSON.stringify(entries)], { type: contentType }); + a.href = URL.createObjectURL(file); + a.download = fileName; + a.click(); +} +// uncomment to download +// download(data, "torwali-converted.json", "application/json"); diff --git a/functions/scripts/import/FLEx/semanticDomains.ts b/functions/scripts/import/FLEx/semanticDomains.ts new file mode 100644 index 000000000..e0afd8abc --- /dev/null +++ b/functions/scripts/import/FLEx/semanticDomains.ts @@ -0,0 +1,78 @@ +export const semanticDomains = [ + { + semdom: '1.2.1.1', + sd: 'Mountain پہاڑ', + }, + { + semdom: '1.2.1.6', + sd: 'Forest, grassland, desert ماحولیاتی نظام، ارتعاشی نظام', + }, + { + semdom: '3.1', + sd: 'Soul, spirit روح،جسم کی روح', + }, + { + semdom: '4.1.2.1', + sd: 'Working relationship اجتماعی کام', + }, + { + is_Eng: '1', + sd_Eng: 'Universe, creation', + sd_Urd: 'کائنات', + }, + { + is_Eng: '1.2.1', + sd_Eng: 'Land', + sd_Urd: 'زمین', + }, + { + is_Eng: '2', + sd_Eng: 'Person', + sd_Urd: 'شخص', + }, + { + is_Eng: '3', + sd_Eng: 'Language and thought', + sd_Urd: 'زبان اور سوچ', + }, + { + is_Eng: '4', + sd_Eng: 'Social behavior', + sd_Urd: 'معاشرتی رویہ , چال چلن', + }, + { + is_Eng: '4.1', + sd_Eng: 'Relationships', + sd_Urd: 'تعلق', + }, + { + is_Eng: '4.1.1', + sd_Eng: 'Friend', + sd_Urd: 'دوستی', + }, + { + is_Eng: '5', + sd_Eng: 'Daily life', + sd_Urd: 'روزمرہ زندگی', + }, + { + is_Eng: '5.3', + sd_Eng: 'Clothing', + sd_Urd: 'کپڑے', + }, + { + is_Eng: '6', + sd_Eng: 'Work and occupation', + sd_Urd: 'پیشہ اور کام', + }, + { + is_Eng: '7', + sd_Eng: 'Physical actions', + sd_Urd: 'طبعی عمل', + }, + { + is_Eng: '8', + sd_Eng: 'States', + sd_Urd: 'حالت', + }, +]; diff --git a/functions/scripts/import/import-spreadsheet-v4.test.ts b/functions/scripts/import/import-spreadsheet-v4.test.ts new file mode 100644 index 000000000..3ffd03027 --- /dev/null +++ b/functions/scripts/import/import-spreadsheet-v4.test.ts @@ -0,0 +1,58 @@ +import { + convertJsonToEntries, + loadJSONfromCSV, + parseSourceFromNotes, +} from './import-spreadsheet-v4'; + +test.skip('Import and convert 200 entries', async () => { + const dateStamp = Date.now(); + const json = await loadJSONfromCSV('CHANGE'); + const entries = convertJsonToEntries(json, dateStamp); + expect(entries.length).toBe(200); + // expect(entries[0]).toStrictEqual({"ca": {}, "gl": {"en": "one", "es": "uno"}, "ii": "v4-1617811194070", "lx": "iin", "ps": "no", "sdn": ["7.1"], "ua": {}}); + // expect(entries[0]).toStrictEqual({"di": "Tegüima", "gl": {"en": "Yours", "es": "Suyo"}, "lx": "Are", "sr": ["Page 48 Opata-Spanish Dictionary"], "ps": "pro"}); +}); + +test('parseSourceFromNotes handles notes field w/ both notes and source', () => { + expect( + parseSourceFromNotes( + `Platicaba Dona Benigna Romero, Opata de Bacadehuachi, que antiguamente “maca” era el nombre de ciertas víboras, que cargaban los pedigüeños, tal vez para llamar la atención, para distinguirse o quizá para tener suerte. Source: Vestigios de la Cultura Opata Rodolfo Rascon` + ).notes + ).toBe( + 'Platicaba Dona Benigna Romero, Opata de Bacadehuachi, que antiguamente “maca” era el nombre de ciertas víboras, que cargaban los pedigüeños, tal vez para llamar la atención, para distinguirse o quizá para tener suerte.' + ); + + expect( + parseSourceFromNotes( + `Platicaba Dona Benigna Romero, Opata de Bacadehuachi, que antiguamente “maca” era el nombre de ciertas víboras, que cargaban los pedigüeños, tal vez para llamar la atención, para distinguirse o quizá para tener suerte. Source: Vestigios de la Cultura Opata Rodolfo Rascon` + ).source + ).toBe('Vestigios de la Cultura Opata Rodolfo Rascon'); +}); + +test('parseSourceFromNotes handles whitespace trimming interiorly also', () => { + expect( + parseSourceFromNotes(`Se usa a manera de aclaración, o segunda respuesta, cuando seconsidera que la primera no ha sido entendida. + + Source: + Page 228 + Opata-Spanish Dictionary`).source + ).toBe('Page 228 Opata-Spanish Dictionary'); +}); + +test('parseSourceFromNotes handles source only', () => { + expect( + parseSourceFromNotes(`Source: + Page 228 + Opata-Spanish Dictionary`).source + ).toBe('Page 228 Opata-Spanish Dictionary'); +}); + +test('parseSourceFromNotes handles notes w/o a source part', () => { + expect( + parseSourceFromNotes( + `Se usa a manera de aclaración, o segunda respuesta, cuando seconsidera que la primera no ha sido entendida.` + ).notes + ).toBe( + 'Se usa a manera de aclaración, o segunda respuesta, cuando seconsidera que la primera no ha sido entendida.' + ); +}); diff --git a/functions/scripts/import/import-spreadsheet-v4.ts b/functions/scripts/import/import-spreadsheet-v4.ts new file mode 100644 index 000000000..742da9de4 --- /dev/null +++ b/functions/scripts/import/import-spreadsheet-v4.ts @@ -0,0 +1,124 @@ +// import * as csv from 'csvtojson'; +const csv = require('csvtojson'); +import { db, timestamp, environment } from '../config'; +import type { IEntry } from '../../../src/lib/interfaces'; + +export async function importFromSpreadsheet(dictionaryId: string) { + const dateStamp = Date.now(); + + const json = await loadJSONfromCSV(dictionaryId); + const entries = convertJsonToEntries(json, dateStamp); + await importEntriesToFirebase(dictionaryId, entries); + + console.log( + `Finished importing ${entries.length} entries to ${ + environment === 'dev' ? 'http://localhost:3041/' : 'livingdictionaries.app/' + }${dictionaryId} in ${(Date.now() - dateStamp) / 1000} seconds` + ); + return entries; +} + +export async function loadJSONfromCSV(dictionaryId: string) { + return await csv().fromFile(`./scripts/import/spreadsheets/${dictionaryId}.csv`); +} + +export function convertJsonToEntries(json: any[], dateStamp: number): IEntry[] { + const entries: IEntry[] = []; + for (const row of json) { + if (!row.lexeme || row.lexeme === '(word/phrase)') { + continue; + } + const entry: IEntry = { lx: row.lexeme, gl: {}, xs: {} }; + + Boolean(row.phonetic) && (entry.ph = row.phonetic); + Boolean(row.morphology) && (entry.mr = row.morphology); + Boolean(row.interlinearization) && (entry.in = row.interlinearization); + Boolean(row.partOfSpeech) && (entry.ps = row.partOfSpeech); + Boolean(row.dialect) && (entry.di = row.dialect); + if (row.semanticDomain || row.semanticDomain2) { + entry.sdn = []; + Boolean(row.semanticDomain) && entry.sdn.push(row.semanticDomain.toString()); + Boolean(row.semanticDomain2) && entry.sdn.push(row.semanticDomain2.toString()); + } + Boolean(row.semanticDomain_custom) && (entry.sd = row.semanticDomain_custom); + Boolean(row.ID) && (entry.ei = row.ID); + + Boolean(row.localOrthography) && (entry.lo = row.localOrthography); + Boolean(row.localOrthography2) && (entry.lo2 = row.localOrthography2); + Boolean(row.localOrthography3) && (entry.lo3 = row.localOrthography3); + Boolean(row.localOrthography4) && (entry.lo4 = row.localOrthography4); + Boolean(row.localOrthography5) && (entry.lo5 = row.localOrthography5); + + Boolean(row.notes) && (entry.nt = row.notes); + // Notes parsing for Opata + // if (row.notes) { + // const parsedNotes = parseSourceFromNotes(row.notes); + // Boolean(parsedNotes.notes) && (entry.nt = parsedNotes.notes); + // Boolean(parsedNotes.source) && (entry.sr = [parsedNotes.source]); + // } + + Object.keys(row).forEach((key) => { + // gloss fields are labeled using bcp47 language codes followed by '_gloss' (e.g. es_gloss, tpi_gloss) + if (key.includes('_gloss') && row[key]) { + const language = key.split('_gloss')[0]; + entry.gl[language] = row[key]; + return; + } + + if (key.includes('vernacular_exampleSentence') && row[key]) { + return (entry.xs['vn'] = row[key]); + } + + // example sentence fields are codes followed by '_exampleSentence' + if (key.includes('_exampleSentence') && row[key]) { + const language = key.split('_exampleSentence')[0]; + entry.xs[language] = row[key]; + } + }); + if (Object.keys(entry.xs).length === 0) { + delete entry.xs; + } + + entry.ii = `v4-${dateStamp}`; + // @ts-ignore + entry.ca = timestamp; + // @ts-ignore + entry.ua = timestamp; + + entries.push(entry); + } + return entries; +} + +export function parseSourceFromNotes(notes: string): { notes: string; source?: string } { + const matches = notes.match(/([\s\S]*)Source:([\s\S]*)/); + if (matches) { + return { + notes: matches[1].trim().replace(/\s+/g, ' '), + source: matches[2].trim().replace(/\s+/g, ' '), + }; + } else { + return { notes }; + } +} + +export async function importEntriesToFirebase(dictionaryId: string, entries: IEntry[]) { + let entryCount = 0; + let batchCount = 0; + let batch = db.batch(); + const colRef = db.collection(`dictionaries/${dictionaryId}/words`); + + for (const entry of entries) { + if (batchCount === 200) { + console.log('Committing batch of entries ending with: ', entryCount); + await batch.commit(); + batch = db.batch(); + batchCount = 0; + } + batch.create(colRef.doc(), entry); + batchCount++; + entryCount++; + } + console.log('Committing final batch of entries ending with: ', entryCount); + await batch.commit(); +} diff --git a/functions/scripts/import/import.ts b/functions/scripts/import/import.ts new file mode 100644 index 000000000..2e5f8f384 --- /dev/null +++ b/functions/scripts/import/import.ts @@ -0,0 +1,12 @@ +import { program } from 'commander'; + +program + // .version('0.0.1') + .option('-e, --environment [dev/prod]', 'Firebase Project', 'dev') + .option('--id ', 'Dictionary Id') + .parse(process.argv); + +import { importFromSpreadsheet } from './import-spreadsheet-v4'; + +const dictionaryId = program.opts().id; +importFromSpreadsheet(dictionaryId).then((entries) => console.log(entries)); diff --git a/functions/scripts/import/old/filterArray.ts b/functions/scripts/import/old/filterArray.ts new file mode 100644 index 000000000..70bb3133f --- /dev/null +++ b/functions/scripts/import/old/filterArray.ts @@ -0,0 +1,25 @@ +// #!/usr/bin/env node + +import * as fs from 'fs-extra'; +import * as args from 'commander'; + +args + .version('0.0.1') + .option('-d, --data ', 'Source file path') + .option('-f --filter ', 'Search term to filter by') + .parse(process.argv); + +async function filterArray() { + const file = args.data; + const data = await fs.readJSON(file); + + console.log(filterByValue(data, args.filter)); +} + +function filterByValue(array, string) { + return array.filter((o) => + Object.keys(o).some((k) => o[k].toLowerCase().includes(string.toLowerCase())) + ); +} + +filterArray(); diff --git a/functions/scripts/import/old/gatherPOS.ts b/functions/scripts/import/old/gatherPOS.ts new file mode 100644 index 000000000..3165ed40e --- /dev/null +++ b/functions/scripts/import/old/gatherPOS.ts @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +import * as fs from 'fs-extra'; +import * as args from 'commander'; + +args.version('0.0.1').option('-s, --src ', 'Source file path').parse(process.argv); + +async function gatherPartsOfSpeech() { + const file = args.src; + let data; + if (file.includes('.json')) { + data = await fs.readJSON(file); + } else { + return console.log('JSON file not found'); + } + + const partsOfSpeech = []; + for (let i = 0; i < data.length; i++) { + const pos = data[i].pos; + + if (partsOfSpeech.indexOf(pos) === -1) partsOfSpeech.push(pos); + } + + fs.writeFile('GatheredPOS.json', JSON.stringify(partsOfSpeech), function (err) { + if (err) { + return console.log(err); + } + console.log('Parts of Speech saved to GatheredPOS.json'); + }); + console.log(partsOfSpeech); +} + +gatherPartsOfSpeech(); diff --git a/functions/scripts/import/old/import-old-talking-dictionary-to-firebase.ts b/functions/scripts/import/old/import-old-talking-dictionary-to-firebase.ts new file mode 100644 index 000000000..76ed2994f --- /dev/null +++ b/functions/scripts/import/old/import-old-talking-dictionary-to-firebase.ts @@ -0,0 +1,182 @@ +import { db, timestamp, storage } from '../../config'; +import * as fs from 'fs'; + +import { abbreviateTDPartOfSpeech } from '../../../src/import/helpers/abbreviate-td-pos'; +// import { IEntry } from '../../../svelte/src/interfaces/entry.interface'; +import { getImageServingUrl } from '../../../src/import/helpers/getImageServingUrl'; +const uid = 'OTD'; // 'Old Talking Dictionaries + +export const importToFirebase = async ( + data: any[], + dictionaryId: string, + environment: string, + dryRun: boolean +) => { + try { + let audioRefCount = 0; + let audioMissingCount = 0; + let imageRefCount = 0; + let imageMissingCount = 0; + + let entryCount = 0; + let batchCount = 0; + let batch = db.batch(); + const colRef = db.collection(`dictionaries/${dictionaryId}/words`); + + for (const row of data) { + // learned from https://lavrton.com/javascript-loops-how-to-handle-async-await-6252dd3c795/ + // if (entryCount == 50) { break } // to incrementally test larger and larger imports + ++entryCount; + + // console.log(row); + const entry: any = { lx: '', gl: {} }; + + // Always set lexeme even if blank string + entry.lx = row.lang; + + if (row.gloss) { + entry.gl['en'] = row.gloss; + } + Object.keys(row).forEach((key) => { + // Except for English, gloss fields are labeled using bcp47 language codes followed by '_gloss' (e.g. es_gloss, tpi_gloss) + if (key.includes('_gloss') && row[key]) { + const language = key.split('_gloss')[0]; + { + entry.gl[language] = row[key]; + } + } + }); + + if (row.usage_example) { + entry.xs = {}; + entry.xs['vernacular'] = row.usage_example; + } + + Boolean(row.semantic_ids) && (entry.sd = [row.semantic_ids]); + Boolean(row.ipa) && (entry.ph = row.ipa.replace(/[[\]]/g, '')); // Strip surrounding brackets if they are present in phonetic value); + Boolean(row.dialect) && (entry.di = row.dialect); + + if (row.pos) { + const { matchedPOS, unMatchedPOS, notes } = abbreviateTDPartOfSpeech(row.pos); + if (matchedPOS) { + entry.ps = matchedPOS; + } else { + entry.ps = unMatchedPOS; // Still saving unmatched POS into same cell + } + if (notes) { + entry.nt = notes; // save parenthetical notes + } + } + + if (row.metadata) { + if (entry.nt) { + entry.nt = entry.nt + ', ' + row.metadata; + } else { + entry.nt = row.metadata; + } + } + + if (row.audio) { + ++audioRefCount; + const localFilePath = `dictionary/${dictionaryId}/audio/${row.audio}`; + if (fs.existsSync(localFilePath)) { + const storagePath = appendDateBeforeExtension( + `${dictionaryId}/audio/local_import/${sanitizeFileName(row.audio)}` + ); + if (!dryRun) { + await storage.bucket().upload(localFilePath, { + destination: storagePath, + }); + } + entry.sf = { + path: storagePath, + source: `local_import`, + ts: timestamp, + }; + Boolean(row.authority) && (entry.sf.speakerName = row.authority); + } else { + ++audioMissingCount; + console.log(`>> Missing audio file for ${entry.lx}| ${row.audio}`); + } + } + + if (row.image) { + ++imageRefCount; + const beginsWithDotUnderscore = /^\._/; // several images in Gta begin with ._ (all corrupted) but have actual images under same name without prefix + if (beginsWithDotUnderscore.test(row.image)) { + row.image = row.image.replace(beginsWithDotUnderscore, ''); + } + const localFilePath = `dictionary/${dictionaryId}/images/${row.image}`; + if (fs.existsSync(localFilePath)) { + const storagePath = appendDateBeforeExtension( + `${dictionaryId}/images/local_import/${sanitizeFileName(row.image)}` + ); + if (!dryRun) { + await storage.bucket().upload(localFilePath, { + destination: storagePath, + }); + try { + const url = await getImageServingUrl(storagePath, environment); + entry.pf = { + path: storagePath, + gcs: url, + source: `local_import`, + }; + } catch (err) { + console.log( + `!!! Not adding image ${row.image} to ${entry.lx} as the server had trouble digesting it. Double-check the files to see if it is just a corrupted jpg (as some are) or if the file is good (means there is code/server problem).` + ); + } + } + } else { + ++imageMissingCount; + console.log(`>> Missing image file for ${entry.lx}| ${row.image}`); + } + } + + // add timestamps and creator metadata + // entry.createdAt = timestamp; + entry.cb = uid; + // entry.updatedAt = timestamp; + // entry.updatedBy = uid; + + // console.log(entry); + if (!dryRun) { + if (batchCount === 200) { + console.log('Committing batch of entries ending with: ', entryCount); + await batch.commit(); + batch = db.batch(); + batchCount = 0; + } + batch.create(colRef.doc(), entry); + batchCount++; + } + } + if (!dryRun) { + await batch.commit(); + } + + console.log( + `Converted ${entryCount} entries, found ${audioRefCount} audio references (${audioMissingCount} were missing), and ${imageRefCount} image references (${imageMissingCount} were missing)` + ); + + return entryCount; + } catch (error) { + console.log('Import to Firebase failed'); + throw new Error(error); + } +}; + +/** + * Santize file name down to basic characters that can be accepted by Google's Serving Url generator + * Use like this: `${dictionaryId}/audio/import_${importId}/${sanitizeFileName(filePath)}` + */ +const sanitizeFileName = (fileName: string): string => { + return fileName.replace(/[^a-z0-9.+]+/gi, '-'); +}; + +const appendDateBeforeExtension = (fileName: string): string => { + const dotIndex = fileName.lastIndexOf('.'); + if (dotIndex == -1) return fileName + '-' + Date.now(); + else return fileName.substring(0, dotIndex) + '-' + Date.now() + fileName.substring(dotIndex); +}; diff --git a/functions/scripts/import/old/import-spreadsheet-to-firebase.ts b/functions/scripts/import/old/import-spreadsheet-to-firebase.ts new file mode 100644 index 000000000..b23cb6929 --- /dev/null +++ b/functions/scripts/import/old/import-spreadsheet-to-firebase.ts @@ -0,0 +1,175 @@ +import { db, timestamp, storage } from '../config'; +import * as fs from 'fs-extra'; + +// import { IEntry } from '../../../svelte/src/interfaces/entry.interface'; +import { getImageServingUrl } from '../helpers/getImageServingUrl'; + +export const importSpreadsheetToFirebase = async ( + data: any[], + dictionaryId: string, + environment: string, + dateStamp: number, + dryRun: boolean +) => { + try { + let audioRefCount = 0; + let audioMissingCount = 0; + let imageRefCount = 0; + let imageMissingCount = 0; + + let entryCount = 0; + let batchCount = 0; + let batch = db.batch(); + const colRef = db.collection(`dictionaries/${dictionaryId}/words`); + + for (const row of data) { + // learned from https://lavrton.com/javascript-loops-how-to-handle-async-await-6252dd3c795/ + // if (entryCount == 10) { break } // to incrementally test larger and larger imports + if (!row.lexeme || row.lexeme === '(word/phrase)') { + continue; + } + + ++entryCount; + // console.log(entryCount, row); + // TODO: restore IEntry type + const entry: any = { lx: '', gl: {} }; + + entry.lx = row.lexeme; + Boolean(row.phonetic) && (entry.ph = row.phonetic); + Boolean(row.morphology) && (entry.mr = row.morphology); + Boolean(row.interlinearization) && (entry.in = row.interlinearization); + Boolean(row.partOfSpeech) && (entry.ps = row.partOfSpeech); + Boolean(row.dialect) && (entry.di = row.dialect); + if (row.semanticDomain) { + entry.sdn = [row.semanticDomain.toString()]; + Boolean(row.semanticDomain2) && entry.sdn.push(row.semanticDomain2.toString()); + } + Boolean(row.semanticDomain_custom) && (entry.sd = row.semanticDomain_custom); + Boolean(row.notes) && (entry.nt = row.notes); + Boolean(row.ID) && (entry.ei = row.ID); + + Object.keys(row).forEach((key) => { + // gloss fields are labeled using bcp47 language codes followed by '_gloss' (e.g. es_gloss, tpi_gloss) + if (key.includes('_gloss') && row[key]) { + const language = key.split('_gloss')[0]; + { + entry.gl[language] = row[key]; + } + } + }); + + Boolean(row.localOrthography) && (entry.lo = row.localOrthography); + Boolean(row.localOrthography2) && (entry.lo2 = row.localOrthography2); + Boolean(row.localOrthography3) && (entry.lo3 = row.localOrthography3); + + // if example sentences, check for any, set up the entry.xs object add as appropriate + // vn = vernacular, everything else is by bcp code + // if (row.vernacular_exampleSentence or any other exampleSentenc field) { + // entry.xs = {}; + // Boolean(row.vernacular_exampleSentence) && (entry.xs['vn'] = row.vernacular_exampleSentence); + // } + + if (row.soundFile) { + ++audioRefCount; + const localFilePath = `dictionary/${dictionaryId}/audio/${row.soundFile}`; + if (fs.existsSync(localFilePath)) { + const storagePath = appendDateBeforeExtension( + `${dictionaryId}/audio/local_import/${sanitizeFileName(row.soundFile)}` + ); + if (!dryRun) { + await storage.bucket().upload(localFilePath, { + destination: storagePath, + metadata: { fileName: row.soundFile }, + }); + } + entry.sf = { + path: storagePath, + sc: `local_import`, + }; + Boolean(row.speakerName) && (entry.sf.speakerName = row.speakerName); + } else { + ++audioMissingCount; + console.log(`>> Missing audio file for ${entry.lx}| ${row.soundFile}`); + } + } + + if (row.photoFile) { + ++imageRefCount; + const localFilePath = `dictionary/${dictionaryId}/images/${row.photoFile}`; + if (fs.existsSync(localFilePath)) { + const storagePath = appendDateBeforeExtension( + `${dictionaryId}/images/local_import/${sanitizeFileName(row.photoFile)}` + ); + if (!dryRun) { + await storage.bucket().upload(localFilePath, { + destination: storagePath, + metadata: { fileName: row.photoFile }, + }); + try { + const url = await getImageServingUrl(storagePath, environment); + entry.pf = { + path: storagePath, + gcs: url, + sc: `local_import`, + }; + } catch (err) { + console.log( + `!!! Not adding image ${row.photoFile} to ${entry.lx} as the server had trouble digesting it. Double-check the files to see if it is just a corrupted jpg (as some are) or if the file is good (means there is code/server problem).` + ); + } + } else { + console.log('pf: ', storagePath); + } + } else { + ++imageMissingCount; + console.log(`>> Missing image file for ${entry.lx}| ${row.photoFile}`); + } + } + + // add timestamps and creator metadata + // entry.createdAt = timestamp; + entry.ii = `v3-${dateStamp}`; + // entry.updatedAt = timestamp; + // entry.updatedBy = uid; + + if (!dryRun) { + if (batchCount === 200) { + console.log('Committing batch of entries ending with: ', entryCount); + await batch.commit(); + batch = db.batch(); + batchCount = 0; + } + batch.create(colRef.doc(), entry); + batchCount++; + } else { + console.log(entry); + } + } + if (!dryRun) { + await batch.commit(); + } + + console.log( + `Converted ${entryCount} entries, found ${audioRefCount} audio references (${audioMissingCount} were missing), and ${imageRefCount} image references (${imageMissingCount} were missing)` + ); + + return entryCount; + } catch (error) { + console.log('Import to Firebase failed'); + throw new Error(error); + } +}; + +/** + * Santize file name down to basic characters that can be accepted by Google's Serving Url generator + * Use like this: `${dictionaryId}/audio/import_${importId}/${sanitizeFileName(filePath)}` + */ +const sanitizeFileName = (fileName: string): string => { + return fileName.replace(/[^a-z0-9_\.+]+/gi, '-'); +}; + +const appendDateBeforeExtension = (fileName: string): string => { + const dotIndex = fileName.lastIndexOf('.'); + if (dotIndex == -1) return fileName + '-' + Date.now(); + else return fileName.substring(0, dotIndex) + '-' + Date.now() + fileName.substring(dotIndex); +}; diff --git a/functions/scripts/import/old/import-spreadsheet.ts b/functions/scripts/import/old/import-spreadsheet.ts new file mode 100644 index 000000000..1b7f823d1 --- /dev/null +++ b/functions/scripts/import/old/import-spreadsheet.ts @@ -0,0 +1,73 @@ +import * as fs from 'fs-extra'; +import { environment } from './config'; +import * as xlsx from 'xlsx'; +import * as csv from 'csvtojson'; +import { importSpreadsheetToFirebase } from './import-spreadsheet-to-firebase'; +import { mockDictionary } from './dev/mock-dictionary'; + +const language = 'kumyk'; +let dictionaryId = language; +const dateStamp = Date.now(); +// @ts-ignore +if (environment === 'dev') { + dictionaryId = dictionaryId + '-' + dateStamp; +} +const dryRun = false; + +async function importFromSpreadsheet() { + const util = require('util'); + const logFile = fs.createWriteStream(`logs/import-${dictionaryId}-${environment}.txt`, { + flags: 'w', + }); // 'a' to append, 'w' to write over file contents + const logStdout = process.stdout; + console.log = function () { + logFile.write(util.format.apply(null, arguments) + '\n'); + logStdout.write(util.format.apply(null, arguments) + '\n'); + }; + + try { + console.log('importing: ', dictionaryId); + // const dataFileName = await unzipArchive(language, dictionaryId, 'spreadsheet'); + // console.log('returned: ', dataFileName); + // let jsonData = await convertXlsxToJson(dataFileName); + let jsonData = await csv().fromFile(`ready-data/${language}.csv`); + + // @ts-ignore + if (environment === 'dev') { + // const glossLanguages: string[] = findLanguages(data); + const glossLanguages = ['en', 'hi', 'as', 'or']; + if (!dryRun) { + await mockDictionary(dictionaryId, glossLanguages); + } + } + const importedCount = await importSpreadsheetToFirebase( + jsonData, + dictionaryId, + environment, + dateStamp, + dryRun + ); + console.log( + `Finished importing ${importedCount} entries to https://td-${environment}-svelte.web.app/${dictionaryId} in ${ + (Date.now() - dateStamp) / 1000 + } seconds` + ); + return true; + } catch (err) { + console.error(err); + throw new Error(err); + } +} + +importFromSpreadsheet(); + +// MOVE INTO HELPERS FOLDER + +/** + * Takes an Excel file and return the first sheet as an array of JSON objects for each row + */ +export const convertXlsxToJson = (dataFileName: string | any) => { + const workbook = xlsx.readFile(`dictionary/${dictionaryId}/data/${dataFileName}`); + const sheet_name_list = workbook.SheetNames; + return xlsx.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); +}; diff --git a/functions/scripts/import/old/importToFirestore.ts b/functions/scripts/import/old/importToFirestore.ts new file mode 100644 index 000000000..1c3facd65 --- /dev/null +++ b/functions/scripts/import/old/importToFirestore.ts @@ -0,0 +1,198 @@ +#!/usr/bin/env node + +import * as args from 'commander'; +import * as admin from 'firebase-admin'; +import * as fs from 'fs-extra'; +import { join } from 'path'; +import { getImageServingUrl } from './getImageServingUrl'; +import { abbreviatePOS } from './abbreviatePOS'; +import { storage } from './config'; + +args + .version('0.0.1') + .option('-d, --data ', 'Data file path') + .option('-a, --audio ', 'Audio folder path') + .option('-p, --photos [folder path]', 'Photos folder path') //optional argument indicated by square brackets, skip image import if not specified + // .option("-c, --collection ", "Collection path in firestore") + .option('-i, --dictionaryId ', 'Dictionary Id in firestore') + .option('-n, --dictionaryName ', 'Dictionary name, used in saving media files') + .option('-e, --environment [dev/prod]', 'Firebase Project') //optional argument, script uses dev if not specified + .parse(process.argv); + +const devServiceAccount = require('../service-accounts/talking-dictionaries-dev.json'); +const prodServiceAccount = require('../service-accounts/talking-dictionaries-alpha.json'); + +admin.initializeApp({ + credential: admin.credential.cert( + args.environment == 'prod' ? prodServiceAccount : devServiceAccount + ), + databaseURL: `https://talking-dictionaries-${ + args.environment == 'prod' ? 'alpha' : 'dev' + }.firebaseio.com`, +}); +const db = admin.firestore(); + +const fileBucket = `talking-dictionaries-${ + args.environment == 'prod' ? 'alpha' : 'dev' +}.appspot.com`; + +async function importToFirestore() { + try { + const colPath = `dictionaries/${args.dictionaryId}/words`; + const file = args.data; + + const colRef = db.collection(colPath); + const batch = db.batch(); + + let data; + if (file.includes('.json')) { + data = await fs.readJSON(file); + } + + // TODO get script to loop through sets of 500 automatically once it matures + // Firestore 'cannot write more than 500 entities in a single call' so we have to upload in chunks + // See https://github.com/firebase/firebase-admin-java/issues/106 for a possible automated chunking solution + const commitRound = 0; // start at 0 + const batchStart = 0 + 500 * commitRound; + const batchEnd = 499 + 500 * commitRound; + + for (let i = 0; i < data.length; i++) { + if (i < batchStart || i > batchEnd) { + continue; + } + + let entry = data[i]; + entry.lx = entry.lang || ''; + delete entry.lang; + entry.ph = entry.ipa || ''; + delete entry.ipa; + + entry.ps = abbreviatePOS(entry.pos || ''); + delete entry.pos; + + entry.di = entry.dialect || ''; + delete entry.dialect; + + entry.xv = entry.usage_example || ''; + delete entry.usage_example; + + entry.lc = entry.metadata || ''; // location + delete entry.metadata; + + // learn about try/catch so I can convert this to const uploadedAudioPath = await upload...() + // maybe the outer parent catch will even catch this? Test it out. + + const entryId = colRef.doc().id; + + await uploadAudioFile(entry.audio, entry.lx, entryId) + .then((response: any) => { + const dateArray = entry.audio.match(/([0-9]*)_([0-9]*)_([0-9]*)/); + entry.sf = { + cr: entry.authority || '', // speaker + ts: dateArray ? new Date(`${dateArray[1]}, ${dateArray[2]}, ${dateArray[3]}`) : null, + path: response.uploadedAudioPath, + }; + delete entry.audio; + }) + .catch((err) => console.log(err)); + + if (args.photos) { + await uploadImageFile(entry, entryId) + .then((response) => { + entry.pf = response; + delete entry.image; + }) + .catch((err) => console.log(err)); + } else { + entry.pf = null; + delete entry.image; + } + + delete entry.authority; + + entry.sd = entry.semantic_ids || ''; + delete entry.semantic_ids; + + entry.gl = { + English: entry.gloss || '', + Español: entry.es_gloss || '', + }; + delete entry.gloss; + delete entry.es_gloss; + + const docRef = colRef.doc(entryId); + batch.set(docRef, entry); + console.log(`Added ${i} to batch: ${entry.lx}`); + } + + await batch.commit(); + console.log('Firestore import completed successfully.'); + } catch (error) { + console.log('Migration failed!', error); + } +} + +const uploadAudioFile = (audioFileName, lexeme, entryId) => { + return new Promise((resolve, reject) => { + if (!audioFileName) { + reject(`No audio found for ${lexeme}`); + } + + const audioDir = join(__dirname, `../${args.audio}`); + const audioFilePath = join(audioDir, audioFileName); + + const uploadedAudioName = lexeme.replace(/ /g, '_').replace(/\./g, ''); + const audioType = audioFileName.match(/\.[0-9a-z]+$/i); + + const uploadedAudioPath = `audio/${args.dictionaryName}_${args.dictionaryId}/${uploadedAudioName}_${entryId}${audioType}`; + + storage + .bucket(fileBucket) + .upload(audioFilePath, { + destination: uploadedAudioPath, + }) + .then(() => { + resolve({ uploadedAudioPath }); + }) + .catch((err) => { + reject(err); + }); + }); +}; + +const uploadImageFile = async (entry, entryId) => { + try { + const pictureFileName = entry.image; + const lexeme = entry.lx; + if (!pictureFileName) { + throw `No image found for ${lexeme}`; + } + + const imageDir = join(__dirname, `../${args.photos}`); + const imageFilePath = join(imageDir, pictureFileName); + + const uploadedImageName = lexeme.replace(/ /g, '_').replace(/\./g, ''); + const imageType = pictureFileName.match(/\.[0-9a-z]+$/i); + + const uploadedImagePath = `images/${args.dictionaryName}_${args.dictionaryId}/${uploadedImageName}_${entryId}${imageType}`; + + await storage.bucket(fileBucket).upload(imageFilePath, { + destination: uploadedImagePath, + }); + + const gcsPath = await getImageServingUrl(uploadedImagePath, args.environment); + const dateArray = pictureFileName.match(/([0-9]*)_([0-9]*)_([0-9]*)/); + const pf = { + cr: entry.authority || '', // speaker + ts: dateArray ? new Date(`${dateArray[1]}, ${dateArray[2]}, ${dateArray[3]}`) : null, + path: uploadedImagePath, + gcs: gcsPath, // Google Cloud Storage Link + }; + + return pf; + } catch (err) { + throw err; + } +}; + +importToFirestore(); diff --git a/functions/scripts/import/old/tdv1-import/find-languages.ts b/functions/scripts/import/old/tdv1-import/find-languages.ts new file mode 100644 index 000000000..99eae0be5 --- /dev/null +++ b/functions/scripts/import/old/tdv1-import/find-languages.ts @@ -0,0 +1,39 @@ +/** + * Logs unique glossing languages and throw an error if any are found that aren't supported in our current set of glossing languages + */ +export const findLanguages = (data: any[]) => { + const uniqueLanguages: string[] = []; + const unmatchedLanguages: string[] = []; + console.log(''); // spacer + + for (const row of data) { + if (row.gloss) { + const language = 'en'; + if (uniqueLanguages.indexOf(language) === -1) uniqueLanguages.push(language); + } + Object.keys(row).forEach((key) => { + // Except for English, gloss fields are labeled using bcp47 language codes followed by '_gloss' (e.g. es_gloss, tpi_gloss) + if (key.includes('_gloss') && row[key]) { + const language = key.split('_gloss')[0]; + if (uniqueLanguages.indexOf(language) === -1) uniqueLanguages.push(language); + } + }); + } + uniqueLanguages.forEach((lang: string) => { + const matched = glossingLanguages.some((glossingLanguage) => { + return glossingLanguage.bcp47 === lang; + }); + if (matched) { + console.log('Matched glossing language: ', lang); + } else { + console.log('>> Unmatched glossing language: ', lang); + unmatchedLanguages.push(lang); + } + }); + console.log(''); // spacer + + if (unmatchedLanguages.length) { + throw new Error(`Found unsupported glossing language(s). See log`); + } + return uniqueLanguages; +}; diff --git a/functions/scripts/import/old/tdv1-import/import-old-td.ts b/functions/scripts/import/old/tdv1-import/import-old-td.ts new file mode 100644 index 000000000..354f8fe39 --- /dev/null +++ b/functions/scripts/import/old/tdv1-import/import-old-td.ts @@ -0,0 +1,106 @@ +import * as fs from 'fs-extra'; +import { environment } from './config'; +import { unzipArchive } from './helpers/unzip'; +import { findUnmatchedPOS } from './helpers/find-unmatched-pos'; +import { importToFirebase } from './helpers/import-to-firebase'; +import { findLanguages } from './helpers/find-languages'; +import { mockDictionary } from './dev/mock-dictionary'; +import { deleteDuplicateEntries } from './helpers/delete-duplicate-entries'; +import { cleanUpData } from './helpers/clean-up-data'; + +// const language = process.argv[2]; +const dryRun = Boolean(process.argv[2] === 'dryRun'); + +if (dryRun) { + console.log('Doing a dry run'); +} + +const iterateThroughDictionaries = async () => { + const languages = [ + // 'ho', // - POS? // check lang: '\nriping', and lang: '\ngur', http://ho.swarthmore.edu/?fields=all&semantic_ids=&q=gur + // 'kera-mundari', // (changed zip from kera_mundari to match kera-mundari url) and missing audio file because of question mark + // 'olukumi', // convert "ib" to "ig" for "Igbo" + // 'jakalteko', // don't have data + // 'wayuunaiki', // changed zip from wayuu to wayuunaiki (old url was wayuu) + // 'herero', // no data + // 'gana', // no data + // 'kgalagadi', // no data + // 'yeyi', // no data + // No geo data below here... + // 'aren-aiome', // changed zip to aren-aiome to match url + // 'kuman', + // 'idio-titan', // changed zip from idio_titan to idio-titan to match site url + // 'kewapi', // no data + // 'muyuw-woodlark', // changed zip to muyuw-woodlark to match url + // 'naasioi', + // 'nalik', + // 'waskia', // no data + // 'weri', + // 'wahgi-waghi', // changed zip to wahgi-waghi to match url + // 'monkox-besiro-chiquitano', // changed zip from chiquitano + // 'ishir-chamacoco', // changed zip from chamacoco + // 'siletz-dee-ni' // changed from siletz + ]; + + // let allUnmatchedPOS = new Set(); + + for (const language of languages) { + let dictionaryId = language; + const dateStamp = Date.now(); + // if (environment === 'dev') { + // dictionaryId = dictionaryId + '-' + dateStamp; + // } + + const util = require('util'); + const logFile = fs.createWriteStream(`logs/import-${dictionaryId}-${environment}.txt`, { + flags: 'w', + }); // 'a' to append, 'w' to write over file contents + const logStdout = process.stdout; + console.log = function () { + logFile.write(util.format.apply(null, arguments) + '\n'); + logStdout.write(util.format.apply(null, arguments) + '\n'); + }; + await importOldTalkingDictionary(dictionaryId, language, dateStamp, dryRun); + + // For POS dry runs + // const unmatchedPOS = await importOldTalkingDictionary(dictionaryId, language, dateStamp, dryRun); + // if (unmatchedPOS) { + // unmatchedPOS.forEach(pos => allUnmatchedPOS.add(pos)); + // } + } + // allUnmatchedPOS.forEach(pos => console.log(pos)); +}; + +const importOldTalkingDictionary = async ( + dictionaryId: string, + language: string, + dateStamp: number, + dryRun: boolean +) => { + try { + console.log(`Importing ${dictionaryId}`); + const dataFileName = await unzipArchive(language, dictionaryId, 'old-td'); + let data = await fs.readJSON(`dictionary/${dictionaryId}/data/${dataFileName}`); + data = cleanUpData(data); + findUnmatchedPOS(data); // return here for POS dry runs + data = deleteDuplicateEntries(data); + // if (environment === 'dev') { + // const glossLanguages: string[] = findLanguages(data); + // if (!dryRun) { + // await mockDictionary(dictionaryId, glossLanguages) + // } + // } + const importedCount = await importToFirebase(data, dictionaryId, environment, dryRun); + console.log( + `Finished importing ${importedCount} entries to ${environment}/${language} in ${ + (Date.now() - dateStamp) / 1000 + } seconds` + ); + return true; + } catch (err) { + console.error(err); + throw new Error(err); + } +}; + +iterateThroughDictionaries(); diff --git a/functions/scripts/move-firestore-document.ts b/functions/scripts/move-firestore-document.ts new file mode 100644 index 000000000..2aecd6dcd --- /dev/null +++ b/functions/scripts/move-firestore-document.ts @@ -0,0 +1,112 @@ +import { db } from './config'; + +// deleteDocRecursively(`dictionaries/sipu`); +// copyDoc(`dictionaries/sipu`, `dictionaries/conestoga_language`, {}, true); +// copyDoc(`dictionaries/olùkùmi`, `dictionaries/olukumi`, {}, true); +// moveDoc(`dictionaries/olùkùmi`, `dictionaries/olukumi`); + +// note that entryCount will be doubled since importing entries (words) will fire off the incrementing function +// note that Algolia index will be wiped out after deleting the old dictionary since the objectIds are identical + +// from https://leechy.dev/firestore-move +export async function moveDoc( + oldDocPath: string, + newDocPath: string, + addData?: any +): Promise { + const copied = await copyDoc(oldDocPath, newDocPath, addData, true); + + if (copied) { + await deleteDocRecursively(`${oldDocPath}`); + return true; + } + throw new Error('Data was not copied properly to the target collection, please try again.'); +} + +export async function copyDoc( + oldDocPath: string, + newDocPath: string, + addData: any = {}, + recursive = false +): Promise { + const docRef = db.doc(oldDocPath); + + const docData = await docRef + .get() + .then((doc) => doc.exists && doc.data()) + .catch((error) => { + throw new Error(`Error reading document ${oldDocPath}: ${JSON.stringify(error)}`); + }); + + if (docData) { + await db + .doc(newDocPath) + .set({ ...docData, ...addData }) + .catch((error) => { + throw new Error(`Error creating document ${newDocPath}: ${JSON.stringify(error)}`); + }); + + // if copying of the subcollections is needed + if (recursive) { + // subcollections + const subcollections = await docRef.listCollections(); + for await (const subcollectionRef of subcollections) { + const subcollectionPath = `${oldDocPath}/${subcollectionRef.id}`; + + await subcollectionRef + .get() + .then(async (snapshot) => { + const docs = snapshot.docs; + for await (const doc of docs) { + await copyDoc( + `${subcollectionPath}/${doc.id}`, + `${newDocPath}/${subcollectionRef.id}/${doc.id}`, + true + ); + } + }) + .catch((error) => { + throw new Error( + `Error reading subcollection ${subcollectionPath}: ${JSON.stringify(error)}` + ); + }); + } + } + return true; + } + return false; +} + +export async function deleteDocRecursively(docPath: string): Promise { + const docRef = db.doc(docPath); + + const subcollections = await docRef.listCollections(); + for await (const subcollectionRef of subcollections) { + await subcollectionRef + .get() + .then(async (snapshot) => { + const docs = snapshot.docs; + for await (const doc of docs) { + await deleteDocRecursively(`${docPath}/${subcollectionRef.id}/${doc.id}`); + } + return true; + }) + .catch((error) => { + console.error( + 'Error reading subcollection', + `${docPath}/${subcollectionRef.id}`, + JSON.stringify(error) + ); + return false; + }); + } + + // when all subcollections are deleted, delete the document itself + return docRef + .delete() + .then(() => true) + .catch((error) => { + console.error('Error deleting document', docPath, JSON.stringify(error)); + return false; + }); +} diff --git a/functions/scripts/refactor/entry-refactor.ts b/functions/scripts/refactor/entry-refactor.ts new file mode 100644 index 000000000..82ebee583 --- /dev/null +++ b/functions/scripts/refactor/entry-refactor.ts @@ -0,0 +1,97 @@ +async function entryRefactor(db: FirebaseFirestore.Firestore) { + try { + // fetchWords('724ZI6JmhvLfnNiZU0Wp'); + db.collection('dictionaries') + .get() + .then((snapshot) => { + snapshot.forEach((dictionary) => { + console.log('--------------------Refactoring: ', dictionary.id); + fetchWords(dictionary.id, db); + }); + }); + } catch (error) { + console.log('Refactor failed!', error); + } +} + +function fetchWords(dictionaryId: string, db: FirebaseFirestore.Firestore) { + db.collection(`dictionaries/${dictionaryId}/words`) + .get() + .then((snapshot) => { + snapshot.forEach(async (word) => { + // await turnSDintoArray(dictionaryId, word.id, word.data(), db); + // await refactorGloss(dictionaryId, word.id, word.data(), db); + }); + }); +} + +const turnSDintoArray = async ( + dictionaryId: string, + wordId: string, + data: any, + db: FirebaseFirestore.Firestore +) => { + const entry = data; + if (entry.sd && typeof entry.sd === 'string') { + console.log('entry sd before: ', entry.sd); + const emptyArray = []; + emptyArray.push(entry.sd); + entry.sd = emptyArray; + console.log('entry sd after: ', entry.sd); + } else if (entry.sd && entry.sd instanceof Array) { + console.log('it is an array - do nothing'); + } else { + delete entry.sd; + } + // eslint-disable-next-line no-useless-catch + try { + await db.collection(`dictionaries/${dictionaryId}/words`).doc(wordId).set(data); + } catch (err) { + throw err; + } + return true; + // console.log(`${wordId}: `, entry.gl); +}; + +const refactorGloss = async ( + dictionaryId: string, + wordId: string, + data: any, + db: FirebaseFirestore.Firestore +) => { + // eslint-disable-next-line no-useless-catch + try { + const entry = data; + console.log(entry.gl); + for (const key in entry.gl) { + if (key === 'English') { + entry.gl['en'] = entry.gl[key]; + delete entry.gl[key]; + } + if (key === 'Spanish') { + entry.gl['es'] = entry.gl[key]; + delete entry.gl[key]; + } + if (key === 'Español') { + entry.gl['es'] = entry.gl[key]; + delete entry.gl[key]; + } + if (key === 'Bahasa Indonesia') { + entry.gl['id'] = entry.gl[key]; + delete entry.gl[key]; + } + if (key === 'French') { + entry.gl['fr'] = entry.gl[key]; + delete entry.gl[key]; + } + if (key === 'Mandarin 官话') { + entry.gl['cmn'] = entry.gl[key]; + delete entry.gl[key]; + } + } + await db.collection(`dictionaries/${dictionaryId}/words`).doc(wordId).set(data); + return console.log(`${wordId}: `, entry.gl); + } catch (err) { + throw err; + } +}; diff --git a/functions/scripts/refactor/tdv1-dictionaries.ts b/functions/scripts/refactor/tdv1-dictionaries.ts new file mode 100644 index 000000000..31a929451 --- /dev/null +++ b/functions/scripts/refactor/tdv1-dictionaries.ts @@ -0,0 +1,1134 @@ +export const tdLocations = [ + { + geometry: { + coordinates: [92.555133, 27.20845], + }, + properties: { + icon: 'logo', + label: 'Bugun', + xlink: 'https://livingdictionaries.app/bugun', + size: 222, + status: '2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [-131.613, 57.655], + }, + properties: { + icon: 'library-15', + label: 'Tahltan', + xlink: 'http://talkingdictionary.org/tahtlan', + size: 96, + status: '2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [99.7117, 26.11294], + }, + properties: { + icon: 'library-15', + label: 'Naxi', + xlink: 'http://talkingdictionary.org/naxi', + thumbnail: 'http://talkingdictionary.org/images/tree_glyph-scaled.jpg', + size: 88, + status: '2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [92.858885, 27.285382], + }, + properties: { + icon: 'library-15', + label: 'Koro Aka', + xlink: 'http://talkingdictionary.org/koro', + thumbnail: 'http://talkingdictionary.org/images/Koro_header_5a.png', + size: 1417, + status: '2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [89.242778, 51.751], + }, + properties: { + icon: 'logo', + label: 'Xyzyl', + xlink: 'https://livingdictionaries.app/xyzyl', + thumbnail: 'http://talkingdictionary.org/images/Xyzyl_header_gate.gif', + size: 1088, + status: '2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [145.787, -4.8874], + }, + properties: { + icon: 'logo', + label: 'Matukar', + xlink: 'https://livingdictionaries.app/matukar', + thumbnail: 'http://talkingdictionary.org/images/png.png', + size: 4149, + status: '2009', + date: 2009, + }, + }, + { + geometry: { + coordinates: [-58.165095, -20.256947], + }, + properties: { + icon: 'logo', + label: 'Ɨshir (Chamacoco)', + xlink: 'https://livingdictionaries.app/peKDckFuV0KWRr0cMWxK', + thumbnail: 'http://talkingdictionary.org/images/chamacoco.png', + size: 910, + status: '2009', + date: 2009, + }, + }, + { + geometry: { + coordinates: [85.313, 23.3419], + }, + properties: { + icon: 'logo', + label: 'Ho', + xlink: 'https://livingdictionaries.app/ho', + thumbnail: 'http://talkingdictionary.org/images/Ho-orthography.gif', + size: 3029, + status: '2010', + date: 2010, + }, + }, + { + geometry: { + coordinates: [82.716, 18.8], + }, + properties: { + icon: 'logo', + label: 'Remo', + xlink: 'https://livingdictionaries.app/remo', + thumbnail: 'http://talkingdictionary.org/images/bird_tan_200.png', + size: 5139, + status: '2010', + date: 2010, + }, + }, + { + geometry: { + coordinates: [83.8338, 18.975692], + }, + properties: { + icon: 'logo', + label: 'Sora', + xlink: 'https://livingdictionaries.app/sora', + thumbnail: 'http://talkingdictionary.org/images/elephant_white_150.png', + size: 911, + status: '2010', + date: 2010, + }, + }, + { + geometry: { + coordinates: [-123.91655, 44.72024], + }, + properties: { + icon: 'logo', + label: 'Siletz', + xlink: 'https://livingdictionaries.app/siletz-dee-ni', + thumbnail: 'http://talkingdictionary.org/images/Siletz-f7f7f7.gif', + size: 10555, + status: '2007', + date: 2007, + }, + }, + { + geometry: { + coordinates: [93.489484, 51.549743], + }, + properties: { + icon: 'library-15', + label: 'Tuvan', + xlink: 'http://talkingdictionary.org/tuvan', + thumbnail: 'http://talkingdictionary.org/images/Flag_of_Tuva.svg.png', + size: 7452, + status: '2007', + date: 2007, + }, + }, + { + geometry: { + coordinates: [-70.41878, -39.47971], + }, + properties: { + icon: 'logo', + label: 'Mapudungun', + xlink: 'https://livingdictionaries.app/mapudungun', + size: 100000, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-72.75709, -40.28984], + }, + properties: { + icon: 'logo', + label: 'Tsesungun', + xlink: 'https://livingdictionaries.app/tsesungun', + size: 2000, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-74.30774, -13.83864], + }, + properties: { + icon: 'logo', + label: 'Quechua Chanka', + xlink: 'https://livingdictionaries.app/quechua-chanka', + size: 900000, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-75.31308, -10.5267], + }, + properties: { + icon: 'logo', + label: 'Yanesha', + xlink: 'https://livingdictionaries.app/yanesha', + size: 9830, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-96.65448, 15.87953], + }, + properties: { + icon: 'logo', + label: 'Miahuatec Zapotec (San Bartolomé Loxicha)', + xlink: 'https://livingdictionaries.app/miahuatec-zapotec', + size: 75000, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-100.01767, 19.72311], + }, + properties: { + icon: 'logo', + label: 'Mazahua', + xlink: 'https://livingdictionaries.app/mazahua', + size: 350000, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-91.8043, 15.44001], + }, + properties: { + icon: 'logo', + label: 'Mam', + xlink: 'https://livingdictionaries.app/mam', + size: 200000, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-89.45878, 13.8463], + }, + properties: { + icon: 'logo', + label: 'Pipil (Nahuat)', + xlink: 'https://livingdictionaries.app/pipil', + size: 20, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-59.92685, -17.65922], + }, + properties: { + icon: 'logo', + label: 'Monkox Besɨro', + xlink: 'https://livingdictionaries.app/monkox-bes%C9%A8ro-%28chiquitano', + size: 5860, + status: 'chile2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-76.32485, 2.60491], + }, + properties: { + icon: 'logo', + label: 'Nasa yuwe', + xlink: 'https://livingdictionaries.app/nasa-yuwe', + size: 77400, + status: 'colombia2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [-71.25491, 4.85971], + }, + properties: { + icon: 'logo', + label: 'Sáliba', + xlink: 'https://livingdictionaries.app/saliba', + size: 1310, + status: 'colombia2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [-76.26991, 7.36696], + }, + properties: { + icon: 'logo', + label: 'Embera', + xlink: 'https://livingdictionaries.app/embera', + size: 15000, + status: 'colombia2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [-73.64861, -0.90196], + }, + properties: { + icon: 'logo', + label: 'Uitoto', + xlink: 'https://livingdictionaries.app/uitoto', + size: 6800, + status: 'colombia2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [-72.27502135, 11.59319], + }, + properties: { + icon: 'logo', + label: 'Wayuunaiki', + xlink: 'https://livingdictionaries.app/wayuunaiki', + size: 135000, + status: 'colombia2012', + date: 2012, + }, + }, + { + geometry: { + coordinates: [-123.833, 45.4553], + }, + properties: { + icon: 'library-15', + label: 'Tillamook', + xlink: 'http://talkingdictionary.org/tillamook', + thumbnail: 'http://talkingdictionary.org/images/tillamook.jpg', + size: 0, + status: '', + date: 2013, + }, + }, + { + geometry: { + coordinates: [4.40609, 7.79927], + }, + properties: { + icon: 'logo', + label: 'Olùkùmi', + xlink: 'https://livingdictionaries.app/ol%C3%B9k%C3%B9mi', + size: 1000, + status: '', + date: 2012, + }, + }, + { + geometry: { + coordinates: [5.11529, 7.81952], + }, + properties: { + icon: 'library-15', + label: 'Ibibio', + xlink: 'http://talkingdictionary.org/ibibio', + size: 1750000, + status: '', + date: 2013, + }, + }, + { + geometry: { + coordinates: [28.67455, -4.19306], + }, + properties: { + icon: 'logo', + label: 'KiBembe', + xlink: 'https://livingdictionaries.app/kibembe', + thumbnail: 'http://talkingdictionary.org/images/kibembe.jpg', + size: 252000, + status: 'in_progress', + date: 2013, + }, + }, + { + geometry: { + coordinates: [84.40294, 22.34976], + }, + properties: { + icon: 'logo', + label: 'Kharia', + xlink: 'https://livingdictionaries.app/kharia', + size: 292000, + status: 'in_progress', + date: 2013, + }, + }, + { + geometry: { + coordinates: [85.02258, 22.49423], + }, + properties: { + icon: 'logo', + label: 'Kera Mundari', + xlink: 'https://livingdictionaries.app/kera-mundari', + size: 1550000, + status: 'in_progress', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-96.553333, 17.533889], + }, + properties: { + icon: 'library-15', + label: 'Macuiltianguis Zapotec', + xlink: 'http://talkingdictionary.org/macuiltianguis', + size: 28600, + status: 'zapotec2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-96.52, 17.029167], + }, + properties: { + icon: 'library-15', + label: 'Teotitlán del Valle Zapotec', + xlink: 'http://talkingdictionary.org/teotitlan', + size: 28600, + status: 'zapotec2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [-96.466667, 16.9], + }, + properties: { + icon: 'library-15', + label: 'San Lucas Quiaviní Zapotec', + xlink: 'http://talkingdictionary.org/sanlucasquiavini', + size: 1769, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-96.479167, 16.954167], + }, + properties: { + icon: 'library-15', + label: 'Tlacolula de Matamoros Zapotec', + xlink: 'http://talkingdictionary.org/tlacolula', + size: 16500, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-96.15, 17], + }, + properties: { + icon: 'library-15', + label: 'Tlacochahuaya Zapotec', + xlink: 'http://talkingdictionary.org/tlacochahuaya', + size: 2000, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [159.76456, 6.69246], + }, + properties: { + icon: 'library-15', + label: 'Mokilese', + xlink: 'http://talkingdictionary.org/mokilese', + size: 1050, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [151.5808, 7.3689], + }, + properties: { + icon: 'library-15', + label: 'Chuukese', + xlink: 'http://talkingdictionary.org/chuukese', + size: 45900, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [158.241, 6.882], + }, + properties: { + icon: 'library-15', + label: 'Pohnpeian', + xlink: 'http://talkingdictionary.org/pohnpeian', + size: 31500, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [160.70509, 6.20946], + }, + properties: { + icon: 'library-15', + label: 'Pingelapese', + xlink: 'http://talkingdictionary.org/pingelapese', + size: 3000, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [162.97833, 5.31274], + }, + properties: { + icon: 'library-15', + label: 'Kosraean', + xlink: 'http://talkingdictionary.org/kosraean', + size: 8000, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [153.13, 6.01], + }, + properties: { + icon: 'library-15', + label: 'Namolukese', + xlink: 'http://talkingdictionary.org/namolukese', + size: 400, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [138.116667, 9.533333], + }, + properties: { + icon: 'library-15', + label: 'Yapese', + xlink: 'http://talkingdictionary.org/yapese', + size: 6590, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [154.940833, 3.848333], + }, + properties: { + icon: 'library-15', + label: 'Nukuoro', + xlink: 'http://talkingdictionary.org/nukuoro', + size: 900, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [154.783333, 1.066667], + }, + properties: { + icon: 'library-15', + label: 'Kapingamarangi', + xlink: 'http://talkingdictionary.org/kapingamarangi', + size: 5000, + status: 'micronesia2013', + date: 2013, + }, + }, + { + geometry: { + coordinates: [30.50188, -15.55076], + }, + properties: { + icon: 'logo', + label: 'Chikunda', + xlink: 'https://livingdictionaries.app/chikunda', + size: 5500, + status: 'zimbabwe2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [26.7983, -21.2559], + }, + properties: { + icon: 'logo', + label: 'Kalanga', + xlink: 'https://livingdictionaries.app/kalanga', + size: 150000, + status: 'zimbabwe2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [26.08399, -18.25511], + }, + properties: { + icon: 'logo', + label: 'Nambya', + xlink: 'https://livingdictionaries.app/nambya', + size: 90000, + status: 'zimbabwe2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [32.42844, -19.98518], + }, + properties: { + icon: 'logo', + label: 'Ndau', + xlink: 'https://livingdictionaries.app/ndau', + size: 800000, + status: 'zimbabwe2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [28.68473, -19.70768], + }, + properties: { + icon: 'logo', + label: 'Ndebele', + xlink: 'https://livingdictionaries.app/ndebele', + size: 1550000, + status: 'zimbabwe2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [30.6472, -18.29002], + }, + properties: { + icon: 'logo', + label: 'Shona', + xlink: 'https://livingdictionaries.app/shona', + size: 10700000, + status: 'zimbabwe2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [27.05989, -19.89291], + }, + properties: { + icon: 'logo', + label: 'Tjwao', + xlink: 'https://livingdictionaries.app/tjwao', + size: 3540, + status: 'zimbabwe2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-89.41924, 16.19537], + }, + properties: { + icon: 'logo', + label: 'Mopan', + xlink: 'https://livingdictionaries.app/mopan', + size: 2600, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-92.02282, 15.3499], + }, + properties: { + icon: 'logo', + label: 'Tektiteko', + xlink: 'https://livingdictionaries.app/tektiteko', + size: 4900, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-90.89041, 15.36374], + }, + properties: { + icon: 'logo', + label: 'Uspanteko', + xlink: 'https://livingdictionaries.app/uspanteko', + size: 3000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-89.12976, 14.83884], + }, + properties: { + icon: 'logo', + label: "Ch'orti'", + xlink: 'https://livingdictionaries.app/chorti', + size: 10, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-89.87889, 17.00912], + }, + properties: { + icon: 'logo', + label: 'Itza', + xlink: 'https://livingdictionaries.app/itza', + size: 12, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.10348, 15.27058], + }, + properties: { + icon: 'logo', + label: 'Sakapulteko', + xlink: 'https://livingdictionaries.app/sakapulteko', + size: 15000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-81.85312, 8.67031], + }, + properties: { + icon: 'logo', + label: 'Ngäbere', + xlink: 'https://livingdictionaries.app/ngabere', + size: 128000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.311982, 15.342949], + }, + properties: { + icon: 'logo', + label: 'Chalchiteko', + xlink: 'https://livingdictionaries.app/chalchiteko', + size: 20000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-90.34901, 15.07994], + }, + properties: { + icon: 'logo', + label: 'Achi', + xlink: 'https://livingdictionaries.app/achi', + size: 37300, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.71986, 15.81541], + }, + properties: { + icon: 'logo', + label: 'Akateko', + xlink: 'https://livingdictionaries.app/akateko', + size: 48500, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.31661, 15.33873], + }, + properties: { + icon: 'library-15', + label: 'Awakateko', + xlink: 'http://talkingdictionary.org/awakateko', + size: 18000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.55596, 15.71656], + }, + properties: { + icon: 'logo', + label: 'Chuj', + xlink: 'https://livingdictionaries.app/chuj', + size: 19500, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-90.86726, 15.48785], + }, + properties: { + icon: 'logo', + label: 'Ixil', + xlink: 'https://livingdictionaries.app/ixil', + size: 16000, + status: 'guatemala2014', + date: 2014, + }, + }, + // empty on old + // { + // geometry: { + // coordinates: [-91.64871, 15.64162], + // }, + // properties: { + // icon: 'library-15', + // label: 'Jakalteko', + // xlink: 'http://talkingdictionary.org/jakalteko', + // size: 11000, + // status: 'guatemala2014', + // date: 2014, + // }, + // }, + { + geometry: { + coordinates: [-90.97431, 14.74326], + }, + properties: { + icon: 'logo', + label: 'Kaqchikel', + xlink: 'https://livingdictionaries.app/kaqchikel', + size: 132000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.21206, 15.03693], + }, + properties: { + icon: 'logo', + label: "K'iche'", + xlink: 'https://livingdictionaries.app/kiche', + size: 1900000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-90.45278, 14.72214], + }, + properties: { + icon: 'logo', + label: 'Poqomam', + xlink: 'https://livingdictionaries.app/poqomam', + size: 8600, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-90.20652, 15.30494], + }, + properties: { + icon: 'logo', + label: "Poqomchi'", + xlink: 'https://livingdictionaries.app/poqomchi', + size: 42200, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.31437, 15.68562], + }, + properties: { + icon: 'logo', + label: "Q'anjob'al", + xlink: 'https://livingdictionaries.app/qanjobal', + size: 77700, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-89.83185, 15.89761], + }, + properties: { + icon: 'logo', + label: "Q'eqchi'", + xlink: 'https://livingdictionaries.app/qeqchi', + size: 400000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.70406, 15.22943], + }, + properties: { + icon: 'logo', + label: 'Sipakapense', + xlink: 'https://livingdictionaries.app/sipakapense', + size: 8000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-91.18298, 14.61742], + }, + properties: { + icon: 'logo', + label: "Tz'utujil", + xlink: 'https://livingdictionaries.app/tzutujil', + size: 50000, + status: 'guatemala2014', + date: 2014, + }, + }, + { + geometry: { + coordinates: [22.31348, -21.7807], + }, + properties: { + icon: 'library-15', + label: 'Gana', + xlink: 'http://talkingdictionary.org/gana', + size: 2000, + status: 'in_progress', + date: 2014, + }, + }, + // removing because it's empty + // { + // geometry: { + // coordinates: [21.88777, -21.41412], + // }, + // properties: { + // icon: 'library-15', + // label: 'Herero', + // xlink: 'http://talkingdictionary.org/herero', + // size: 31000, + // status: 'in_progress', + // date: 2014, + // }, + // }, + { + geometry: { + coordinates: [22.1266, -23.70811], + }, + properties: { + icon: 'library-15', + label: 'Kgalagadi', + xlink: 'http://talkingdictionary.org/kgalagadi', + size: 40000, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [23.65565, -19.56084], + }, + properties: { + icon: 'library-15', + label: 'Yeyi', + xlink: 'http://talkingdictionary.org/yeyi', + size: 20000, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [126.541985, 33.363472], + }, + properties: { + icon: 'library-15', + label: 'Jeju-eo', + xlink: 'http://talkingdictionary.org/jeju', + size: 3000, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [143.60502, -4.48218], + }, + properties: { + icon: 'logo', + label: 'Yokoim', + xlink: 'https://livingdictionaries.app/yokoim', + size: 2080, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [145.74581, -5.21379], + }, + properties: { + icon: 'logo', + label: 'Panim', + xlink: 'https://livingdictionaries.app/panim', + size: 420, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [-119.700833, 37.211389], + }, + properties: { + icon: 'library-15', + label: 'Chukchansi', + xlink: 'http://talkingdictionary.org/chukchansi', + size: 80, + status: 'in_progress', + date: 2013, + }, + }, + { + geometry: { + coordinates: [87.31703, 24.64124], + }, + properties: { + icon: 'logo', + label: 'Santali', + xlink: 'https://livingdictionaries.app/santali', + size: 5960000, + status: 'in_progress', + date: 2013, + }, + }, + { + geometry: { + coordinates: [82.9912, 18.6173], + }, + properties: { + icon: 'logo', + label: "Gta'", + xlink: 'https://livingdictionaries.app/gta', + size: 3060, + status: 'in_progress', + date: 2014, + }, + }, + { + geometry: { + coordinates: [92.72325, 27.23525], + }, + properties: { + icon: 'library-15', + label: 'Hruso Aka', + xlink: 'http://talkingdictionary.org/hruso', + size: 4000, + status: 'in_progress', + date: 2014, + }, + }, +]; diff --git a/functions/scripts/refactor/upload-old-dictionaries.ts b/functions/scripts/refactor/upload-old-dictionaries.ts new file mode 100644 index 000000000..bc4a3208d --- /dev/null +++ b/functions/scripts/refactor/upload-old-dictionaries.ts @@ -0,0 +1,31 @@ +import { IDictionary } from '../../../src/lib/interfaces'; +import { db, firebase } from '../config'; +import { tdLocations } from './tdv1-dictionaries'; +(() => { + try { + tdLocations.forEach(async (dictionary) => { + if (dictionary.properties.icon === 'library-15') { + const dictionaryUrl = dictionary.properties.xlink.match( + /http:\/\/talkingdictionary.org\/(.+)/ + )[1]; + const data: Partial = { + name: dictionary.properties.label, + population: dictionary.properties.size, + publishYear: dictionary.properties.date, + coordinates: new firebase.firestore.GeoPoint( + dictionary.geometry.coordinates[1], + dictionary.geometry.coordinates[0] + ), + url: dictionary.properties.xlink, + type: 'tdv1', + }; + if (dictionary.properties.thumbnail) { + data.thumbnail = dictionary.properties.thumbnail; + } + await db.doc(`dictionaries/tdv1-${dictionaryUrl}`).set(data); + } + }); + } catch (err) { + console.log(err); + } +})(); diff --git a/functions/src/aggregation/decreaseEntryCount.ts b/functions/src/aggregation/decreaseEntryCount.ts new file mode 100644 index 000000000..02fb185aa --- /dev/null +++ b/functions/src/aggregation/decreaseEntryCount.ts @@ -0,0 +1,12 @@ +import * as functions from 'firebase-functions'; +import * as admin from 'firebase-admin'; +admin.initializeApp(); + +export default async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + const dictionaryId = context.params.dictionaryId; + await admin.firestore().doc(`dictionaries/${dictionaryId}`).update({ entryCount: admin.firestore.FieldValue.increment(-1) }); + return true; +} \ No newline at end of file diff --git a/functions/src/aggregation/increaseEntryCount.ts b/functions/src/aggregation/increaseEntryCount.ts new file mode 100644 index 000000000..6bdd663e8 --- /dev/null +++ b/functions/src/aggregation/increaseEntryCount.ts @@ -0,0 +1,13 @@ +import * as functions from 'firebase-functions'; +import * as admin from 'firebase-admin'; +admin.initializeApp(); + +export default async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + const dictionaryId = context.params.dictionaryId; + console.log('about to increment entry count'); + await admin.firestore().doc(`dictionaries/${dictionaryId}`).update({ entryCount: admin.firestore.FieldValue.increment(1) }); + return true; +} \ No newline at end of file diff --git a/functions/src/algolia/modifyIndex.ts b/functions/src/algolia/modifyIndex.ts new file mode 100644 index 000000000..0515e1540 --- /dev/null +++ b/functions/src/algolia/modifyIndex.ts @@ -0,0 +1,57 @@ +import * as functions from 'firebase-functions'; +import algoliasearch from 'algoliasearch'; + +// Set by running `firebase functions:config:set algolia.app="..."` +// read with `firebase functions:config:get` +const APP_ID = functions.config().algolia.app_id; +const ADMIN_KEY = functions.config().algolia.admin_key; +const projectId = functions.config().project.key; + +const client = algoliasearch(APP_ID, ADMIN_KEY); +const prodIndex = client.initIndex('entries_prod'); +const devIndex = client.initIndex('entries_dev'); + +import { prepareDataForIndex } from './prepareDataForIndex'; +import { IEntry } from '../../../src/lib/interfaces'; + +export const addToIndex = async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + const objectID = snapshot.id; + console.log(`adding ${objectID} to Algolia index`); + const dictionaryId = context.params.dictionaryId; + const entry = await prepareDataForIndex(snapshot.data() as IEntry, dictionaryId); + if (projectId === 'talking-dictionaries-alpha') { + await prodIndex.saveObject({ objectID, ...entry }); + } + await devIndex.saveObject({ objectID, ...entry }); + return true; +}; + +export const updateIndex = async ( + change: functions.Change, + context: functions.EventContext +) => { + const objectID = change.after.id; + console.log(`updating ${objectID} in Algolia index`); + const dictionaryId = context.params.dictionaryId; + const entry = await prepareDataForIndex(change.after.data() as IEntry, dictionaryId); + if (projectId === 'talking-dictionaries-alpha') { + await prodIndex.saveObject({ objectID, ...entry }); + } + await devIndex.saveObject({ objectID, ...entry }); + return true; +}; + +export const deleteFromIndex = async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + console.log(`deleting ${snapshot.id} from Algolia index`); + if (projectId === 'talking-dictionaries-alpha') { + await prodIndex.deleteObject(snapshot.id); + } + await devIndex.deleteObject(snapshot.id); + return true; +}; diff --git a/functions/src/algolia/prepareDataForIndex.ts b/functions/src/algolia/prepareDataForIndex.ts new file mode 100644 index 000000000..e9673a82b --- /dev/null +++ b/functions/src/algolia/prepareDataForIndex.ts @@ -0,0 +1,107 @@ +import * as admin from 'firebase-admin'; +admin.initializeApp(); + +import { IEntry } from '../../../src/lib/interfaces'; + +export async function prepareDataForIndex(dbEntry: IEntry, dictionaryId: string) { + const entry: IEntry = dbEntry; + delete entry.id; + entry.dictId = dictionaryId; + + if (entry.pf && entry.pf.gcs) { + entry.hasImage = true; + entry.pf = { + gcs: entry.pf.gcs, + }; + } else { + entry.hasImage = false; + delete entry.pf; + } + + if (entry.sf && entry.sf.path) { + entry.hasAudio = true; + const cleanSf: any = { + path: entry.sf.path, + }; + if (entry.sf.speakerName) { + entry.hasSpeaker = true; + cleanSf.speakerName = entry.sf.speakerName; + } else if (entry.sf.sp) { + entry.hasSpeaker = true; + const speakerSnap = await admin.firestore().doc(`speakers/${entry.sf.sp}`).get(); + const speaker = speakerSnap.data(); + if (speaker && speaker.displayName) { + cleanSf.speakerName = speaker.displayName; + } else { + const userSnap = await admin.firestore().doc(`users/${entry.sf.sp}`).get(); + const user = userSnap.data(); + if (user && user.displayName) { + cleanSf.speakerName = user.displayName; + } + } + } else { + entry.hasSpeaker = false; + } + entry.sf = cleanSf; + } else { + entry.hasAudio = false; + delete entry.sf; + } + + if (entry.sd || (entry.sdn && entry.sdn.length)) { + entry.hasSemanticDomain = true; + } else { + entry.hasSemanticDomain = false; + } + + if (entry.ps) { + entry.hasPartOfSpeech = true; + } else { + entry.hasPartOfSpeech = false; + } + + if (entry.createdBy) { + entry.cb = entry.createdBy; + delete entry.createdBy; + } + + if (entry.updatedBy) { + entry.ub = entry.updatedBy; + delete entry.updatedBy; + } + + if (entry.ua) { + // @ts-ignore + entry.ua = entry.ua._seconds; + } + + if (entry.ca) { + // @ts-ignore + entry.ca = entry.ca._seconds; + } + + if (entry.updatedAt) { + // @ts-ignore + entry.ua = entry.updatedAt._seconds; + delete entry.updatedAt; + } + + if (entry.createdAt) { + // @ts-ignore + entry.ca = entry.createdAt._seconds; + delete entry.createdAt; + } + + Object.keys(entry).forEach((key) => { + //@ts-ignore + const value = entry[key]; + if (value === '' || value === null) { + //@ts-ignore + delete entry[key]; + } + }); + + // Handle ii? (import ID) + + return entry; +} diff --git a/functions/src/auth.ts b/functions/src/auth.ts new file mode 100644 index 000000000..1f405296c --- /dev/null +++ b/functions/src/auth.ts @@ -0,0 +1,14 @@ +// import * as functions from 'firebase-functions'; +// import { db } from './config'; + +// export const createUserRecord = functions.auth +// .user() +// .onCreate((user, context) => { +// const userRef = db.doc(`users/${user.uid}`); + +// return userRef.set({ +// name: user.displayName, +// createdAt: context.timestamp, +// nickname: 'bubba' +// }); +// }); diff --git a/functions/src/config.ts b/functions/src/config.ts new file mode 100644 index 000000000..94c0549d1 --- /dev/null +++ b/functions/src/config.ts @@ -0,0 +1,15 @@ +import * as admin from 'firebase-admin'; +export const firebase = admin.initializeApp(); + +export const db = admin.firestore(); +const settings = { timestampsInSnapshots: true}; +db.settings(settings); + +export const timestamp = admin.firestore.FieldValue.serverTimestamp(); +export const oneMinuteAgo = admin.firestore.Timestamp.fromDate(new Date(Date.now() - 1000 * 60)); +export const testingTimestamp = admin.firestore.Timestamp.fromDate(new Date); + +export const increment = admin.firestore.FieldValue.increment(1); +export const decrement = admin.firestore.FieldValue.increment(-1); + +export const storage = admin.storage(); diff --git a/functions/src/deletion/deleteMediaOnDictionaryDelete.ts b/functions/src/deletion/deleteMediaOnDictionaryDelete.ts new file mode 100644 index 000000000..f35a635c3 --- /dev/null +++ b/functions/src/deletion/deleteMediaOnDictionaryDelete.ts @@ -0,0 +1,15 @@ +import * as functions from 'firebase-functions' +import * as admin from 'firebase-admin'; +admin.initializeApp(); + +export default async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + const { dictionaryId } = context.params; + const bucket = admin.storage().bucket(); + + return bucket.deleteFiles({ + prefix: `${dictionaryId}` + }); +} diff --git a/functions/src/deletion/recursiveDelete.ts b/functions/src/deletion/recursiveDelete.ts new file mode 100644 index 000000000..d02503cc8 --- /dev/null +++ b/functions/src/deletion/recursiveDelete.ts @@ -0,0 +1,46 @@ +import * as functions from 'firebase-functions'; +const firebase_tools = require('firebase-tools'); + +/** + * Initiate a recursive delete of documents at a given path. + * + * The calling user must be authenticated and have the custom "admin" attribute + * set to true on the auth token. + * + * This delete is NOT an atomic operation and it's possible + * that it may fail after only deleting some documents. + * + * @param {string} data.path the document or collection path to delete. + */ +export default async (data: any, context: functions.https.CallableContext) => { + // if (!(context.auth && context.auth.token && context.auth.token.admin)) { + // Only allow authorized users to execute this function. // Could improve by reading user data from Firestore and looking at admin role > 1 + if ( + !( + context.auth && + (context.auth.uid === '0seqYnZOqkUz050y6jVQI9QvlW62' || + context.auth.uid === '2PELJgjxMHXEOcuZfv9MtGyiXdE3') + ) + ) { + throw new functions.https.HttpsError( + 'permission-denied', + 'Must be an administrative user to initiate delete.' + ); + } + + const path = data.path; + console.log(`User ${context.auth.uid} has requested to delete path ${path}`); + + // Run a recursive delete on the given document or collection path. + // The 'token' must be set in the functions config, and can be generated + // at the command line by running 'firebase login:ci'. + await firebase_tools.firestore.delete(path, { + project: process.env.GCLOUD_PROJECT, + recursive: true, + yes: true, + token: functions.config().fb.token, + }); + return { + path: path, + }; +}; diff --git a/functions/src/email/adminRecipients.ts b/functions/src/email/adminRecipients.ts new file mode 100644 index 000000000..61b7c1d7a --- /dev/null +++ b/functions/src/email/adminRecipients.ts @@ -0,0 +1,15 @@ +import * as functions from 'firebase-functions'; + +function getRecipients() { + // Set by running `firebase functions:config:set project.key="your_key"` + // read with `firebase functions:config:get` + const projectId = functions.config().project.key; + if (projectId === 'talking-dictionaries-alpha') { + return ['jacob@livingtongues.org', 'annaluisa@livingtongues.org', 'livingtongues@gmail.com']; + } else { + //talking-dictionaries-dev + return ['jacob@livingtongues.org']; + } +} + +export const adminRecipients = getRecipients(); diff --git a/functions/src/email/inviteContributor.ts b/functions/src/email/inviteContributor.ts new file mode 100644 index 000000000..4aebce306 --- /dev/null +++ b/functions/src/email/inviteContributor.ts @@ -0,0 +1,89 @@ +import * as functions from 'firebase-functions'; +import * as admin from 'firebase-admin'; +admin.initializeApp(); + +// Learned from https://fireship.io/lessons/sendgrid-transactional-email-guide/ +import * as sgMail from '@sendgrid/mail'; +import { IInvite } from '../../../src/lib/interfaces'; + +const sg_api_key = functions.config().sendgrid.key; +// Set by running `firebase functions:config:set sendgrid.key="your_key"` // see https://fireship.io/lessons/sendgrid-transactional-email-guide/ +// read with firebase functions:config:get +sgMail.setApiKey(sg_api_key); + +import { adminRecipients } from './adminRecipients'; + +export default async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + const invite = snapshot.data() as IInvite; + const dictionaryId = context.params.dictionaryId; + const inviteId = context.params.inviteId; + + const roleMessage = + invite.role === 'manager' ? 'manager' : 'contributor, which allows you to add and edit entries'; + if (invite) { + const msg = { + from: 'annaluisa@livingtongues.org', + to: invite.targetEmail, + replyTo: invite.inviterEmail, + subject: `${invite.inviterName} has invited you to contribute to the ${invite.dictionaryName} Living Dictionary`, + trackingSettings: { + clickTracking: { + enable: false, + enableText: false, + }, + }, + text: `Hello, + +${invite.inviterName} has invited you to work on the ${invite.dictionaryName} Living Dictionary as a ${roleMessage}. If you would like to help with this dictionary, then open this link: https://livingdictionaries.app/${dictionaryId}/invite/${inviteId} to access the dictionary. + +If you have any questions for ${invite.inviterName}, send an email to ${invite.inviterEmail} + +Thank you, +Living Tongues Institute for Endangered Languages + +https://livingtongues.org (Living Tongues Homepage) +https://livingdictionaries.app (Living Dictionaries website)`, + }; + const reply = await sgMail.send(msg); + console.log(reply); + + const inviteRef = admin.firestore().doc(`dictionaries/${dictionaryId}/invites/${inviteId}`); + await inviteRef.update({ + status: 'sent', + }); + + if (!adminRecipients.includes(invite.inviterEmail)) { + const adminMsg = { + from: 'jacob@livingtongues.org', + to: adminRecipients, + replyTo: invite.inviterEmail, + subject: `${invite.inviterName} has invited ${invite.targetEmail} to contribute to the ${invite.dictionaryName} Living Dictionary`, + trackingSettings: { + clickTracking: { + enable: false, + enableText: false, + }, + }, + text: `Hello Admins, + +${invite.inviterName} has invited ${invite.targetEmail} to work on the ${invite.dictionaryName} Living Dictionary as a ${roleMessage}. + +Dictionary URL: https://livingdictionaries.app/${dictionaryId} + +If you have any questions for ${invite.inviterName}, just reply to this email. + +Thanks, +Our automatic Firebase Cloud Function + +https://livingdictionaries.app`, + }; + const adminReply = await sgMail.send(adminMsg); + console.log(adminReply); + } + } + + return { success: true }; +}; diff --git a/functions/src/email/onNewDictionary.ts b/functions/src/email/onNewDictionary.ts new file mode 100644 index 000000000..5c0f25556 --- /dev/null +++ b/functions/src/email/onNewDictionary.ts @@ -0,0 +1,87 @@ +import * as functions from 'firebase-functions'; +import * as admin from 'firebase-admin'; +admin.initializeApp(); + +// Learned from https://fireship.io/lessons/sendgrid-transactional-email-guide/ +import * as sgMail from '@sendgrid/mail'; +import { IDictionary, IUser } from '../../../src/lib/interfaces'; +const sg_api_key = functions.config().sendgrid.key; +// Set by running `firebase functions:config:set sendgrid.key="your_key"` // see https://fireship.io/lessons/sendgrid-transactional-email-guide/ +// read with firebase functions:config:get +sgMail.setApiKey(sg_api_key); + +import { adminRecipients } from './adminRecipients'; + +export default async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + const dictionary = snapshot.data() as IDictionary; + const dictionaryId = context.params.dictionaryId; + + const userSnap = await admin + .firestore() + .doc(`users/${dictionary && dictionary.createdBy}`) + .get(); + const user = userSnap.data() as IUser; + + if (dictionary && user) { + const msg = { + from: 'annaluisa@livingtongues.org', + to: user.email, + templateId: 'd-06857893fe684cd68ff11aec2fe7e36d', // "Created Dictionary" + dynamic_template_data: { + subject: 'New Living Dictionary Created', + dictionaryName: dictionary.name, + dictionaryId, + }, + }; + const reply = await sgMail.send(msg); + console.log(reply); + + const adminMsg = { + from: 'jacob@livingtongues.org', + to: adminRecipients, + subject: `Living Dictionary created: ${dictionary.name}`, + trackingSettings: { + clickTracking: { + enable: false, + enableText: false, + }, + }, + text: `Hey Admins, + +${user.displayName} created a new Living Dictionary for ${dictionary.name}. Here's the details: + +URL: https://livingdictionaries.app/${dictionaryId} + +Glossing languages: ${dictionary.glossLanguages} +Alternate names: ${dictionary.alternateNames ? dictionary.alternateNames : ''} +Alternate orthographies: ${ + dictionary.alternateOrthographies ? dictionary.alternateOrthographies : '' + } +Coordinates: ${ + dictionary.coordinates + ? 'lat: ' + dictionary.coordinates.latitude + ', lon: ' + dictionary.coordinates.longitude + : '' + } +Location: ${dictionary.location ? dictionary.location : ''} +Public: ${dictionary.public ? 'yes' : 'no'} +ISO 639-3: ${dictionary.iso6393 ? dictionary.iso6393 : ''} +Glottocode: ${dictionary.glottocode ? dictionary.glottocode : ''} + +We sent ${user.displayName} an automatic dictionary-info email to ${ + user.email + }, but you can also get in touch with them if needed. + +Thanks, +Our automatic Firebase Cloud Function + +https://livingdictionaries.app`, + }; + const adminReply = await sgMail.send(adminMsg); + console.log(adminReply); + } + + return { success: true }; +}; diff --git a/functions/src/email/onNewUser.ts b/functions/src/email/onNewUser.ts new file mode 100644 index 000000000..8e35865c2 --- /dev/null +++ b/functions/src/email/onNewUser.ts @@ -0,0 +1,54 @@ +import * as functions from 'firebase-functions'; + +// Learned from https://fireship.io/lessons/sendgrid-transactional-email-guide/ +import * as sgMail from '@sendgrid/mail'; +const sg_api_key = functions.config().sendgrid.key; +// Set by running `firebase functions:config:set sendgrid.key="your_key"` // see https://fireship.io/lessons/sendgrid-transactional-email-guide/ +// read with firebase functions:config:get +sgMail.setApiKey(sg_api_key); + +import { adminRecipients } from './adminRecipients'; + +export default async ( + snapshot: functions.firestore.DocumentSnapshot, + context: functions.EventContext +) => { + const user = snapshot.data(); + + if (user) { + const msg = { + from: 'annaluisa@livingtongues.org', + to: user.email, + templateId: 'd-7f80bcac817b46b7852caedd55786cce', // "Automatic Welcome" + dynamic_template_data: { + subject: 'Thank you for creating an account!', + // name: user.displayName, + }, + }; + const reply = await sgMail.send(msg); + console.log(reply); + + const adminMsg = { + from: 'jacob@livingtongues.org', + to: adminRecipients, + subject: `New Living Dictionaries user: ${user.displayName}`, + trackingSettings: { + clickTracking: { + enable: false, + enableText: false, + }, + }, + text: `Hey Admins, + + ${user.displayName} has just created a Living Dictionaries account, and we sent an automatic welcome email to ${user.email} + + Thanks, + Our automatic Firebase Cloud Function + + https://livingdictionaries.app`, + }; + const adminReply = await sgMail.send(adminMsg); + console.log(adminReply); + } + return { success: true }; +}; diff --git a/functions/src/email/supportEmail.ts b/functions/src/email/supportEmail.ts new file mode 100644 index 000000000..4996b7cf5 --- /dev/null +++ b/functions/src/email/supportEmail.ts @@ -0,0 +1,34 @@ +import * as functions from 'firebase-functions'; + +import * as sgMail from '@sendgrid/mail'; +const sg_api_key = functions.config().sendgrid.key; +// Set by running `firebase functions:config:set sendgrid.key="your_key"` // see https://fireship.io/lessons/sendgrid-transactional-email-guide/ +// read with firebase functions:config:get +sgMail.setApiKey(sg_api_key); + +// https://sendgrid.com/docs/api-reference/ +// https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html + +export default async ( + data: any, + context: functions.https.CallableContext +) => { + const msg = { + from: 'jacob@livingtongues.org', + to: 'annaluisa@livingtongues.org', + replyTo: data.email, + subject: 'Living Dictionaries Support Request', + trackingSettings: { + clickTracking: { + enable: false, + enableText: false, + } + }, + text: `${data.message} + +Sent by ${data.name} (${data.email}) from ${data.url}`, + }; + const reply = await sgMail.send(msg); + console.log(reply); + return { success: true }; +} \ No newline at end of file diff --git a/functions/src/export/interfaceExplanations.ts b/functions/src/export/interfaceExplanations.ts new file mode 100644 index 000000000..fc8ee5c92 --- /dev/null +++ b/functions/src/export/interfaceExplanations.ts @@ -0,0 +1,210 @@ +import { ISemanticDomain } from '../../../src/lib/interfaces'; + +export const semanticDomains: ISemanticDomain[] = [ + { key: '1', name: 'Universe and the natural world' }, + { key: '1.1', name: 'Sky, weather and climate' }, + { key: '1.2', name: 'Earth, geology and landscape' }, + { key: '1.3', name: 'Water, bodies of water and the water cycle' }, + { key: '1.4', name: 'Plants, trees and other vegetation' }, + { key: '1.5', name: 'Animals' }, + { key: '1.6', name: 'Colors' }, + { key: '1.7', name: 'Birds' }, + { key: '1.8', name: 'Fish and marine creatures' }, + { key: '1.9', name: 'Insects and small creatures' }, + { key: '1.10', name: 'Reptiles and amphibians' }, + { key: '2', name: 'Humans, Social Relations and Organization' }, + { key: '2.1', name: 'Body parts' }, + { key: '2.2', name: 'Body functions' }, + { key: '2.3', name: 'Senses and perception' }, + { key: '2.4', name: 'Health, well-being and sickness' }, + { key: '2.5', name: 'Life stages and rites of passage' }, + { key: '2.6', name: 'Kinship and relationships' }, + { key: '2.7', name: 'Social activities and interactions' }, + { key: '2.8', name: 'Government and Law' }, + { key: '3', name: 'Language and Communication' }, + { key: '3.1', name: 'Mental actions' }, + { key: '3.2', name: 'Emotions' }, + { key: '3.3', name: 'Education and learning' }, + { key: '4', name: 'Names' }, + { key: '4.1', name: 'Names of people and clans' }, + { key: '4.2', name: 'Place names' }, + { key: '4.3', name: 'Sacred names' }, + { key: '5', name: 'Daily life' }, + { key: '5.1', name: 'Household' }, + { key: '5.2', name: 'Agriculture' }, + { key: '5.3', name: 'Food, cooking and foodways' }, + { key: '5.4', name: 'Clothing and adornment' }, + { key: '5.5', name: 'Cleanliness and hygiene' }, + { key: '5.6', name: 'Sleep' }, + { key: '5.7', name: 'Work and occupations' }, + { key: '5.8', name: 'Animal husbandry' }, + { key: '5.9', name: 'Tools and weapons' }, + { key: '5.10', name: 'Finance and Business' }, + { key: '5.11', name: 'Hunting and Fishing' }, + { key: '5.12', name: 'Art, crafts and textiles' }, + { key: '5.13', name: 'Construction' }, + { key: '5.14', name: 'Sports and games' }, + { key: '5.15', name: 'Transportation' }, + { key: '6', name: 'Physical Actions and States' }, + { key: '6.1', name: 'Posture' }, + { key: '6.2', name: 'Motion' }, + { key: '6.3', name: 'Possession' }, + { key: '6.4', name: 'Physical Impact' }, + { key: '6.5', name: 'States' }, + { key: '7', name: 'Quantities and Quantifiers' }, + { key: '7.1', name: 'Numerals' }, + { key: '7.2', name: 'Sizes and dimensions' }, + { key: '7.3', name: 'Units of Measure' }, + { key: '7.4', name: 'Quantifiers' }, + { key: '8', name: 'Time' }, + { key: '9', name: 'Location and Directions' }, + { key: '10', name: 'Grammar' }, + { key: '10.1', name: 'Case Markers / Adpositions ' }, + { key: '10.2', name: 'TAM' }, + { key: '10.3', name: 'Polarity' }, + { key: '10.4', name: 'Coordinators, Subordinators, Relativizers, Quotatives' }, + { key: '10.5', name: 'Discourse Markers' }, + { key: '10.6', name: 'Interjections' }, + { key: '10.7', name: 'Ideophones, Expressives & Onomatopoeia' }, + { key: '10.8', name: 'Classifiers' }, + { key: '10.9', name: 'Pro-forms' }, +]; + +export const partsOfSpeech = { + n: 'noun', + pro: 'pronoun', + v: 'verb', + adj: 'adjective', + adv: 'adverb', + prep: 'preposition', + conj: 'conjunction', + det: 'determiner', + int: 'interjection', + no: 'number', + dem: 'demonstrative', + 'n pl': 'plural noun', + phr: 'phrase', + p: 'particle', + neg: 'negative', + quan: 'quantifier', + rel: 'relative', + 'v.aux': 'auxiliary verb', + 'dem.a': 'animate demonstrative', + 'dem.i': 'inanimate demonstrative', + 'dem.loc': 'locative demonstrative', + dim: 'diminutive', + na: 'animate noun', + ni: 'inanimate noun', + pl: 'plural', + pn: 'prenoun', + pv: 'preverb', + 'pn/v': 'prenoun / preverb', + 'pro.a': 'animate pronoun', + 'pro.i': 'inanimate pronoun', + redup: 'reduplication', + refl: 'reflexive', + vai: 'animate intransitive verb', + 'vai/ii': 'animate / inanimate intransitive verb', + vii: 'inanimate intransitive verb', + vta: 'transitive animate verb', + vti: 'transitive inanimate verb', + imp: 'imperative/command marker', + pref: 'prefix', + punc: 'punctuation', + suff: 'suffix', + vt: 'transitive verb', + vi: 'intransitive verb', + comp: 'complement(izer)', + cpd: 'compound', + pple: 'participle', + sent: 'sentence', + 'pr.n': 'proper noun', + np: 'noun phrase', + vp: 'verb phrase', + ap: 'adjective phrase', + 'adv.p': 'adverb phrase', + q: 'question marker', + ger: 'gerund', + art: 'article', + post: 'postposition', + 'e.w': 'entry word / discourse particle', + 'm.w': 'measure word', + msd: 'masdar', + idf: 'idafa', + 'v.prdg': 'verbal paradigm', + acr: 'acronym', + cntr: 'contraction', + num: 'numeral', + 'act.v': 'active verb', + 'stat.v': 'stative verb', + 'caus.v': 'causative verb', + 'v.suff': 'verb suffix', + 'n.suff': 'noun suffix', + 'n.pref': 'noun prefix', + 'v.pref': 'verb prefix', + ideo: 'ideophone (onomatoepia / expressives)', + clf: 'classifier', + tns: 'tense marker', + asp: 'aspect marker', + mod: 'mood marker', + 'n.cls': 'noun class marker', + quot: 'quotative', + adp: 'adposition', + def: 'definite article', + indf: 'indefinite article', + indfpro: 'indefinite pronoun', + pers: 'personal pronoun', + poss: 'possessive pronoun', + reflpro: 'reflexive pronoun', + relpro: 'relative pronoun', + vd: 'ditransitive verb', + 'interr.pro': 'interrogative pronoun', + cop: 'copula', + 'imp.verb': 'imperative verb', + 'phr.v': 'phrasal verb', + 'inal.n': 'inalienable noun', + 'rel.n': 'relational noun', + 'v.n': 'verbal noun', +}; + +export const entryInterface = { + id: + 'Unique Entry ID - use this for links to the entry on Living Dictionaries, as well as to compare new imports with previous data', + lx: + "lexeme is the linguistic term meaning the 'headword' for the dictionary entry - this is the word or phrase in the vernacular language which is being described by all of the other data, being photographed, and recorded", + gl: { + en: + 'English gloss - the word/phrase used in English that is a translation of the lexeme into English', + es: + "Multiple keys can show up in the gloss object - one for each language which the lexemes in this dictionary are being made available in. So for a dictionary that makes words understandable to English and Spanish speakers, you would see a gloss object with 'en' and 'es' keys (keys are the bcp codes for languages)", + }, + in: 'interlinearization', + lo: + 'Local/Alternate Orthography - some languages have two writings systems or more, and these fields give opportunity for expressing these alternate writing systems - Look at the optional dictionary.alternateOrthographies object to learn the name of each orthography', + lo2: 'Local Orthography 2...', + lo3: 'Local Orthography 3...', + lo4: 'Local Orthography 4...', + lo5: 'Local Orthography 5...', + di: 'dialect', + ph: 'phonetic pronunciation - usually written in IPA (international phonetic alphabet)', + ps: 'part of speech abrreviation (see partOfSpeechMappings)', + sdn: 'array of semantic domain number strings (see semanticDomainNumberMappings)', + sd: 'semantic domain strings (deprecated)', + nt: 'notes', + xv: 'example vernacular', + xs: + "example sentences object formatted in same manner as gl object, except the 'vn' key refers to the vernacular language", + mr: 'morphology (of the lexeme)', + sf: { + speakerName: 'name of speaker in recorded sound file', + sp: 'id speaker in recorded sound file', + ts: 'timestamp of recording', + audioURL: 'Audio file location', + }, + pf: { + imageURL: 'Image file location', + }, + ca: 'created at', + ua: 'updated at', + ei: 'Elicitation Id', +}; diff --git a/functions/src/export/semanticDomainOfDictionary.emulator.test.ts b/functions/src/export/semanticDomainOfDictionary.emulator.test.ts new file mode 100644 index 000000000..efd97dee5 --- /dev/null +++ b/functions/src/export/semanticDomainOfDictionary.emulator.test.ts @@ -0,0 +1,49 @@ +/* tslint:disable */ +import * as firebase from '@firebase/testing'; + +/** + * The emulator will accept any project ID for testing. + */ +const PROJECT_ID = `rules-spec-${Date.now()}`; // 'talking-dictionaries-dev' + +/** + * Creates a new admin FirebaseApp and returns the Firestore instance. + */ +export const getAdminFirestore = () => { + return firebase.initializeAdminApp({ projectId: PROJECT_ID }).firestore(); +}; + +export const clearFirestore = async () => { + // Clear the database between tests + await firebase.clearFirestoreData({ projectId: PROJECT_ID }); +}; + +export const teardown = async () => { + Promise.all(firebase.apps().map((app) => app.delete())); +}; + +// const faker = require('faker'); // https://github.com/marak/faker.js +// export const fakeEntries = async () => { +// let entries = Array(20).fill(0); +// for (const entry of entries) { +// await getAdminFirestore().collection(`dictionaries/dictID/words`).add({ +// username: faker.internet.userName(), +// avatar: faker.internet.avatar(), +// bio: faker.hacker.phrase() +// }) +// } +// } + +beforeEach(async () => { + await clearFirestore(); + // await fakeEntries(); +}); + +afterAll(async () => { + await teardown(); +}); + +test('foo', async () => { + await getAdminFirestore().doc('users/123').set({ id: 123, name: 'John' }); + expect(true).toBe(true); +}); diff --git a/functions/src/export/semanticDomainOfDictionary.ts b/functions/src/export/semanticDomainOfDictionary.ts new file mode 100644 index 000000000..89fb86a2c --- /dev/null +++ b/functions/src/export/semanticDomainOfDictionary.ts @@ -0,0 +1,124 @@ +// Example Usage: +// http://localhost:5001/talking-dictionaries-dev/us-central1/exportSemanticDomainOfDictionary?dictionaryID=gutob&semanticDomainID=1.3 + +// https://us-central1-talking-dictionaries-dev.cloudfunctions.net/exportSemanticDomainOfDictionary?dictionaryID=achi-1579819002171&semanticDomainID=1.1 +// https://us-central1-talking-dictionaries-alpha.cloudfunctions.net/exportSemanticDomainOfDictionary?dictionaryID=kera-mundari&semanticDomainID=2 + +import * as functions from 'firebase-functions'; + +import * as admin from 'firebase-admin'; +admin.initializeApp(); +const projectId = functions.config().project?.key; + +import { IDictionary, IEntry } from '../../../src/lib/interfaces'; +import { entryInterface, partsOfSpeech, semanticDomains } from './interfaceExplanations'; + +export default async ( + request: functions.https.Request, + response: functions.Response +): Promise => { + console.log('Export Semantic Domains Request Query params: ', request.query); + const queryParams = request.query; + if (queryParams?.dictionaryID && queryParams?.semanticDomainID) { + const dictionaryID = queryParams.dictionaryID; + const semanticDomainID = queryParams.semanticDomainID; + + const dictionarySnap = await admin.firestore().doc(`dictionaries/${dictionaryID}`).get(); + const dictionaryDoc = dictionarySnap.data() as IDictionary; + + if (dictionaryDoc && semanticDomainID === '1.7') { + const entriesSnapshot = await admin + .firestore() + .collection(`dictionaries/${dictionaryID}/words`) + .where('sdn', 'array-contains', semanticDomainID) + .get(); + const storageBucket = `talking-dictionaries-${ + projectId === 'talking-dictionaries-alpha' ? 'alpha' : 'dev' + }.appspot.com`; + + const entries = entriesSnapshot.docs.map((snap) => { + const entry = snap.data() as IEntry; + delete entry.ii; + delete entry.cb; + // @ts-ignore + delete entry.createdBy; + delete entry.ub; + // @ts-ignore + delete entry.updatedBy; + // @ts-ignore + entry.sourceURL = `https://livingdictionaries.app/${dictionaryID}/entry/${snap.id}`; + + if (entry.sf && entry.sf.path) { + delete entry.sf.source; + const convertedPath = entry.sf.path.replace(/\//g, '%2F'); + // @ts-ignore; + entry.sf.audioURL = `https://firebasestorage.googleapis.com/v0/b/${storageBucket}/o/${convertedPath}?alt=media`; + delete entry.sf.path; + } + + if (entry.pf && entry.pf.path) { + delete entry.pf.gcs; + const convertedPath = entry.pf.path.replace(/\//g, '%2F'); + // @ts-ignore; + entry.pf.imageURL = `https://firebasestorage.googleapis.com/v0/b/${storageBucket}/o/${convertedPath}?alt=media`; + delete entry.pf.path; + } + + return { + ...removeEmpty(entry), + ...{ id: snap.id }, + }; + }); + + delete dictionaryDoc.updatedAt; + delete dictionaryDoc.updatedBy; + delete dictionaryDoc.createdAt; + delete dictionaryDoc.createdBy; + + const data = { + dataRetrieval: { + semanticDomain: semanticDomain(semanticDomainID as string), + semanticDomainID, + timestamp: new Date(Date.now()), + query: request.url, + URL: + `https://us-central1-talking-dictionaries-${ + projectId === 'talking-dictionaries-alpha' ? 'alpha' : 'dev' + }.cloudfunctions.net/exportSemanticDomainOfDictionary` + request.url, + }, + dictionary: { + dictionaryID, + URL: `https://livingdictionaries.app/${dictionaryID}`, + creditURL: `https://livingdictionaries.app/${dictionaryID}/contributors`, + ...dictionaryDoc, + }, + entryCount: entriesSnapshot.size, + entries, + entryInterface, + partOfSpeechMappings: partsOfSpeech, + semanticDomainNumberMappings: semanticDomains, + }; + response.send(data); + } else { + response.send('Invalid dictionary or semantic domain. Please contact us for help if needed.'); + } + } else { + response.send('Invalid request - please contact us to help you form a valid request.'); + } +}; + +function removeEmpty(obj: any) { + Object.keys(obj).forEach( + (k) => + (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k])) || + (!obj[k] && obj[k] !== undefined && delete obj[k]) + ); + return obj; +} + +function semanticDomain(input: string): string { + const matching = semanticDomains.find((domain) => { + return domain.key === input; + }); + return (matching && matching.name) || 'NOT FOUND'; +} diff --git a/functions/src/export/simple.test.ts b/functions/src/export/simple.test.ts new file mode 100644 index 000000000..422da08ee --- /dev/null +++ b/functions/src/export/simple.test.ts @@ -0,0 +1,20 @@ +// import * as admin from 'firebase-admin'; +// import * as functions from 'firebase-functions-test'; +// const testEnv = functions({ +// projectId: process.env.GCLOUD_PROJECT, +// }); + +// import { exportSemanticDomainOfDictionary } from "../index"; + +// test('foo', async () => { +// const req = { query: { text: "input" } }; + +// const res = { +// send: (text: any) => { +// expect(text).toBe(`text: input`); +// }, +// }; + +// // @ts-ignore +// exportSemanticDomainOfDictionary(req, res); +// }) diff --git a/functions/src/helpers.ts b/functions/src/helpers.ts new file mode 100644 index 000000000..67bc059ba --- /dev/null +++ b/functions/src/helpers.ts @@ -0,0 +1,34 @@ +// import * as functions from 'firebase-functions'; + +// /** +// * Validates data payload of a callable function +// */ +// export const assert = (data: any, key: string) => { +// if (!data[key]) { +// throw new functions.https.HttpsError('invalid-argument', `function called without ${key} data`); +// } else { +// return data[key]; +// } +// } + +// /** +// * Validates auth context for callable function +// */ +// export const assertUID = (context: any) => { +// if (!context.auth) { +// throw new functions.https.HttpsError('permission-denied', 'function called without context.auth'); +// } else { +// return context.auth.uid; +// } +// } + +// /** +// * Sends a descriptive error response when running a callable function +// */ +// export const catchErrors = async (promise: Promise) => { +// try { +// return await promise; +// } catch(err) { +// throw new functions.https.HttpsError('unknown', err); +// } +// } \ No newline at end of file diff --git a/functions/src/history.ts b/functions/src/history.ts new file mode 100644 index 000000000..6c7e7a52d --- /dev/null +++ b/functions/src/history.ts @@ -0,0 +1,22 @@ +import * as functions from 'firebase-functions'; +import { db, oneMinuteAgo } from './config'; + +export const saveVersionHistory = functions.firestore + .document('dictionaries/{dictionaryId}/words/{wordId}') + .onUpdate(async (change, context) => { + const newValue = change.after.data(); + const previousValue = change.before.data(); + console.log(newValue, previousValue); + if (!previousValue.ua) { + previousValue.ua = oneMinuteAgo; // to keep history from getting out of order in case of entries without an updated at field + } + console.log(newValue, previousValue); + + const dictionaryId = context.params.dictionaryId; + const wordId = context.params.wordId; + const wordHistoryColRef = db.collection(`dictionaries/${dictionaryId}/words/${wordId}/history`); + await wordHistoryColRef.add({previousValue}) + // TODO, make sure app is saving updatedAt timestamps + + return true; + }) \ No newline at end of file diff --git a/functions/src/import/helpers/abbreviate-td-pos.ts b/functions/src/import/helpers/abbreviate-td-pos.ts new file mode 100644 index 000000000..d573494b7 --- /dev/null +++ b/functions/src/import/helpers/abbreviate-td-pos.ts @@ -0,0 +1,42 @@ +import { partsOfSpeech } from '../../../../src/lib/mappings/parts-of-speech'; + +export interface IMatchResult { + matchedPOS?: string; + unMatchedPOS?: string; + notes?: string; +} + +/** + * Convert old Talking Dictionary parts of speech (both English and Spanish) to English abbreviations + */ +export const abbreviateTDPartOfSpeech = (input: string): IMatchResult => { + // save any notes in parentheses + const parentheticalNote = input.match(/\(.+\)/); + + const sanitizedInput = input + .replace(/\(.+\)/, '') // remove notes in parentheses + .trim() + .toLowerCase() + .replace(/[.]$/, '') // removes word-final periods + .replace(/:/g, ''); // removes random colons in old TD data + const matchingPOS = partsOfSpeech.find((part) => { + //TODO, possibly more efficient just to return enAbbrev and not whole part object + return ( + part.enName === sanitizedInput || + part.esName === sanitizedInput || + part.enAbbrev === sanitizedInput || + part.esAbbrev === sanitizedInput || + (part.tdAlternates && part.tdAlternates.includes(sanitizedInput)) + ); + }); + const result: IMatchResult = {}; + if (matchingPOS) { + result.matchedPOS = matchingPOS.enAbbrev; + } else { + result.unMatchedPOS = sanitizedInput; + } + if (parentheticalNote) { + result.notes = '' + parentheticalNote; + } + return result; +}; diff --git a/functions/src/import/helpers/clean-up-data.ts b/functions/src/import/helpers/clean-up-data.ts new file mode 100644 index 000000000..b32d8c36b --- /dev/null +++ b/functions/src/import/helpers/clean-up-data.ts @@ -0,0 +1,13 @@ +/** + * Fix abnormalities and odd characters in old Talking Dictionaries data by converting JSON to a string, find-replacing, and converting back to JSON. + */ +export const cleanUpData = (data: any[]) => { + const cleanedData = JSON.parse( + JSON.stringify(data) + .replace(/’/g, '\'') // handle apostrophes + .replace(/"/g, '\'') // handle quote marks in ho, '\"' and \u0022 threw errors from closing value + .replace(/\\u0000/g, '') // handle odd null values in first 4 entries of ho + .replace(/ib_gloss/g, 'ig_gloss') // convert "ib" to "ig" for "Igbo" in Olukumi + ); + return cleanedData; +} \ No newline at end of file diff --git a/functions/src/import/helpers/delete-duplicate-entries.ts b/functions/src/import/helpers/delete-duplicate-entries.ts new file mode 100644 index 000000000..8dff5d10b --- /dev/null +++ b/functions/src/import/helpers/delete-duplicate-entries.ts @@ -0,0 +1,150 @@ +/** + * Delete completely duplicated entries and log stats for partial duplicates as well as number of duplicate image and audio references. + */ +export const deleteDuplicateEntries = (data: any[]) => { + const uniqueLexemes: string[] = []; + const uniqueAudioReferences: string[] = []; + const uniqueImageReferences: string[] = []; + let duplicateAudioReferences = 0; + let duplicateImageReferences = 0; + let duplicateEntries = 0; + + for (const entry of data) { + if (entry.audio) { + if (uniqueAudioReferences.indexOf(entry.audio) === -1) { + uniqueAudioReferences.push(entry.audio); + } else { + duplicateAudioReferences++; + } + } + if (entry.image) { + if (uniqueImageReferences.indexOf(entry.image) === -1) { + uniqueImageReferences.push(entry.image); + } else { + duplicateImageReferences++; + } + } + } + + for (var i = data.length - 1; i >= 0; i--) { + const entry = data[i]; + const nextEntry = data[i + 1]; + if (entry.lang) { + if (uniqueLexemes.indexOf(entry.lang) === -1) { + uniqueLexemes.push(entry.lang); + } else { + let uniqueEntry = false; + Object.keys(entry).forEach(key => { + if ((key != 'oid') && (entry[key] != nextEntry[key])) { + // console.log(entry[key], ' >> ', nextEntry[key]); + uniqueEntry = true; + } + }) + if (!uniqueEntry) { + duplicateEntries++; + console.log('\nRemoved', entry, '\nas it is a complete duplicate with: ', nextEntry); + data.splice(i, 1); + } + } + } else { + console.log('\nNo lang field found for: ', entry.oid); + } + } + + console.log(`\nLexeme duplicates: ${data.length - uniqueLexemes.length} duplicates out of ${data.length} entries`); + console.log(` Removed ${duplicateEntries} completely duplicate entries. The other ${data.length - uniqueLexemes.length - duplicateEntries} lexeme duplicates had at least 1 difference in the entry data and should be manually consolidated later on the site.`); // math will be wrong for dictionaries who have entries with no lexeme (lang field) + + console.log(` Unique audio references: ${uniqueAudioReferences.length} < would be great if this matched the audioFileCount above`); + if (duplicateAudioReferences) { + console.log(` Duplicate audio references: ${duplicateAudioReferences} < each entry that has a duplicate audio reference (meaning another entry also points to the same audio file in the old Talking Dictionaries) will upload its own unique renamed audio file so that none of the entries have intertwined media that other entries depend on. This will allow us to clean up duplicate entries and their associated media with ease without worrying about deleting media that other entries depend on.`); + } + + console.log(` Unique image references: ${uniqueImageReferences.length} < would be great if this matched the imageFileCount above`); + if (duplicateImageReferences) { + console.log(` Duplicate image references: ${duplicateImageReferences} < same story here as with duplicate audio references`); + } + return data; +} + + + +// Scratch notes + +// export const deleteDuplicateEntries = (data: any[]) => { +// const start = Date.now(); +// const uniqueLexemes: string[] = []; +// const uniqueAudioReferences: string[] = []; +// const uniqueImageReferences: string[] = []; + + +// let entries = new Set(); +// for (const entry of data) { +// delete entry.oid; +// entries.add(entry); +// } +// console.log(data.length, entries.size); + +// return data; +// const uniqueKeys: string[] = []; +// for (const entry of data) { +// Object.keys(entry).forEach(key => { +// if (uniqueKeys.indexOf(key) === -1) uniqueKeys.push(key); +// }) +// } +// const oidIndex = uniqueKeys.indexOf('oid'); +// uniqueKeys.splice(oidIndex, 1); +// console.log(uniqueKeys); + +// console.log('\nListing Entries with Duplicates audio files:') + +// for (var i = data.length - 1; i >= 0; i--) { +// if (data[i].lang) { +// if (uniqueAudioReferences.indexOf(data[i].audio) === -1) { +// uniqueAudioReferences.push(data[i].audio); +// } +// } +// } + +// for (var i = data.length - 1; i >= 0; i--) { +// if (data[i].image) { +// if (uniqueImageReferences.indexOf(data[i].image) === -1) { +// uniqueImageReferences.push(data[i].image); +// } else { +// console.log('Duplicate image reference, ', data[i].lang, data[i].image); +// } +// } +// } + +// for (var i = data.length - 1; i >= 0; i--) { +// const entry = data[i]; +// const nextEntry = data[i + 1]; +// if (data[i].lang) { +// if (uniqueLexemes.indexOf(data[i].lang) === -1) { +// uniqueLexemes.push(data[i].lang); +// } else { +// console.log(entry.oid); +// Object.keys(entry).forEach(key => { +// Boolean(entry[key]) && Boolean(nextEntry[key]) && Boolean(entry[key] != nextEntry[key]) && console.log(entry[key], ' >> ', nextEntry[key]); +// }) +// console.log(''); +// console.log('\n>>> Duplicate: ', data[i].lang); +// if (data[i].audio == data[i + 1].audio) { +// console.log('Removing (same audio file)'); +// console.log(data[i].gloss) +// console.log(data[i + 1].gloss) +// data.splice(i, 1); +// } else { +// console.log('Skipping (different audio files'); +// console.log(data[i].audio); +// console.log(data[i + 1].audio); +// console.log(data[i].gloss) +// console.log(data[i + 1].gloss) +// } +// } +// } +// } +// console.log(uniqueLexemes.length, uniqueAudioReferences.length); + +// console.log(`Found ${data.length - uniqueLexemes.length} duplicates out of ${data.length} entries in ${Date.now() - start}ms.\n`) +// return data; +// } \ No newline at end of file diff --git a/functions/src/import/helpers/find-unmatched-pos.ts b/functions/src/import/helpers/find-unmatched-pos.ts new file mode 100644 index 000000000..544ef45b6 --- /dev/null +++ b/functions/src/import/helpers/find-unmatched-pos.ts @@ -0,0 +1,46 @@ +import { abbreviateTDPartOfSpeech } from "./abbreviate-td-pos"; + +/** + * Logs unique parts and throw an error if any unmatched parts found so we know what to fix. Fix as many as we want to, then comment Error throwing to allow unmatched POS to be simple write-ins. + */ +export const findUnmatchedPOS = (data: any[]) => { + console.log('\n---------------------\nMatching Parts of Speech for ', data.length, ' entries'); + const uniquePOS: string[] = []; + const repeatedPOS: string[] = []; + const unmatchedPOS: string[] = []; + + for (const entry of data) { + if (entry.pos) { + const pos = entry.pos; + if (uniquePOS.indexOf(pos) === -1) uniquePOS.push(pos); + repeatedPOS.push(pos); + } + } + + console.log('\nUnmatched POS: ') + uniquePOS.forEach((pos: string) => { + const { matchedPOS } = abbreviateTDPartOfSpeech(pos); + if (matchedPOS) { + // console.log(`Matched Unique POS|${pos}|`); + } else { + // console.log(`>> Unmatched Unique POS\n|${pos}|`); + console.log(`${pos}`); + unmatchedPOS.push(pos); + } + }) + + console.log('\nRepeat unmatched POS to get a feel for the quantity of unmatched POS'); + repeatedPOS.forEach((pos: string) => { + const { matchedPOS } = abbreviateTDPartOfSpeech(pos); + if (!matchedPOS) { + // console.log(`>> Unmatched Unique POS\n|${pos}|`); + console.log(`|${pos}|`); + } + }) + + if (unmatchedPOS.length) { + console.log('Not all POS found matches so they will be saved as is (simple strings of text w/o abbreviations or translations).') + // throw new Error(`No abbreviation found for some POS. See log.`); + } + return unmatchedPOS; +} diff --git a/functions/src/import/helpers/getImageServingUrl.ts b/functions/src/import/helpers/getImageServingUrl.ts new file mode 100644 index 000000000..a5fc61e7e --- /dev/null +++ b/functions/src/import/helpers/getImageServingUrl.ts @@ -0,0 +1,12 @@ +import { fetchAsText } from 'fetch-as'; + +export const getImageServingUrl = async (imageStoragePath: string, environment: string) => { + try { + const storagePath = `${processImageUrl}/talking-dictionaries-${environment}.appspot.com/${imageStoragePath}`; + const imageServingUrl = await fetchAsText(storagePath); + return imageServingUrl.data.replace('http://lh3.googleusercontent.com/', ''); + } catch (error) { + console.log(`Error getting serving url for ${imageStoragePath} on ${environment}`); + throw new Error(error); + } +}; diff --git a/functions/src/import/helpers/unzip.ts b/functions/src/import/helpers/unzip.ts new file mode 100644 index 000000000..c97b2c202 --- /dev/null +++ b/functions/src/import/helpers/unzip.ts @@ -0,0 +1,72 @@ +import * as fs from 'fs-extra'; +const unzipper = require('unzipper'); + +const dataFileFormats = ['csv', 'json', 'xlsx']; +const imageFileFormats = ['jpg', 'jpeg', 'gif', 'png']; +const audioFileFormats = ['mp3', 'wav']; + +export const unzipArchive = async ( + language: string, + dictionaryId: string, + type: 'old-td' | 'spreadsheet' +) => { + let dataFileName = ''; + let audioFileCount = 0; + let imageFileCount = 0; + fs.mkdirSync(`dictionary/${dictionaryId}/data/`, { recursive: true }); + fs.mkdirSync(`dictionary/${dictionaryId}/audio/`, { recursive: true }); + fs.mkdirSync(`dictionary/${dictionaryId}/images/`, { recursive: true }); + + return await new Promise((resolve, reject): any => { + const filepath = `ready-data/${language}.zip`; + fs.createReadStream(filepath) + .pipe(unzipper.Parse()) + .on('entry', (entry: any) => { + if (entry.path && entry.type === 'File') { + const fileName = entry.path.split('/').pop(); + const fileExt = entry.path.split('.').pop(); + + if (fileName.match(/\?/)) { + // skip over kera_mundari missing file with ? in name + console.log(`Skipping ${fileName} because of ? which caused it to be missing`); + entry.autodrain(); + return; + } + + if (fileName.match(/^\._/)) { + // skip Mac metadata files + entry.autodrain(); + return; + } + + if (dataFileFormats.includes(fileExt.toLowerCase())) { + dataFileName = fileName; + entry.pipe(fs.createWriteStream(`dictionary/${dictionaryId}/data/${fileName}`)); + } else if (audioFileFormats.includes(fileExt.toLowerCase())) { + ++audioFileCount; + entry.pipe(fs.createWriteStream(`dictionary/${dictionaryId}/audio/${fileName}`)); + } else if (imageFileFormats.includes(fileExt.toLowerCase())) { + ++imageFileCount; + entry.pipe(fs.createWriteStream(`dictionary/${dictionaryId}/images/${fileName}`)); + } else { + console.log('No proper file type found for: ', fileName, ' - autodraining'); + entry.autodrain(); + } + } else { + entry.autodrain(); + } + }) + .promise() + .then( + () => { + console.log( + { audioFileCount }, + { imageFileCount }, + `<< number of files found in zip archive` + ); + resolve(dataFileName); + }, + (e: Error) => reject(e) + ); + }); +}; diff --git a/functions/src/import/import_features.ts b/functions/src/import/import_features.ts new file mode 100644 index 000000000..87bd60140 --- /dev/null +++ b/functions/src/import/import_features.ts @@ -0,0 +1,465 @@ +// import * as functions from 'firebase-functions'; +import { fetchAsText } from 'fetch-as'; +import { IEntry, IGloss, IExampleSentence } from '../../../src/lib/interfaces'; +import * as csv from 'csvtojson'; +import * as xlsx from 'xlsx'; +const unzip = require('unzipper'); + +export const FileFORMATS = ['csv', 'json', 'xlsx']; + +export function getStoragePath( + fileName: string, + importId: string, + dictionaryId: string, + timestamp +): string { + const incomingName = fileName.split('/').pop(); + const fileTypeSuffix = fileName.split('.').pop(); + const suffixRemoved = incomingName.replace(`.${fileTypeSuffix}`, ''); + const sanitizedName = suffixRemoved.replace(/[^a-z0-9+]+/gi, '-'); + + return `${dictionaryId}/import_${importId}/${sanitizedName}_${timestamp + .toDate() + .getTime()}.${fileTypeSuffix}`; +} + +/* + { status: 200, + info: + { headers: + { 'access-control-allow-origin': '*', + 'alt-svc': 'quic=":443"; ma=2592000; v="46,43,39"', + connection: 'close', + 'content-length': '120', + 'content-type': 'text/plain;charset=iso-8859-1', + date: 'Thu, 22 Aug 2019 23:16:33 GMT', + server: 'Google Frontend', + 'x-cloud-trace-context': '3a24064b65cc36d6b6cef050afe9b453;o=1' }, + timeout: 0, + size: 0, + type: undefined }, + data: 'http://lh3.googleusercontent.com/eddNCxNVI8cj33hK94U2a206QunLOjcNBPgF2T17JcHybUBVjV1FH13-Y-Ye9LhGVUheGNpNyiRlxOrMZeiPdw\n' } + +*/ +async function getImageServingUrl( + imageStoragePath: string, + environment: string, + uid: string, + attempt?: number +) { + if (attempt > 2) { + throw new Error(`getImageServingUrl too many retries`); + return ''; + } + try { + const storagePath = `${processImageUrl}/talking-dictionaries-${ + environment === 'prod' ? 'alpha' : 'dev' + }.appspot.com/${imageStoragePath}`; + // TODO: Refactor in a better manner? + const imageServingUrl = await fetchAsText(storagePath); + if (imageServingUrl.status === 200 && imageServingUrl.data) { + return imageServingUrl.data.replace('http://lh3.googleusercontent.com/', ''); + } else { + setTimeout(() => { + console.log(`retrying attempt: ${attempt}`); + }, 1000); + return await getImageServingUrl(imageStoragePath, environment, uid, attempt + 1 || 1); + // throw new Error(`getImageServingUrl data not ready for storagePath: ${storagePath} with status ${imageServingUrlText.status}`) + } + } catch (err) { + throw new Error(`getImageServingUrl outer catch -- UID: ${uid} -- ${err}`); + } +} + +// process multi part entries with pipe as separator +function processMultiItemString(pipedString) { + if (!pipedString) return []; + if (pipedString.includes('|')) { + return pipedString.split('|'); + } + return [pipedString]; +} + +// process multi column entries where the column names tie the related collection key +function extractCollectionValues(item: any[], keyColumnMatch: string) { + if (Object.keys(item).join('').includes(keyColumnMatch)) { + const output = {}; + Object.keys(item).forEach((key, indx, coll) => { + if (key.includes(keyColumnMatch) && Boolean(item[key])) { + output[key.split(keyColumnMatch)[0]] = item[key]; + } // switched to 0 from 1 for old Talking Dictionaries import as the order is flipped. We may flip the order of the new template too. + }); + return output; + } + return {}; +} + +export function getFileMeta( + bucketInstance: any, + entry: any, + archiveDir: string, + timestamp: any, + importId: string, + dictionaryId: string +) { + let fileRef = bucketInstance.file(`${archiveDir}/${entry.path}`); + let contentType = 'text/plain'; + let dictionaryFormatIdx = -1; + try { + if (entry.path) { + const fileName = entry.path.split('/').pop(); + dictionaryFormatIdx = FileFORMATS.indexOf(fileName.split('.').pop()); + if (entry.path.split('/')[0] === 'audio') { + fileRef = bucketInstance.file( + `audio/${getStoragePath(fileName, importId, dictionaryId, timestamp)}` + ); + contentType = `audio/${entry.path.split('.').pop()}`; + } + if (entry.path.split('/')[0] === 'images') { + fileRef = bucketInstance.file( + `images/${getStoragePath(fileName, importId, dictionaryId, timestamp)}` + ); + contentType = `image/${entry.path.split('.').pop()}`; + } + } + } catch (err) { + throw new Error(err); + } + + return { fileRef, contentType, dictionaryFormatIdx }; +} + +export async function transformJsonRow( + row: any, + uid: string, + timestamp: any, + importId: string, + dictionaryId: string, + lineNumber: number, + partOfArchive?: boolean +) { + // validate for required elements + if (!row.lexeme) throw new Error(`No lexeme found for row ${lineNumber + 2}`); // The first row is programmatically 0 but to the user it is row 2 since row 1 is column headings + // build surrogate object + const entryObject: IEntry = { lx: '', gl: {} }; + // add timestamps and creator metadata + Boolean(timestamp) && (entryObject.createdAt = timestamp); + Boolean(uid) && (entryObject.createdBy = uid); + Boolean(timestamp) && (entryObject.updatedAt = timestamp); + Boolean(uid) && (entryObject.updatedBy = uid); + Boolean(importId) && (entryObject.source = `import: ${importId}`); + + // preprocess collections from gloss column keys (e.g. es_gloss, tpi_gloss, etc.) + if (Object.keys(row).join('').includes('gloss')) { + const gloss: IGloss = extractCollectionValues(row, '_gloss'); + entryObject.gl = gloss; + } + // preprocess collections from example sentence column keys (e.g. vernacular_exampleSentence, en_exampleSentence, es_exampleSentence, etc.) + if (Object.keys(row).join('').includes('exampleSentence')) { + const example: IExampleSentence = extractCollectionValues(row, '_exampleSentence'); + entryObject.xs = example; + } + // preprocess collections in single column inputs (pipe separated standard) + Boolean(row.semanticDomain_custom) && + (() => { + entryObject.sd = processMultiItemString(row.semanticDomain_custom); + })(); + + Boolean(row.lexeme) && (entryObject.lx = row.lexeme); + Boolean(row.localOrthography) && (entryObject.lo = row.localOrthography); + Boolean(row.phonetic) && (entryObject.ph = row.phonetic); // TODO: strip surrounding brackets if they are present in phonetic value + Boolean(row.morphology) && (entryObject.mr = row.morphology); + Boolean(row.interlinearization) && (entryObject.in = row.interlinearization); + Boolean(row.partOfSpeech) && (entryObject.ps = row.partOfSpeech); + Boolean(row.dialect) && (entryObject.di = row.dialect); + Boolean(row.sd) && (entryObject.sd = row.sdn); + Boolean(row.notes) && (entryObject.nt = row.notes); + + // selectively process associated images and audio ONLY if marked as part of an archive + // standalone CSV files cannot possibly have properly attached files + if (partOfArchive) { + Boolean(row.soundFile) && + (entryObject.sf = { + path: `audio/${getStoragePath(row.soundFile, importId, dictionaryId, timestamp)}`, + source: `import: ${importId}`, + ts: timestamp, + ab: uid, + }); + + // fetch Image serving url + if (row.photoFile) { + const imageStoragePath = `images/${getStoragePath( + row.photoFile, + importId, + dictionaryId, + timestamp + )}`; + const environment = 'prod'; // TODO, retrieve env (dev/prod) from: process.env.GCP_PROJECT, but do it higher up the chain such that it's only retrieved once and not for each photo // https://stackoverflow.com/questions/44078037/how-to-get-firebase-project-name-or-id-from-cloud-function + try { + const url = await getImageServingUrl(imageStoragePath, environment, uid); + if (typeof url !== 'string') { + throw new Error( + `UID: ${uid} -- URL to serve image is not a valid string, perhaps the image does not exist at this url.` + ); + } + entryObject.pf = { + path: imageStoragePath, + gcs: url, + source: `import: ${importId}`, + ts: timestamp, + ab: uid, + }; + } catch (err) { + throw new Error(`transformJsonRow getImageServingUrl UID: ${uid} -- ${err}`); + } + } + } + + return entryObject; +} + +/* + * SAMPLE DATA + + { + "oid": "3856", + "lang": "(ng??)asemenonggo", + "ipa": "(ng??)asemenonggo", + "gloss": "y’all ask you", + "pos": "v. paradigm example", + "usage_example": "", + "dialect": "", + "metadata": "Vpara 2244, 16-July-11, Matugar, PNG. Recorded by Danielle Barth.", + "authority": "Kadagoi Rawad", + "audio": "Vpara2244_16July2011_Kadagoi_Yall Ask You_a.mp3", + "image": "", + "semantic_ids": "", + "tpi_gloss": "yupela askim yu" + }, + + */ + +export async function transformTDJsonRow( + row: any, + uid: string, + timestamp: any, + importId: string, + dictionaryId: string, + lineNumber: number, + partOfArchive?: boolean +) { + // validate for required elements + if (!row.lang) throw new Error(`No lexeme (lang) found for item ${lineNumber + 1}`); + // build surrogate object + const entryObject: IEntry = { lx: '', gl: {} }; + // add timestamps and creator metadata + Boolean(timestamp) && (entryObject.createdAt = timestamp); + Boolean(uid) && (entryObject.createdBy = uid); + Boolean(timestamp) && (entryObject.updatedAt = timestamp); + Boolean(uid) && (entryObject.updatedBy = uid); + Boolean(importId) && (entryObject.source = `import: ${importId}`); + + // migrate gloss to en_gloss prior to preprocessing all glosses + Boolean(row.gloss) && (row.en_gloss = row.gloss); + + // preprocess collections from gloss column keys (e.g. es_gloss, tpi_gloss, etc.) + if (Object.keys(row).join('').includes('gloss')) { + const gloss: IGloss = extractCollectionValues(row, '_gloss'); + entryObject.gl = gloss; + } + // preprocess collections from example sentences + // if(Boolean(Object.keys(row).join('').includes('exampleSentence'))) { + // const example: IExampleSentence = extractCollectionValues(row, 'exampleSentence_'); + // entryObject.xs = example; + // } + // preprocess collections in single column inputs (pipe separated standard) + // Boolean(row.semantic_ids) && (() => { entryObject.sd = processMultiItemString(row.semantic_ids) })() + Boolean(row.semantic_ids) && (entryObject.sd = row.semantic_ids); + Boolean(row.lang) && (entryObject.lx = row.lang); + Boolean(row.ipa) && (entryObject.ph = row.ipa); + Boolean(row.morphology) && (entryObject.mr = row.morphology); + Boolean(row.interlinearization) && (entryObject.in = row.interlinearization); + Boolean(row.pos) && (entryObject.ps = row.pos); + Boolean(row.dialect) && (entryObject.di = row.dialect); + Boolean(row.metadata) && (entryObject.nt = row.metadata); + Boolean(row.usage_example) && (entryObject.xv = row.usage_example); // example vernacular + + // selectively process associated images and audio ONLY if marked as part of an archive + // standalone CSV files cannot possibly have properly attached files + if (partOfArchive) { + Boolean(row.audio) && + (entryObject.sf = { + path: `audio/${getStoragePath(row.audio, importId, dictionaryId, timestamp)}`, + source: `import: ${importId}`, + previousFileName: row.audio, + }); + Boolean(row.authority) && (entryObject.sf.speakerName = row.authority); + + // fetch Image serving url + if (row.photoFile) { + const imageStoragePath = `images/${getStoragePath( + row.photoFile, + importId, + dictionaryId, + timestamp + )}`; + const environment = 'prod'; // TODO, retrieve env (dev/prod) from: process.env.GCP_PROJECT, but do it higher up the chain such that it's only retrieved once and not for each photo // https://stackoverflow.com/questions/44078037/how-to-get-firebase-project-name-or-id-from-cloud-function + try { + const url = await getImageServingUrl(imageStoragePath, environment, uid); + if (typeof url !== 'string') { + throw new Error( + `UID: ${uid} -- URL to serve image is not a valid string, perhaps the image does not exist at this url.` + ); + } + entryObject.pf = { + path: imageStoragePath, + gcs: url, + source: `import: ${importId}`, + ts: timestamp, + ab: uid, + }; + } catch (err) { + throw new Error(`transformTDJsonRow getImageServingUrl UID: ${uid} -- ${err}`); + } + } + } + return entryObject; +} + +export async function unzipFirebaseArchive( + bucketInstance: any, + importFilePath: string, + uid: string, + timestamp: any, + importId: string, + dictionaryId: string +) { + // unzip archive first + const archiveDir = importFilePath.replace('.zip', ''); + let formatIdx = -1; + // open file reading stream + await new Promise((resolve, reject) => { + bucketInstance + .file(importFilePath) + .createReadStream() + .on('error', (err) => { + reject(`UID: ${uid} -- ${err}`); + }) + // parse the stream with an unzip + .pipe(unzip.Parse()) + // with each file parsed, create output path to extract to + .on('entry', (entry) => { + const { fileRef, contentType, dictionaryFormatIdx } = getFileMeta( + bucketInstance, + entry, + archiveDir, + timestamp, + importId, + dictionaryId + ); + if (dictionaryFormatIdx > -1) { + formatIdx = dictionaryFormatIdx; + } + let meta = { metadata: {} }; + if (entry.type === 'File') { + meta = { metadata: { contentType: contentType } }; + } + // pipe the entry into an output file + entry.pipe(fileRef.createWriteStream(meta)).on('error', (err) => { + reject(`UID: ${uid} -- ${err}`); + }); + }) + .on('finish', () => { + resolve(); + }); + }); + console.log(`formatIdx: ${formatIdx}`); + return formatIdx; +} + +export async function validateCSV( + uid: string, + dictionaryPath: string, + timestamp: any, + importId: string, + dictionaryId: string +) { + const result = { ERRORS: [] }; + await csv() + .fromFile(dictionaryPath) + .subscribe( + async (json, lineNumber) => { + if (lineNumber > 0) { + // skips explanation header row (row 2) in CSV template + try { + await transformJsonRow(json, uid, timestamp, importId, dictionaryId, lineNumber); + } catch (err) { + result.ERRORS.push(err); + } + } + }, + (err) => { + result.ERRORS.push(err); + } + ); + return result; +} + +export async function processCSV( + db: any, + uid: string, + dictionaryPath: string, + timestamp: any, + importId: string, + dictionaryId: string, + isArchived?: boolean +) { + const result = { ERRORS: [], importCount: 0 }; + let batch = db.batch(); + const colRef = db.collection(`dictionaries/${dictionaryId}/words`); + let stopcount = -1; + const batchSize = 299; + await csv() + .fromFile(dictionaryPath) + .subscribe( + async (json, lineNumber) => { + if (lineNumber > 0) { + // skips explanation header row (row 2) in CSV template + try { + const entryId = colRef.doc().id; + const docRef = colRef.doc(entryId); + const row = await transformJsonRow( + json, + uid, + timestamp, + importId, + dictionaryId, + lineNumber, + isArchived + ); + batch.set(docRef, row); + if (stopcount === batchSize) { + await batch.commit(); + batch = db.batch(); + stopcount = -1; + } + stopcount = stopcount + 1; + ++result.importCount; + } catch (err) { + result.ERRORS.push(err); + } + } + }, + (err) => { + result.ERRORS.push(err); + } + ); + await batch.commit(); + return result; +} + +export async function importXLS(dictionaryPath: string) { + const workbook = xlsx.readFile(dictionaryPath); + const sheet_name_list = workbook.SheetNames; + return xlsx.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); +} diff --git a/functions/src/import/importing.ts b/functions/src/import/importing.ts new file mode 100644 index 000000000..bac4075a5 --- /dev/null +++ b/functions/src/import/importing.ts @@ -0,0 +1,469 @@ +import * as functions from 'firebase-functions'; +import { join } from 'path'; +import { tmpdir } from 'os'; +import * as fs from 'fs'; +// import * as fs from 'fs-extra'; //"fs-extra": "^8.1.0", // "@types/fs-extra": "^5.0.4", +import * as csv from 'csvtojson'; +import * as xlsx from 'xlsx'; // "xlsx": "^0.16.0" +const unzipper = require('unzipper'); // "unzipper": "^0.10.5", +import { fetchAsText } from 'fetch-as'; // "fetch-as": "^0.6.0", + +import { storage, timestamp, db } from '../config'; +// import { IImport, IEntry } from '../../../src/app/_common/interfaces'; + +import { convertOldTDKeyNames } from './td-converters'; +const dataFileFormats = ['csv', 'json', 'xlsx']; +const imageFileFormats = ['jpg', 'jpeg']; +const audioFileFormats = ['mp3', 'wav']; + +/** + * Process dictionary spreadsheets or zipped packages upon import + */ +export const processImport = functions + .runWith({ timeoutSeconds: 540, memory: '2GB' }) + .firestore.document('dictionaries/{dictionaryId}/imports/{importId}') + .onCreate(async (snapshot, context) => { + try { + // Make function idempotent, see https://cloud.google.com/blog/products/serverless/cloud-functions-pro-tips-building-idempotent-functions + const importDoc = await snapshot.ref.get(); + if (importDoc.data().idempotency_key) { + console.log('Exiting function because it already ran'); + return false; + } + if ( + process.env && + process.env.USERDOMAIN !== 'Laptop-name' && + importDoc.data().createdByName === 'Local Import' + ) { + return false; + } // keep local runs from also being picked up by the server + + // Initialize + await updateImportDoc( + { status: 'processing', idempotency_key: context.eventId }, + snapshot.ref + ); + const snapData = snapshot.data(); + const dictionaryId = context.params.dictionaryId; + const importId = context.params.importId; + const env = functions.config().project.key.split('-').pop(); // ('dev' or 'alpha') + + // Determine file extension and unzip if necessary + const importedFileExt = fileExtension(snapData.path); + let dataFileExt: string; + let dataFilePath: string; + if (importedFileExt === 'zip') { + // TODO: Validate data file is good to go + // TODO: Validate that image and audio references correspond to actual images/audio as we want to throw an error immediately before saving all their audio and image files to storage + // TODO: Validate that they only included one data file (dataFileFormats.includes(fileExt)) + dataFileExt = await unzipImportedArchive(snapData, dictionaryId); + dataFilePath = snapData.path.replace('zip', dataFileExt); + } else { + dataFileExt = importedFileExt; + dataFilePath = snapData.path; + } + if (!dataFileFormats.includes(dataFileExt)) { + throw new Error( + 'No dictionary file found (*.csv, *.json, or *.xslx). Please resubmit import with one included.' + ); + } + + // Save data file to temporary folder + const tmpDataFilePath = join(tmpdir(), `${snapData.id}.${dataFileExt}`); + await storage.bucket().file(dataFilePath).download({ destination: tmpDataFilePath }); + + // Process and upload data to Firestore, images/audio to Storage + let jsonData = await parseDataToJSON(tmpDataFilePath, dataFileExt); + if (dataFileExt === 'json') { + jsonData = convertOldTDKeyNames(jsonData); + } + const entryCount = await processAndUploadData( + jsonData, + dictionaryId, + importId, + importedFileExt, + dataFileExt, + snapData.createdBy, + env + ); + + await fs.unlink(tmpDataFilePath, (err) => console.log(err)); // Clean up temporary storage + return await updateImportDoc({ status: 'success', entryCount }, snapshot.ref); + } catch (error) { + return await updateImportDoc({ status: 'error', error: error.message }, snapshot.ref); + } + }); + +/** + * Iterate through jsonData, calling transformJsonRow and uploading returned entry to Firestore + */ +export const processAndUploadData = async ( + jsonData: [], + dictionaryId: string, + importId: string, + importedFileExt: string, + dataFileExt: string, + uid: string, + env: string +) => { + let entryCount = 0; + let batchCount = 0; + let skippedCSVExplanationRow = false; + let batch = db.batch(); + const colRef = db.collection(`dictionaries/${dictionaryId}/words`); + + for (const row of jsonData) { + // learned from https://lavrton.com/javascript-loops-how-to-handle-async-await-6252dd3c795/ + // if (entryCount > 100) { break } // to incrementally test larger and larger imports + if (!skippedCSVExplanationRow && dataFileExt !== 'json') { + skippedCSVExplanationRow = true; + continue; // skips explanation header row in CSV/XLSX template + } else { + entryCount++; + } + + const entry = await transformJsonRow( + row, + dictionaryId, + importId, + importedFileExt, + dataFileExt, + entryCount, + uid, + env + ); + + // add timestamps and creator metadata + entry.createdAt = timestamp; + entry.createdBy = uid; + entry.updatedAt = timestamp; + entry.updatedBy = uid; + entry.importId = importId; + + if (batchCount === 200) { + console.log('committing batch ending with entry: ', entryCount); + await batch.commit(); + batch = db.batch(); + batchCount = 0; + } + batch.create(colRef.doc(), entry); + batchCount++; + } + await batch.commit(); + return entryCount; +}; + +/** + * Return entry object from each JSON row object + */ +export const transformJsonRow = async ( + row: any, + dictionaryId: string, + importId: string, + importedFileExt: string, + dataFileExt: string, + lineNumber: number, + uid: string, + env: string +) => { + // validate for required elements // TODO: remove once pre-processing validation is in place + if (dataFileExt !== 'json' && !row.lexeme) + throw new Error(`No lexeme found for row ${lineNumber + 2}`); + // The first row is programmatically 0 but to the user it is row 2 since row 1 is column headings + + // build surrogate object + //@ts-ignore + const entry: IEntry = { lx: '', gl: {} }; + + Object.keys(row).forEach((key) => { + // Gloss and sentence columns are labeled using bcp47 language codes followed by '_gloss' or '_exampleSentence' (e.g. es_gloss, tpi_gloss) + if (key.includes('_gloss') && row[key]) { + const language = key.split('_gloss')[0]; + { + entry.gl[language] = row[key]; + } + } + + // Sentence columns are labeled similar to glosses (e.g. vernacular_exampleSentence, en_exampleSentence, es_exampleSentence, etc.) + if (key.includes('_exampleSentence') && row[key]) { + entry.xs = {}; + const language = key.split('_exampleSentence')[0]; + { + entry.xs[language] = row[key]; + } + } + }); + + // preprocess collections in single column inputs (pipe separated standard) + Boolean(row.semanticDomain_custom) && + (() => { + entry.sd = processMultiItemString(row.semanticDomain_custom); + })(); + + Boolean(row.lexeme) && (entry.lx = row.lexeme); + Boolean(row.localOrthography) && (entry.lo = row.localOrthography); + Boolean(row.phonetic) && (entry.ph = row.phonetic.replace(/[[\]]/g, '')); // Strip surrounding brackets if they are present in phonetic value + Boolean(row.morphology) && (entry.mr = row.morphology); + Boolean(row.interlinearization) && (entry.in = row.interlinearization); + Boolean(row.partOfSpeech) && (entry.ps = row.partOfSpeech); + Boolean(row.dialect) && (entry.di = row.dialect); + Boolean(row.sdn) && (entry.sdn = row.sdn); + Boolean(row.notes) && (entry.nt = row.notes); + + // process associated images and audio if data came in as part of a zip archive + if (importedFileExt === 'zip') { + if (row.soundFile) { + // if old Talking Dictionary then check if sound file is in place first, for new imports, we're going to kick an error to tell the user to fix their audio references, but for the old Talking Dictionaries, there's too many missing audio files to throw errors on each and expect us to fix the references. We need to just skip over the missing files as we're not going to be able to find them anyways. + if (dataFileExt === 'json') { + try { + const audioExists = await storage + .bucket() + .file(`${dictionaryId}/audio/import_${importId}/${sanitizeFileName(row.soundFile)}`) + .exists(); + if (audioExists[0]) { + entry.sf = { + path: `${dictionaryId}/audio/import_${importId}/${sanitizeFileName(row.soundFile)}`, + source: `import: ${importId}`, + ts: timestamp, + ab: uid, + speakerName: row.authority || null, + }; + } else { + console.log(row.soundFile, ' audio does not exist for: ', row.lexeme); + } + } catch (err) { + throw new Error(err); + } + } else { + entry.sf = { + path: `${dictionaryId}/audio/import_${importId}/${sanitizeFileName(row.soundFile)}`, + source: `import: ${importId}`, + ts: timestamp, + ab: uid, + }; + } + } + + if (row.photoFile) { + if (dataFileExt === 'json') { + // old Talking Dictionaries + try { + const imageExists = await storage + .bucket() + .file(`${dictionaryId}/images/import_${importId}/${sanitizeFileName(row.photoFile)}`) + .exists(); + if (imageExists[0]) { + const imageStoragePath = `${dictionaryId}/images/import_${importId}/${sanitizeFileName( + row.photoFile + )}`; + const url = await getImageServingUrl(imageStoragePath, env); + entry.pf = { + path: imageStoragePath, + gcs: url, + source: `import: ${importId}`, + ts: timestamp, + ab: uid, + }; + } else { + console.log(row.photoFile, ' image does not exist for: ', row.lexeme); + } + } catch (err) { + throw new Error(err); + } + } else { + const imageStoragePath = `${dictionaryId}/images/import_${importId}/${sanitizeFileName( + row.photoFile + )}`; + const url = await getImageServingUrl(imageStoragePath, env); + if (typeof url !== 'string') { + throw new Error(`A valid URL was not returned for one of your images`); + } + entry.pf = { + path: imageStoragePath, + gcs: url, + source: `import: ${importId}`, + ts: timestamp, + ab: uid, + }; + } + } + } + return entry; +}; + +/** + * Process multi-part entries with pipe as separator + */ +export const processMultiItemString = (pipedString: string) => { + if (!pipedString) return []; + if (pipedString.includes('|')) { + return pipedString.split('|'); + } + return [pipedString]; +}; + +export const getImageServingUrl = async (imageStoragePath: string, env: string) => { + const storagePath = `${processImageUrl}/talking-dictionaries-${env}.appspot.com/${imageStoragePath}`; + console.log('fetching: ', storagePath); + const imageServingUrl = await fetchAsText(storagePath); + // console.log(imageServingUrl.status, imageServingUrl.data) // status should = 200 + return imageServingUrl.data.replace('http://lh3.googleusercontent.com/', ''); +}; + +/** + * Accept data file saved to tmp folder and return parsed JSON objects in an array + */ +export const parseDataToJSON = async (tmpDataFilePath: string, dataFileExt: string) => { + if (dataFileExt === 'csv') { + return await csv().fromFile(tmpDataFilePath); + } else if (dataFileExt === 'xlsx') { + return convertXlsxToJson(tmpDataFilePath); + } else if (dataFileExt === 'json') { + return await fs.readJson(tmpDataFilePath); + } +}; + +/** + * Takes an Excel file and return the first sheet as an array of JSON objects for each row + */ +export const convertXlsxToJson = (tmpDataFilePath: string) => { + const workbook = xlsx.readFile(tmpDataFilePath); + const sheet_name_list = workbook.SheetNames; + return xlsx.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]); +}; + +/** + * Update the import document, including a timestamp and memory usage + */ +export const updateImportDoc = async (update: any, ref: FirebaseFirestore.DocumentReference) => { + const memory = process.memoryUsage(); // See https://stackoverflow.com/questions/12023359/what-do-the-return-values-of-node-js-process-memoryusage-stand-for + const memoryUsage: any = { + residentSetSize: `${Math.round((memory.rss / 1024 / 1024) * 100) / 100} MB`, + heapTotal: `${Math.round((memory.heapTotal / 1024 / 1024) * 100) / 100} MB`, + heapUsed: `${Math.round((memory.heapUsed / 1024 / 1024) * 100) / 100} MB`, + }; + //@ts-ignore + const data: IImport = { + ...update, + updatedAt: timestamp, + memoryUsage, + }; + console.log('updateImportDoc with: ', data); + await ref.update(data); + return update.error ? false : true; +}; + +// export const waitForPromise = async () => { +// const startTime = Date.now(); +// await new Promise((resolve, reject) => { +// setTimeout(() => resolve('Resolved Unzip Test'), 1000); +// // reject(`Rejected Unzip Test`); +// }) +// const endTime = Date.now(); +// console.log(endTime - startTime, ' seconds elapsed') +// return true; +// } + +/** + * Unzip file archive in Firebase Storage which contains a dictionary file and optional images and audio folders + */ + +//@ts-ignore +export const unzipImportedArchive = async (snapData: IImport, dictionaryId: string) => { + let dataFileType = ''; + let audioFileCount = 0; + let imageFileCount = 0; + + await new Promise((resolve, reject): any => { + storage + .bucket() + .file(snapData.path) + .createReadStream() + // parse the stream with an unzip + .pipe(unzipper.Parse()) + // with each file parsed, create output path to extract to + .on('entry', (entry: any) => { + if (entry.path && entry.type === 'File') { + const fileName = entry.path.split('/').pop(); + const fileExt = fileExtension(entry.path); + + let fileRef; + let contentType; + + // Note that audio/images and dictID have been flipped for a better file storage schema + if (audioFileFormats.includes(fileExt.toLowerCase())) { + // Handle audio + fileRef = storage + .bucket() + .file(`${dictionaryId}/audio/import_${snapData.id}/${sanitizeFileName(fileName)}`); + contentType = `audio/${fileExt}`; + ++audioFileCount; + } else if (imageFileFormats.includes(fileExt.toLowerCase())) { + // Handle images + fileRef = storage + .bucket() + .file(`${dictionaryId}/images/import_${snapData.id}/${sanitizeFileName(fileName)}`); + contentType = `image/${fileExt}`; + ++imageFileCount; + } else if (dataFileFormats.includes(fileExt.toLowerCase())) { + // Handle data file + dataFileType = fileExt; + fileRef = storage.bucket().file(`${snapData.path.replace('zip', fileExt)}`); + contentType = 'text/plain'; + } else { + console.log('No proper file type found for: ', fileName, ' - autodraining'); + entry.autodrain(); + } + + // pipe the entry into an output file + entry.pipe( + fileRef.createWriteStream({ metadata: { contentType, fileName }, resumable: false }) + ); // https://github.com/googleapis/google-cloud-node/issues/1154 + } else { + entry.autodrain(); + } + }) + .promise() + .then( + () => resolve(dataFileType), + (e: Error) => reject(e) + ); + }); + const startTime = Date.now(); + await new Promise((resolve) => { + setTimeout(() => resolve('Wait for Files to register in Firebase Storage'), 10000); + }); + console.log( + `Paused ${ + Date.now() - startTime + } milliseconds to let ${dataFileType} file, ${audioFileCount} audio files, and ${imageFileCount} image files register in Firebase Storage` + ); + return dataFileType; +}; + +/** + * Santize file name down to basic characters that can be accepted by Google's Serving Url generator + * Use like this: `${dictionaryId}/audio/import_${importId}/${sanitizeFileName(filePath)}` + */ +export const sanitizeFileName = (fileName: string): string => { + return fileName.replace(/[^a-z0-9.+]+/gi, '-'); +}; + +/** + * Return file extension + */ +export const fileExtension = (input: string) => { + return input.split('.').pop(); +}; + +// export const validateCSV = async (dictionaryPath: string) => { +// await csv() +// .fromFile(dictionaryPath) +// .subscribe(async (row, lineNumber) => { +// if (lineNumber > 0) { // skips explanation header row (row 2) in CSV template +// if (!row.lexeme) throw new Error(`No lexeme found for row ${lineNumber + 2}`); +// // The first row is programmatically 0 but to the user it is row 2 since row 1 is column headings +// } +// }) +// return true; +// } diff --git a/functions/src/import/importing2.ts b/functions/src/import/importing2.ts new file mode 100644 index 000000000..8e0475dea --- /dev/null +++ b/functions/src/import/importing2.ts @@ -0,0 +1,228 @@ +import * as functions from 'firebase-functions'; +import * as admin from 'firebase-admin'; +import * as path from 'path'; +import * as os from 'os'; +import * as fs from 'fs'; + +if (!admin.apps.length) { + admin.initializeApp(); +} + +const db = admin.firestore(); + +import { + FileFORMATS, + transformJsonRow, + transformTDJsonRow, + unzipFirebaseArchive, + validateCSV, + processCSV, + importXLS, +} from './libs/'; + +export const processImport = functions + .runWith({ timeoutSeconds: 540, memory: '2GB' }) + .firestore.document('dictionaries/{dictionaryId}/imports/{importId}') + .onCreate(async (snapshot, context) => { + const functionStart = Date.now(); + const importRef = snapshot.ref; + let processStatus = `processing`; + await importRef.update({ + status: processStatus, + }); + const dictionaryId = context.params.dictionaryId; + const colRef = db.collection(`dictionaries/${dictionaryId}/words`); + let batch = db.batch(); + let stopcount = -1; + let importCount = 0; + const batchSize = 299; + let validations: any = []; + let processResults: any = {}; + //const processENV = context.resource.name.split('/')[1].split('-').pop(); + // gather elements from file upload to prepare for parsing + const importId = context.params.importId; + const snapData = await snapshot.data(); + const importFilePath = snapData.path; + const timestamp = snapData.createdAt; + const uid = snapData.createdBy; + const fileOriginalName = importFilePath.split('/').pop(); + const fileOriginalExt = fileOriginalName.split('.').pop(); + let dictionaryPath = ''; + let isArchived = false; + let isJSON = false; + let isXLS = false; + let isCSV = false; + const bucketInstance = admin.storage().bucket(); + // let prepareDictionary = false; + + if (fileOriginalExt === 'zip') { + // unzip archive first + isArchived = true; + const archiveDir = importFilePath.replace('.zip', ''); + const formatIdx = await unzipFirebaseArchive( + bucketInstance, + importFilePath, + uid, + timestamp, + importId, + dictionaryId + ); + if (formatIdx < 0) { + processStatus = `error`; + await importRef.update({ + entryCount: 0, + error: 'A dictionary manifest does not exist in this archive', + memoryUsage: process.memoryUsage(), + elapsedTime: `${Date.now() - functionStart}`, + status: processStatus, + }); + return 0; + } else { + const archiveManifest = `${archiveDir}/dictionary.${FileFORMATS[formatIdx]}`; + dictionaryPath = path.join(os.tmpdir(), `dictionary.${FileFORMATS[formatIdx]}`); + await bucketInstance.file(archiveManifest).download({ destination: dictionaryPath }); + // mark the format flag with a terse statement + [ + () => { + isCSV = true; + }, + () => { + isJSON = true; + }, + () => { + isXLS = true; + }, + ][formatIdx](); + } + } else if (fileOriginalExt === 'csv') { + // handle simple 'CSV' file upload + isCSV = true; + dictionaryPath = path.join(os.tmpdir(), fileOriginalName); + await bucketInstance.file(importFilePath).download({ destination: dictionaryPath }); + } else if (fileOriginalExt === 'xlsx') { + // handle simple 'XLSX' file upload + isXLS = true; + dictionaryPath = path.join(os.tmpdir(), fileOriginalName); + await bucketInstance.file(importFilePath).download({ destination: dictionaryPath }); + } else if (fileOriginalExt === 'json') { + // handle simple 'JSON' file upload + isJSON = true; + dictionaryPath = path.join(os.tmpdir(), fileOriginalName); + await bucketInstance.file(importFilePath).download({ destination: dictionaryPath }); + } else { + throw new Error( + `UID: ${uid} -- no dictionary.csv or dictionary.json file found in archive or standalone, please resubmit with one included` + ); + } + + if (isCSV) { + // make a first pass through the csv and store errors in the validations collection variable + validations = await validateCSV(uid, dictionaryPath, timestamp, importId, dictionaryId); + if (validations.length > 0) { + await importRef.update({ + error: JSON.stringify(validations), + }); + processStatus = `error`; + } else { + processResults = await processCSV( + db, + uid, + dictionaryPath, + timestamp, + importId, + dictionaryId, + isArchived + ); + if (processResults.ERRORS && processResults.ERRORS.length > 0) { + await importRef.update({ + error: JSON.stringify(processResults.ERRORS), + }); + processStatus = `error`; + } else { + try { + await importRef.update({ + entryCount: processResults.importCount, + memoryUsage: process.memoryUsage(), + elapsedTime: `${Date.now() - functionStart}`, + }); + processStatus = `success`; + } catch (err) { + await importRef.update({ + error: 'errors while updating import status', + }); + processStatus = `error`; + } + } + } // if(validations.length>0) + await importRef.update({ + entryCount: processResults.importCount, + memoryUsage: process.memoryUsage(), + elapsedTime: `${Date.now() - functionStart}`, + status: processStatus, + }); + importCount = processResults.importCount; + return importCount; + } + + let jsonData: any = []; + + if (isXLS) { + // XLSX file parser + jsonData = await importXLS(dictionaryPath); + } + if (isJSON) { + // JSON file parser + jsonData = JSON.parse(fs.readFileSync(dictionaryPath)); + } + + for (const entry of jsonData) { + try { + const entryId = colRef.doc().id; + const docRef = colRef.doc(entryId); + let row = {}; + if (isXLS) { + row = await transformJsonRow( + entry, + uid, + timestamp, + importId, + dictionaryId, + importCount, + isArchived + ); + } + if (isJSON) { + // For importing old Talking Dictionaries + row = await transformTDJsonRow( + entry, + uid, + timestamp, + importId, + dictionaryId, + importCount, + isArchived + ); + } + batch.set(docRef, row); + } catch (err) { + validations.push(err); + } + if (stopcount === batchSize) { + await batch.commit(); + batch = db.batch(); + stopcount = -1; + } + ++stopcount; + ++importCount; + } + + processStatus = `success`; + await batch.commit(); + await importRef.update({ + entryCount: importCount, + memoryUsage: process.memoryUsage(), + elapsedTime: `${Date.now() - functionStart}`, + status: processStatus, + }); + return importCount; + }); diff --git a/functions/src/import/mock-dictionary.ts b/functions/src/import/mock-dictionary.ts new file mode 100644 index 000000000..f836f57c7 --- /dev/null +++ b/functions/src/import/mock-dictionary.ts @@ -0,0 +1,16 @@ +import { db } from '../config'; +import { IDictionary } from '../../../src/lib/interfaces'; +/** + * Create new empty dictionary in Firestore + */ +export const mockDictionary = async (dictionaryId: string, glossLanguages: string[]) => { + const dictionaryDoc: IDictionary = { + id: `${dictionaryId}`, + name: `${dictionaryId}`, + public: true, + entryCount: 0, + glossLanguages, //: ['en', 'es', 'hi', 'or'], + }; + await db.doc(`dictionaries/${dictionaryId}`).set(dictionaryDoc); + return dictionaryDoc; +}; diff --git a/functions/src/import/td-converters.ts b/functions/src/import/td-converters.ts new file mode 100644 index 000000000..a79e80c5e --- /dev/null +++ b/functions/src/import/td-converters.ts @@ -0,0 +1,132 @@ +import { partsOfSpeech } from '../../../src/lib/mappings/parts-of-speech'; + +/** + * Convert old Living Dictionary fields to match CSV template fields in preparation for data processing and upload to Firestore + */ +export const convertOldTDKeyNames = (tdData: any[]) => { + identifyUnmatchedPOS(tdData); + let entryCount = 0; + let audioRefCount = 0; + let imageRefCount = 0; + + for (const tdEntry of tdData) { + ++entryCount; + // Always set lexeme even if blank string + tdEntry.lexeme = tdEntry.lang.replace(/’/g, "'"); // handle old TD apostrophes correctly + delete tdEntry.lang; + + // if these fields are blank, delete, otherwise leave alone as they're named correct + if (!tdEntry.es_gloss) { + delete tdEntry.es_gloss; + } + if (!tdEntry.authority) { + delete tdEntry.authority; + } + if (!tdEntry.dialect) { + delete tdEntry.dialect; + } + + // Set proper fields if they exist, delete old fields + if (tdEntry.gloss) { + tdEntry.en_gloss = tdEntry.gloss; + } + delete tdEntry.gloss; + + if (tdEntry.ipa) { + tdEntry.phonetic = tdEntry.ipa.replace(/’/g, "'"); // handle old TD apostrophes correctly + } + delete tdEntry.ipa; + + if (tdEntry.pos) { + const { value, matched } = abbreviateTDPartOfSpeech(tdEntry.pos); + if (matched) { + tdEntry.partOfSpeech = value; + } else { + tdEntry.notes = value; // save misc parts of speech into the notes column if they don't match up with our standard POS list + } + } + delete tdEntry.pos; + + if (tdEntry.usage_example) { + tdEntry.vernacular_exampleSentence = tdEntry.usage_example; + } + delete tdEntry.usage_example; + + if (tdEntry.metadata) { + if (tdEntry.notes) { + tdEntry.notes = tdEntry.notes + ', ' + tdEntry.metadata; + } else { + tdEntry.notes = tdEntry.metadata; + } + } + delete tdEntry.metadata; + + if (tdEntry.audio) { + ++audioRefCount; + tdEntry.soundFile = tdEntry.audio; + } + delete tdEntry.audio; + + if (tdEntry.image) { + ++imageRefCount; + tdEntry.photoFile = tdEntry.image; + } + delete tdEntry.image; + + if (tdEntry.semantic_ids) { + tdEntry.semanticDomain_custom = tdEntry.semantic_ids; + } + delete tdEntry.semantic_ids; + } + console.log( + `Converted ${entryCount} entries, and found ${audioRefCount} audio references, and ${imageRefCount} image references` + ); + return tdData; +}; + +/** + * Convert old Living Dictionary parts of speech (both English and Spanish) to English abbreviations + */ +export const abbreviateTDPartOfSpeech = (input: string) => { + const sanitizedInput = input + .trim() + .toLowerCase() + .replace(/[.]$/, '') // removes word-final periods + .replace(/:/g, ''); // removes random colons in old TD data + const matchingPOS = partsOfSpeech.find((part) => { + //TODO, possibly more efficient just to return enAbbrev and not whole part object + return ( + part.enName === sanitizedInput || + part.esName === sanitizedInput || + part.enAbbrev === sanitizedInput || + (part.tdAlternates && part.tdAlternates.includes(sanitizedInput)) + ); + }); + // console.log({sanitizedInput}, {matchingPOS}); + return ( + (matchingPOS && { value: matchingPOS.enAbbrev, matched: true }) || { + value: sanitizedInput, + matched: false, + } + ); +}; + +/** + * Logs unique parts and a warning if any unmatched parts found so we know which are being pushed to the notes field + */ +export const identifyUnmatchedPOS = (tdData: any[]) => { + const uniquePartsOfSpeech: any = []; + + for (const tdEntry of tdData) { + if (tdEntry.pos) { + const pos = tdEntry.pos; + if (uniquePartsOfSpeech.indexOf(pos) === -1) uniquePartsOfSpeech.push(pos); + } + } + uniquePartsOfSpeech.forEach((part: string) => { + const { matched } = abbreviateTDPartOfSpeech(part); + if (!matched) { + console.log('No abbreviation found for: ', part); + } + }); +}; diff --git a/functions/src/index.ts b/functions/src/index.ts new file mode 100644 index 000000000..e19e5c81f --- /dev/null +++ b/functions/src/index.ts @@ -0,0 +1,82 @@ +// Optimization from https://github.com/CodingDoug/min-functions-cold-start +// Read https://medium.com/firebase-developers/organize-cloud-functions-for-max-cold-start-performance-and-readability-with-typescript-and-9261ee8450f0 + +// This should be the only import in index.ts beside function imports +import * as functions from 'firebase-functions'; + +export const updateDevAdminRole = + functions.https.onCall(async (data, context) => { + return (await import('./updateDevAdminRole')).default(data, context) + }) + +// Export +export const exportSemanticDomainOfDictionary = + functions.https.onRequest(async (req, res) => { + await (await import('./export/semanticDomainOfDictionary')).default(req, res) + }) + + +// Email +export const supportEmail = + functions.https.onCall(async (data, context) => { + return (await import('./email/supportEmail')).default(data, context) + }) + +export const inviteContributor = + functions.firestore.document('dictionaries/{dictionaryId}/invites/{inviteId}').onCreate(async (snapshot, context) => { + await (await import('./email/inviteContributor')).default(snapshot, context) + }) + +export const onNewUser = + functions.firestore.document('users/{userId}').onCreate(async (snapshot, context) => { + await (await import('./email/onNewUser')).default(snapshot, context) + }) + +export const onNewDictionary = + functions.firestore.document('dictionaries/{dictionaryId}').onCreate(async (snapshot, context) => { + await (await import('./email/onNewDictionary')).default(snapshot, context) + }) + +// Aggregation +export const increaseEntryCount = + functions.firestore.document('dictionaries/{dictionaryId}/words/{wordId}').onCreate(async (snapshot, context) => { + await (await import('./aggregation/increaseEntryCount')).default(snapshot, context) + }) + +export const decreaseEntryCount = + functions.firestore.document('dictionaries/{dictionaryId}/words/{wordId}').onDelete(async (snapshot, context) => { + await (await import('./aggregation/decreaseEntryCount')).default(snapshot, context) + }) + +// Deletion +export const deleteMediaOnDictionaryDelete = + functions.firestore.document('dictionaries/{dictionaryId}').onDelete(async (snapshot, context) => { + await (await import('./deletion/deleteMediaOnDictionaryDelete')).default(snapshot, context) + }) + +export const recursiveDelete = + functions.runWith({ + timeoutSeconds: 540, + memory: '2GB' + }).https.onCall(async (data, context) => { + return (await import('./deletion/recursiveDelete')).default(data, context) + }) + +// Import +// export { processImport } from './import/importing'; + +// Algolia Search Indexing +export const addToIndex = + functions.firestore.document('dictionaries/{dictionaryId}/words/{wordId}').onCreate(async (snapshot, context) => { + await (await import('./algolia/modifyIndex')).addToIndex(snapshot, context) + }) + +export const updateIndex = + functions.firestore.document('dictionaries/{dictionaryId}/words/{wordId}').onUpdate(async (change, context) => { + await (await import('./algolia/modifyIndex')).updateIndex(change, context) + }) + +export const deleteFromIndex = + functions.firestore.document('dictionaries/{dictionaryId}/words/{wordId}').onDelete(async (snapshot, context) => { + await (await import('./algolia/modifyIndex')).deleteFromIndex(snapshot, context) + }) \ No newline at end of file diff --git a/functions/src/updateDevAdminRole.ts b/functions/src/updateDevAdminRole.ts new file mode 100644 index 000000000..2c2ed3576 --- /dev/null +++ b/functions/src/updateDevAdminRole.ts @@ -0,0 +1,22 @@ +import * as functions from 'firebase-functions'; +const projectId = functions.config().project.key; + +import * as admin from 'firebase-admin'; +admin.initializeApp(); + +export default async ( + data: any, + context: functions.https.CallableContext +) => { + if (projectId !== 'talking-dictionaries-alpha' && typeof data.role === 'number') { + console.log('Set admin role to: ', data.role); + await admin.firestore().doc(`users/${context.auth.uid}`).update({ + roles: { + admin: data.role + } + }); + return true; + } else { + return true; + } +} \ No newline at end of file diff --git a/functions/tests/explore/env.test.ts b/functions/tests/explore/env.test.ts new file mode 100644 index 000000000..d5a53fbf5 --- /dev/null +++ b/functions/tests/explore/env.test.ts @@ -0,0 +1,66 @@ +/// + +import { testFun } from '../test-config'; +testFun.cleanup; +// import * as admin from 'firebase-admin'; + +import { supportEmail } from '../../src/index'; + +const envConfig = { + // sendgrid: { key: env.sendgrid } +}; + +test('supportEmail sends email (check email inbox)', () => { + testFun.mockConfig(envConfig); + + const wrapped = testFun.wrap(supportEmail); + const data = { + message: 'Hello', + email: 'CHANGE', + name: 'Test Function', + url: 'https://td-dev-svelte.web.app/achi-1579819002171/entries/list', + }; + wrapped(data).then(() => { + console.log('nothing to assert here, check email to find result of test'); + expect(true).toBe(true); + }); +}); +// test('success', () => { +// const req = { body: { card: '4242424242424242' } }; + +// const res = { +// send: (response: any) => { +// //Run the test in response callback of the HTTPS function +// expect(response).toBe('Hello, World!'); +// //done() is to be triggered to finish the function +// // done(); +// } +// }; + +// helloWorld(req as any, res as any); +// }); + +// describe('makePayment', () => { + +// test('it returns a successful response with a valid card', () => { +// const req = { body: { card: '4242424242424242' } }; +// const res = { +// send: (payload) => { +// expect(payload).toBe('Payment processed!') +// }, +// }; + +// env(req as any, res as any); +// }); + +// test('it returns an error with an invalid card', () => { +// const req = { body: { card: null } }; +// const res = { +// send: (payload) => { +// expect(payload).toBe('Missing card!') +// }, +// }; + +// makePayment(req as any, res as any); +// }); +// }); diff --git a/functions/tests/import/importing.test.ts b/functions/tests/import/importing.test.ts new file mode 100644 index 000000000..64cd481d8 --- /dev/null +++ b/functions/tests/import/importing.test.ts @@ -0,0 +1,249 @@ +// /// +// import { IImport } from '../../../src/app/_common/interfaces'; + +// import { testFun } from '../test-config'; +// testFun.cleanup; + +// import { mockDictionary, mockImport } from './mocks'; +// import { processImport, fileExtension, unzipImportedArchive, convertXlsxToJson, parseDataToJSON, processAndUploadData } from '../../src/import/importing'; + +// const dictionaryName: any = null //'remo'; +// const testId = Date.now(); +// const dictionaryId = `dictionary-test-${testId}`; +// const importId = `import-test-${testId}`; + +// import * as fs from 'fs-extra'; +// const util = require('util'); +// const logFile = fs.createWriteStream(`./tests/logs/import-test-${testId}.txt`, { flags: 'w' }); // 'a' to append, 'w' to write over file contents +// const logStdout = process.stdout; +// console.log = function () { +// logFile.write(util.format.apply(null, arguments) + '\n'); +// logStdout.write(util.format.apply(null, arguments) + '\n'); +// } + +// test('processImport cloud function activates onCreate and correctly parses and uploads data', async () => { +// jest.setTimeout(4000000); + +// await mockDictionary(dictionaryId, testId, dictionaryName); +// const importDoc: IImport = await mockImport(dictionaryId, importId, 'json-zip', dictionaryName); // 'csv' 'csv-zip' 'json' 'json-zip' + +// const importDocPath = `dictionaries/${dictionaryId}/imports/${importId}`; + +// const snap = testFun.firestore.makeDocumentSnapshot(importDoc, importDocPath); + +// const wrapped = testFun.wrap(processImport); +// const result = await wrapped(snap, { +// params: { +// dictionaryId, +// importId +// } +// }); + +// expect(result).toBeTruthy(); +// }); + +// // Test TODO: check that updateImportDoc works properly on success and error + +// test.skip('fileExtension recognizes file types properly', () => { +// expect.assertions(4); +// expect(fileExtension(`imports/${dictionaryId}/${importId}.zip`)).toBe('zip'); +// expect(fileExtension(`imports/${dictionaryId}/${importId}.csv`)).toBe('csv'); +// expect(fileExtension(`imports/${dictionaryId}/${importId}.xlsx`)).toBe('xlsx'); +// expect(fileExtension(`imports/${dictionaryId}/${importId}.json`)).toBe('json'); +// }) + +// test.skip('unzipImportedArchive properly returns data file type', async () => { +// const dataFileType = await unzipImportedArchive({ path: `imports/${dictionaryId}/${importId}.zip`, id: importId }, dictionaryId); +// expect(dataFileType).toBe('csv'); +// }) + +// test.skip('parseDataToJSON returns array of objects from all three data types with the first object containing a lexeme', async () => { +// expect.assertions(3); +// const csvJsonData = await parseDataToJSON('./tests/import/files/dictionary.csv', 'csv') +// const xlsxJsonData = await parseDataToJSON('./tests/import/files/dictionary.xlsx', 'xlsx') +// const tdJsonData = await parseDataToJSON('./tests/import/files/matukar_export_td.json', 'json') +// // console.log(csvJsonData); +// // console.log(xlsxJsonData); +// // console.log(tdJsonData); +// expect(csvJsonData[0].lexeme).toBeTruthy(); +// expect(xlsxJsonData[0].lexeme).toBeTruthy(); +// expect(tdJsonData[0].lang).toBeTruthy(); +// }) + +// test.skip('processAndUploadData uploads successfully and returns an entryCount', async () => { +// const jsonData = await parseDataToJSON('./tests/import/files/Tutelo-Saponi-v3-11.4.csv', 'csv') + +// // let entryCount = 0; +// // jsonData.forEach(async (row: any) => { +// // entryCount++; +// // if (entryCount > 1) { +// // const entry = await transformJsonRow(row, dictionaryId, importId, 'csv', entryCount); +// // console.log(entry); +// // } +// // }); +// const entryCount = await processAndUploadData(jsonData, dictionaryId, importId, 'csv', 'csv', 'uid', 'dev'); +// expect(entryCount).toBeGreaterThan(0); +// }) + +// test.skip('convertXlsxToJson returns an object', async () => { +// const jsonData = convertXlsxToJson('./tests/import/files/dictionary.xlsx'); +// expect(jsonData).toBeInstanceOf(Object) +// }) + +// /** +// * getStoragePath sample-imports +// */ +// // it('getStoragePath returns a path string containing these substrings', function () { +// // const fileName = 'test.txt'; +// // const result = getStoragePath(fileName, importId, dictionaryId, timestamp); +// // expect.assertions(4); +// // expect(result).toBeDefined(); +// // expect(result).toContain(dictionaryId); +// // expect(result).toContain(importId); +// // expect(result).toContain(timestamp.toMillis()); +// // }) + +// /** +// * transformJsonRow sample-imports +// */ +// // test('transformJsonRow throws an error if object is empty', async () => { +// // const row = {}; +// // const lineNumber = 3; +// // expect.assertions(1); +// // await expect( +// // transformJsonRow(row, uid, timestamp, importId, dictionaryId, lineNumber) +// // ).rejects.toThrow() +// // }) + +// // test('transformJsonRow does NOT throw if object has a lexeme', async () => { +// // const row = { lexeme: 'welcome' }; +// // const lineNumber = 3; +// // expect.assertions(1); +// // await expect( +// // transformJsonRow(row, uid, timestamp, importId, dictionaryId, lineNumber) +// // ).resolves.toHaveProperty('lx') +// // }) + +// // test('transformJsonRow has a "createdAt" timestamp on creation', async () => { +// // const row = { lexeme: 'welcome' }; +// // const lineNumber = 3; +// // expect.assertions(1); +// // await expect( +// // transformJsonRow(row, uid, timestamp, importId, dictionaryId, lineNumber) +// // ).resolves.toHaveProperty('createdAt') +// // }) + +// // test('transformJsonRow has a "source" property on creation', async () => { +// // const row = { lexeme: 'welcome' }; +// // const lineNumber = 3; +// // expect.assertions(1); +// // await expect( +// // transformJsonRow(row, uid, timestamp, importId, dictionaryId, lineNumber) +// // ).resolves.toHaveProperty('source') +// // }) + +// // test('transformJsonRow reads and parses a JSON file row from a sequential list if file contains "rows" object property', async () => { +// // const jsonData = JSON.parse(fs.readFileSync('./tests/import/files/testdictionary_rop.json')); +// // let count = 2; +// // const ERRORS = []; +// // for (const row of jsonData.rows) { +// // expect.assertions(2); +// // try { +// // await expect( +// // transformJsonRow(row, uid, timestamp, importId, dictionaryId, count) +// // ) +// // .resolves.toHaveProperty('lx') +// // ++count; +// // } catch (err) { +// // ERRORS.push(err) +// // } finally { +// // if (ERRORS.length > 0) { console.log(ERRORS) } +// // } +// // } +// // }) + +// /** +// * transformTDJsonRow sample-imports +// */ +// // test('transformTDJsonRow reads and parses a TD formatted JSON file row from a matukar export file containing ONLY an array of 4151 objects', async () => { +// // const jsonData = JSON.parse(fs.readFileSync('./tests/import/files/matukar_export_td.json')); +// // let count = 0; +// // const ERRORS = []; +// // for (const row of jsonData) { +// // expect.assertions(4152); +// // try { +// // await expect( +// // transformTDJsonRow(row, uid, timestamp, importId, dictionaryId, count) +// // ) +// // .resolves.toHaveProperty('lx') +// // ++count; +// // } catch (err) { +// // ERRORS.push(err) +// // } finally { +// // if (ERRORS.length > 0) { console.log(ERRORS) } +// // } +// // } +// // expect(count).toEqual(4151); +// // }) + +// // test('transformTDJsonRow reads and parses a TD formatted JSON file row from a siletz export file containing ONLY an array of 10549 objects', async () => { +// // const jsonData = JSON.parse(fs.readFileSync('./tests/import/files/siletz_export_td.json')); +// // let count = 0; +// // const ERRORS = []; +// // for (const row of jsonData) { +// // expect.assertions(10550); +// // try { +// // await expect( +// // transformTDJsonRow(row, uid, timestamp, importId, dictionaryId, count) +// // ) +// // .resolves.toHaveProperty('lx') +// // ++count; +// // } catch (err) { +// // ERRORS.push(err) +// // } finally { +// // if (ERRORS.length > 0) { console.log(ERRORS) } +// // } +// // } +// // expect(count).toEqual(10549); +// // }) + +// /** +// * getFileRefAndContentType sample-imports +// */ +// // describe.skip('expect getFileRefAndContentType', function () { +// // const bucketInstance = storage.bucket('test'); +// // const entry = { file: './tests/import/files/dictionary.csv' }; +// // const archiveDir = '160012345678'; +// // it('to return an object with two properties', () => { +// // expect.assertions(5); +// // const result = getFileMeta(bucketInstance, entry, archiveDir, timestamp, importId, dictionaryId) +// // expect(result).toBeDefined(); +// // expect(result).toBeTruthy(); +// // expect(result).toHaveProperty('fileRef'); +// // expect(result).toHaveProperty('contentType'); +// // expect(result).toHaveProperty('dictionaryFormatIdx'); +// // }) +// // }) + +// /** +// * validateCSV +// */ +// // test('validateCSV returns an object', async () => { +// // const dictionaryPath = './tests/import/files/dictionary.csv'; +// // expect(await validateCSV(uid, dictionaryPath, timestamp, importId, dictionaryId)) +// // .toBeInstanceOf(Object) +// // }) + +// // test('validateCSV returns an object even when given invalid data', async () => { +// // const dictionaryPath = './tests/import/files/dictionaryERRORS.csv'; +// // expect(await validateCSV(uid, dictionaryPath, timestamp, importId, dictionaryId)) +// // .toBeInstanceOf(Object) +// // }) + +// // test('validateCSV returns an object with an ERRORS property and length 2', async () => { +// // const dictionaryPath = './tests/import/files/dictionaryERRORS.csv'; +// // expect.assertions(2); +// // const result = await validateCSV(uid, dictionaryPath, timestamp, importId, dictionaryId) +// // expect(result).toHaveProperty('ERRORS') +// // expect(result.ERRORS).toHaveLength(1) +// // }) diff --git a/functions/tests/import/mocks.ts b/functions/tests/import/mocks.ts new file mode 100644 index 000000000..dd239140a --- /dev/null +++ b/functions/tests/import/mocks.ts @@ -0,0 +1,72 @@ +// import { db, storage, timestamp } from '../../src/config'; +// import { IImport, IDictionary } from '../../../src/app/_common/interfaces'; + +// /** +// * Create new empty dictionary in Firestore +// */ +// export const mockDictionary = async (dictionaryId: string, testId: number, dictionaryName?: string) => { +// const dictionaryDoc: IDictionary = { +// id: dictionaryId, +// name: `Test Dictionary: ${dictionaryName ? dictionaryName : testId}`, +// createdBy: 'Jest Test', +// createdAt: timestamp, +// updatedBy: 'Jest Test', +// updatedAt: Date.now(), +// public: false, +// entryCount: 0, +// glossLanguages: ['en', 'es', 'hi', 'or'], +// }; +// await db.doc(`dictionaries/${dictionaryId}`).set(dictionaryDoc); +// return dictionaryDoc; +// } + +// /** +// * Mock import by uploading import file and calling function to save import doc to Firestore +// */ +// export const mockImport = async (dictionaryId: string, importId: string, type: 'csv' | 'json' | 'csv-zip' | 'json-zip', dictionaryName?: string) => { +// let fileExt: 'csv' | 'json' | 'zip' = 'csv'; + +// if (dictionaryName) { +// fileExt = 'zip'; +// await storage.bucket().upload(`${dictionaryName}/${dictionaryName}_content_full.zip`, { destination: `${dictionaryId}/imports/${importId}.zip` }); +// } else if (type === 'csv') { +// const storagePath = `${dictionaryId}/imports/${importId}.${fileExt}`; +// await storage.bucket().upload('./tests/import/files/td-v1/wahgi_export.json', { destination: storagePath }); +// } else if (type === 'csv-zip') { +// fileExt = 'zip'; +// const storagePath = `${dictionaryId}/imports/${importId}.${fileExt}`; +// await storage.bucket().upload('./tests/import/files/v3-csv-template-with-3-audio-1-image-files.zip', { destination: storagePath }); +// // v3-csv-template-with-3-audio-files.zip +// } else if (type === 'json') { +// fileExt = 'json'; +// const storagePath = `${dictionaryId}/imports/${importId}.${fileExt}`; +// await storage.bucket().upload('./tests/import/files/quechua_chanka-old-TD-export-with-188-audio-200-entries.json', { destination: storagePath }); +// } else if (type === 'json-zip') { +// fileExt = 'zip'; +// const storagePath = `${dictionaryId}/imports/${importId}.${fileExt}`; +// await storage.bucket().upload('./tests/import/files/td-v1/remo_content_full.zip', { destination: storagePath }); +// } +// console.log('import uploaded') +// return await saveImportDoc(dictionaryId, importId, fileExt); +// } + +// /** +// * Create new Firestore import data file +// */ +// export const saveImportDoc = async (dictionaryId: string, importId: string, fileExt: 'csv' | 'json' | 'zip') => { +// const importDoc: IImport = { +// id: importId, +// path: `${dictionaryId}/imports/${importId}.${fileExt}`, +// createdByName: 'Local Import', +// createdBy: Date.now().toString(), +// createdAt: Date.now(), +// // createdAt: testingTimestamp, +// // Cannot encode [object Object]to a Firestore Value. Local testing does not yet support Firestore geo points. +// updatedBy: Date.now().toString(), +// // updatedAt: timestamp, +// updatedAt: Date.now(), +// status: 'uploaded', +// }; +// await db.doc(`dictionaries/${dictionaryId}/imports/${importId}`).set(importDoc); +// return importDoc; +// } diff --git a/functions/tests/import/td-converters.test.ts b/functions/tests/import/td-converters.test.ts new file mode 100644 index 000000000..31d0e26ee --- /dev/null +++ b/functions/tests/import/td-converters.test.ts @@ -0,0 +1,21 @@ +// /// +// import * as fs from 'fs-extra'; +// import { convertOldTDKeyNames } from '../../src/import/td-converters'; + +// // Write console statements to txt file +// const util = require('util'); +// const logFile = fs.createWriteStream(`./tests/logs/td-converter-test-${Date.now()}.txt`, { flags: 'w' }); // 'a' to append, 'w' to truncate the file every time the process starts. +// const logStdout = process.stdout; +// console.log = function () { +// logFile.write(util.format.apply(null, arguments) + '\n'); +// logStdout.write(util.format.apply(null, arguments) + '\n'); +// } + +// test('convertOldTDKeyNames returns properly formatted JSON for processing', async () => { +// // const tdJsonData = await fs.readJson('./tests/import/files/gta_export.json'); +// const tdJsonData = await fs.readJson('./tests/import/files/td-v1/wahgi_export.json'); +// // console.log(tdJsonData); +// const convertedJsonData = convertOldTDKeyNames(tdJsonData); +// // console.log(convertedJsonData); +// expect(convertedJsonData[0].lexeme).toBeTruthy(); +// }) \ No newline at end of file diff --git a/functions/tests/main.test.ts b/functions/tests/main.test.ts new file mode 100644 index 000000000..e959c7f3c --- /dev/null +++ b/functions/tests/main.test.ts @@ -0,0 +1,11 @@ +/// + +import { testFun } from './test-config'; +testFun.cleanup; + +import { db } from '../src/config'; + +test('Firestore is initialized', () => { + expect(db).toBeDefined(); +}); + diff --git a/functions/tests/test-config.ts b/functions/tests/test-config.ts new file mode 100644 index 000000000..3eaa23abd --- /dev/null +++ b/functions/tests/test-config.ts @@ -0,0 +1,20 @@ +// tslint:disable-next-line: no-implicit-dependencies +import * as TestFunctions from 'firebase-functions-test'; + +const devFirebaseConfig = { + databaseURL: 'https://talking-dictionaries-dev.firebaseio.com', + projectId: 'talking-dictionaries-dev', + storageBucket: 'talking-dictionaries-dev.appspot.com', +} + +const testFun = TestFunctions(devFirebaseConfig, 'service-account-dev.json'); + +// const prodFirebaseConfig = { +// databaseURL: 'https://talking-dictionaries-alpha.firebaseio.com', +// projectId: 'talking-dictionaries-alpha', +// storageBucket: 'talking-dictionaries-alpha.appspot.com', +// } + +// const testFun = TestFunctions(prodFirebaseConfig, 'service-account-prod.json'); + +export { testFun }; \ No newline at end of file diff --git a/functions/tsconfig.json b/functions/tsconfig.json new file mode 100644 index 000000000..8551b7473 --- /dev/null +++ b/functions/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "commonjs", + "noImplicitReturns": true, + // "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "strictNullChecks": false, + "target": "es2017", + "resolveJsonModule": true, + "esModuleInterop": true + }, + "compileOnSave": true, + "include": ["src"], + "exclude": ["src/import/**/*", "scripts/import/old/**/*"] +} diff --git a/jest.config.cjs b/jest.config.cjs new file mode 100644 index 000000000..e054b89e8 --- /dev/null +++ b/jest.config.cjs @@ -0,0 +1,11 @@ +/** @typedef {import('ts-jest')} */ +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + projects: [ + './tests/jest.ts.cjs', + './tests/jest.svelte.cjs', + // './scripts/jest.scripts.cjs', + ], +}; + +module.exports = config; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..19a6b6cfc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,9717 @@ +{ + "name": "living-dictionaries", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "0http": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/0http/-/0http-3.1.1.tgz", + "integrity": "sha512-qyWvQJzOEr+rMtmzUYgrMn9E2PKLxc6a74LkSuowK8W/qq2qUjBzCNwXbfjBJCZdFHpJcvewQ5FKkySTGCZuag==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0", + "trouter": "^3.2.0" + } + }, + "@algolia/cache-browser-local-storage": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.10.4.tgz", + "integrity": "sha512-oNCRQWI9cTYqNkyt+lelkqF5Z3sQNSJ2OT9tK5w0587IJNWqkzZzqipJyWHZv2sWyBbOboDrwZfZUcik3y0Qrg==", + "dev": true, + "requires": { + "@algolia/cache-common": "4.10.4" + } + }, + "@algolia/cache-common": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.10.4.tgz", + "integrity": "sha512-R2Sbg8zvVMsxFDKWQYAZD1cQIEO6J00dZFjFfYDMTH+r/t2CCOZal2EFGnHl7FcgTIEUsSrNJUzLefL8NM8/iA==", + "dev": true + }, + "@algolia/cache-in-memory": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.10.4.tgz", + "integrity": "sha512-ReQnhekfAvYFRu2odShmMxPM2OcRjSK1Atncam2HSu7Zt/51gtQp6WJMm7K+Mb3y+mT+ckBbOTamv/uTREcu2A==", + "dev": true, + "requires": { + "@algolia/cache-common": "4.10.4" + } + }, + "@algolia/client-account": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.10.4.tgz", + "integrity": "sha512-Wtr91lXidDh5niXL0LPWxCluRdKA2CDpE2O/RKc9uMNDYCzCOkAxF2CcUuIpEW0IceO0D3d8n/TLuuKOIk2mww==", + "dev": true, + "requires": { + "@algolia/client-common": "4.10.4", + "@algolia/client-search": "4.10.4", + "@algolia/transporter": "4.10.4" + } + }, + "@algolia/client-analytics": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.10.4.tgz", + "integrity": "sha512-CNOqWwq735i2kDh4DWk9Y4AN4mPIYOOec83xeWRnlSTfoL6DbLWVZTNBHi7Mi97h3prKVpr/Zm4f46RPrTYSsA==", + "dev": true, + "requires": { + "@algolia/client-common": "4.10.4", + "@algolia/client-search": "4.10.4", + "@algolia/requester-common": "4.10.4", + "@algolia/transporter": "4.10.4" + } + }, + "@algolia/client-common": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.10.4.tgz", + "integrity": "sha512-O5GcD/7JW7eLlLPc2AUGUHmWP95JZthivpiOmwloAVR1DFvgKZL3+1e3/e1wederPA3ETvz80++aL+6yPRhb8w==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.10.4", + "@algolia/transporter": "4.10.4" + } + }, + "@algolia/client-personalization": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.10.4.tgz", + "integrity": "sha512-n5lb4DXLhk0rbCBSE2TgjKko+NCX0/lNBCSTszdanznkdA8NaHnOdy0/LvDoXh2ZYAMJx2etZvfWLYcSLO8cGQ==", + "dev": true, + "requires": { + "@algolia/client-common": "4.10.4", + "@algolia/requester-common": "4.10.4", + "@algolia/transporter": "4.10.4" + } + }, + "@algolia/client-search": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.10.4.tgz", + "integrity": "sha512-qqSKogn85YTub8g01N4tcctsowbxq+QJzzzHSQA0+j4Pw93CguinDpX6mU/WbLIZIu2eaTeAQ7pORual3Li0yA==", + "dev": true, + "requires": { + "@algolia/client-common": "4.10.4", + "@algolia/requester-common": "4.10.4", + "@algolia/transporter": "4.10.4" + } + }, + "@algolia/logger-common": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.10.4.tgz", + "integrity": "sha512-B4D6HqS2TDcf6S8YEr9cFm8S7eswIniojC8IFoCtlfMxhCj2OM70rH1eqfY2VQy/KPY1txYPdMPk8AG8685fHg==", + "dev": true + }, + "@algolia/logger-console": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.10.4.tgz", + "integrity": "sha512-217KiWZ66BcQ5begHhD+h8mNTjOHvTmUYV203pXteExOgfAm/gzQ4GzzAwXVAhCID2tzRDObfDq8M3BCMp8NPA==", + "dev": true, + "requires": { + "@algolia/logger-common": "4.10.4" + } + }, + "@algolia/requester-browser-xhr": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.10.4.tgz", + "integrity": "sha512-a8sEt9WQeolA/ZCSfhd2ImH+8v7o45359Omn2iBXzB3+UD/fo1jOFcDgyX35AusXw8pNtDI/Jd4n0vBYJvtSWg==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.10.4" + } + }, + "@algolia/requester-common": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.10.4.tgz", + "integrity": "sha512-RkAxkX/z8DAHUGg0vtZkY/lZXBPc/aEUf/DmWPp2dspAiCp1ekYlyf+qLNwOwEHMu+Q6nm+meStpAUl0BpsNVg==", + "dev": true + }, + "@algolia/requester-node-http": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.10.4.tgz", + "integrity": "sha512-iixy8GOrj0A4sIQX2Q0GChc1z3iM6LF8fJNXVXG629hbXlssEECAl8wO3+6bqAOgbCLiYeY9Aj3QsJyA6vJ4Iw==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.10.4" + } + }, + "@algolia/transporter": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.10.4.tgz", + "integrity": "sha512-I60q9+4mYo3D9qIsUYaxU8ZukJVG/DWn1FBAeB5bW9c6/+chmppYJ5CJd/ZvKYEWd7ESwaRrrceYev94O4VrWw==", + "dev": true, + "requires": { + "@algolia/cache-common": "4.10.4", + "@algolia/logger-common": "4.10.4", + "@algolia/requester-common": "4.10.4" + } + }, + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "dev": true + }, + "@babel/core": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", + "dev": true, + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz", + "integrity": "sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA==", + "dev": true, + "requires": { + "core-js-pure": "^3.15.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + } + } + }, + "@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@firebase/analytics": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-6e7jYBrBBOy51d3ZJhgtyjAfXL3PdLm/3mFq0DktFQ5lTYRBkhvZ/vzUKF0Wir8yuuf1ZF36uS3VC1W9kNdfOQ==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.0.900-exp.8b4d7550f", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/analytics-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-PxBRYESDEfZ2EhubQppD6URNrDoRlAJd5CYUWG+xOlRouPkKSO9ol9khUvoVIgMy6JGDW5Iz6u+ktjy/Y/kX5w==", + "dev": true, + "requires": { + "@firebase/analytics": "0.0.900-exp.8b4d7550f", + "@firebase/analytics-types": "0.5.0", + "@firebase/component": "0.5.5", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/analytics-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.5.0.tgz", + "integrity": "sha512-VTV5Xtq5gVabbL/4n6pBtMJWcQBgOUDE2XbEHl8EOuwRaU9weyGUS7ofbisDkpl1RlFU1aewnc33pbLcYbi0iQ==", + "dev": true + }, + "@firebase/app": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-XoqzmD2JDYPZnzIUKku0MZ9Y2Vb7p2f3kgmC9+GvIejyeTbCKBGAls1wqUj31JUVoMGzJl88M0FB0MyQKswfNg==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-nIM/1kHUAP7pGQsEYjTPxcdMOBnAhrXhYdTWExYEwEynvPNRRN/hY/0xknYhCnTzF3g0AjLnkCSXVUaQI0KmQw==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-49+uaArrCs2iJsJGfkYqkIjHN+O9F4MYiEcHCRcuHZGL46Bdh7T2gRRvZWgF4MufNylKl5FtV/Ad7CbE2DL93g==", + "dev": true, + "requires": { + "@firebase/app-check": "0.0.900-exp.8b4d7550f", + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check-interop-types": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz", + "integrity": "sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==", + "dev": true + }, + "@firebase/app-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-NUbphHRV5TvBNn8qs58oeSXHz82D7PuV+7MNkCQ9Q2k8ePLQOljq06bmidUXbXoPyEPeuSYbCjiKybqDEsBc4Q==", + "dev": true, + "requires": { + "@firebase/app": "0.0.900-exp.8b4d7550f", + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "dom-storage": "2.1.0", + "tslib": "^2.1.0", + "xmlhttprequest": "1.8.0" + } + }, + "@firebase/app-types": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz", + "integrity": "sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw==", + "dev": true + }, + "@firebase/auth": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-Vxn4eMmbh6QhzDjK22Nm7wvj3hanuQ+sxM8JU448FaIUV0um2cQ6jvwHOMQy8OeGRLM3Wg5plaIDMAl4mfUHYQ==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "node-fetch": "2.6.1", + "selenium-webdriver": "4.0.0-beta.1", + "tslib": "^2.1.0" + } + }, + "@firebase/auth-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-c89DsJFzjQHisj5m6bfV5zdqXSwYH7PXyKzqOSbOjlNY7Ac0OvOre/QtpVCKofq0iZYueKQsCs3sGSMEO+J1qQ==", + "dev": true, + "requires": { + "@firebase/auth": "0.0.900-exp.8b4d7550f", + "@firebase/auth-types": "0.10.3", + "@firebase/component": "0.5.5", + "@firebase/util": "1.2.0", + "node-fetch": "2.6.1", + "selenium-webdriver": "^4.0.0-beta.2", + "tslib": "^2.1.0" + }, + "dependencies": { + "selenium-webdriver": { + "version": "4.0.0-beta.4", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-beta.4.tgz", + "integrity": "sha512-+s/CIYkWzmnC9WASBxxVj7Lm0dcyl6OaFxwIJaFCT5WCuACiimEEr4lUnOOFP/QlKfkDQ56m+aRczaq2EvJEJg==", + "dev": true, + "requires": { + "jszip": "^3.6.0", + "rimraf": "^3.0.2", + "tmp": "^0.2.1", + "ws": ">=7.4.6" + } + } + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==", + "dev": true + }, + "@firebase/auth-types": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.3.tgz", + "integrity": "sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA==", + "dev": true + }, + "@firebase/component": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.5.tgz", + "integrity": "sha512-L41SdS/4a164jx2iGfakJgaBUPPBI3DI+RrUlmh3oHSUljTeCwfj/Nhcv3S7e2lyXsGFJtAyepfPUx4IQ05crw==", + "dev": true, + "requires": { + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-d82ca5G0HPoGLRamFUW8RiYFNOi6NbO8C/OLwQja9t22lmOQyFHfheX9MN5gluhUY+LkyLya3XHAAQ61dF9vCQ==", + "dev": true, + "requires": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.5", + "@firebase/database-types": "0.7.3", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "faye-websocket": "0.11.3", + "tslib": "^2.1.0" + } + }, + "@firebase/database-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-jiC5FYnMZxVKIPUeqO2ZQKyW/maVO5aaPQqzosm1DlUC+D/azGKieQMwJJofYDJGbssaA8VpNT33Hd/XVdvUfw==", + "dev": true, + "requires": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.5", + "@firebase/database": "0.0.900-exp.8b4d7550f", + "@firebase/database-types": "0.7.3", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "faye-websocket": "0.11.3", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.3.tgz", + "integrity": "sha512-dSOJmhKQ0nL8O4EQMRNGpSExWCXeHtH57gGg0BfNAdWcKhC8/4Y+qfKLfWXzyHvrSecpLmO0SmAi/iK2D5fp5A==", + "dev": true, + "requires": { + "@firebase/app-types": "0.6.3" + } + }, + "@firebase/firestore": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-AOtu8aCsk2jRdClVEsPmzv4R4gGPDtWNVGKgkrGJnK5XGDDmf/S1spXb9d+rCNuQk7TAk4Yx/glvObJ9zj5lgg==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/firestore-types": "2.3.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "@firebase/webchannel-wrapper": "0.5.1", + "@grpc/grpc-js": "^1.3.2", + "@grpc/proto-loader": "^0.6.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/firestore-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-y/sJBYvoxFY7wmQC17g5YtvHbilnU2K4HOmybNx/Phx3ZeTg/VmPW2oMLDVfwJ3Pwjw+abvUS1mEzNMefs9FuQ==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/firestore": "0.0.900-exp.8b4d7550f", + "@firebase/firestore-types": "2.3.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "@firebase/webchannel-wrapper": "0.5.1", + "@grpc/grpc-js": "^1.3.2", + "@grpc/proto-loader": "^0.6.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/firestore-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.3.0.tgz", + "integrity": "sha512-QTW7NP7nDL0pgT/X53lyj+mIMh4nRQBBTBlRNQBt7eSyeqBf3ag3bxdQhCg358+5KbjYTC2/O6QtX9DlJZmh1A==", + "dev": true + }, + "@firebase/functions": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-IvAd1+1o4DTqRAjZQE/6J8MYyLVrieKxIdF8zEv76SJWAirffWEHApS6cCFLEWiPUbDIf6TYN7WTla/TiAtSIw==", + "dev": true, + "requires": { + "@firebase/app-check-interop-types": "0.1.0", + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.5", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "1.2.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/functions-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-5ksVZj8yh/mw5p/bhywlP1usdEpeBwcNvvkDcZ1J930zntOodJdWyIk9KycCMCS7pMUfI4tytMuP7JjPfLrt4A==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/functions": "0.0.900-exp.8b4d7550f", + "@firebase/functions-types": "0.4.0", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/functions-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.4.0.tgz", + "integrity": "sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ==", + "dev": true + }, + "@firebase/installations": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-RvpI/cbZvijAQD43PSIiKZwlDcaVZLTb4+klsaIVpCUwIR4pjWteuUnGnwWBCxzvqHb24coOfmwTNZBptP9PuQ==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/util": "1.2.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==", + "dev": true + }, + "@firebase/messaging": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-bRYBV3L5yfdPOdw1bo/FDmewMeYrbOP863PwkHrYsneNvv2g9DptmJ0X279xOwNu3PWI/zjTGc6htmMOU34qmQ==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.0.900-exp.8b4d7550f", + "@firebase/util": "1.2.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + } + }, + "@firebase/messaging-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-UIXM5H5dCKF+ZdJjd4RFHFI4G+8MesPMcassq1AO8OvaYV+Fv6XITbhihl9tnMbSZCNtxbhPEvJxbhhpgXWxmA==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.0.900-exp.8b4d7550f", + "@firebase/messaging": "0.0.900-exp.8b4d7550f", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", + "dev": true + }, + "@firebase/performance": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-VM96pG992LlfJyYWHRUVACPhIFYmHW/WbNuLjwv1TYsLx4N1zey53TxdFK0KObXkNhKmn4Q9Gz/NKxiGAwaURg==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.0.900-exp.8b4d7550f", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/performance-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-On6NEwqr2MnBD1GHoXOxBDqf8fOfn112SXXg0fuePW7SDqFxQ3wV8Ue0H3KHDoZVGhwrPLkeJ5yGt+MMMmRenA==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/performance": "0.0.900-exp.8b4d7550f", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==", + "dev": true + }, + "@firebase/remote-config": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-tr75CPY+qwTUr0F1ekZWYS1xsN/3jJuag2L99tZczp8KokSYTAMy0FGFxR9PA5hxwQqzUhPJuWQUEO3UfLnTQQ==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/installations": "0.0.900-exp.8b4d7550f", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/remote-config-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-fCaG9+VGJx9e4QJzJzi3v2wrv4rPySWaNP2vK2PbtqXrMW4cEPzd5DYEYdAwb6zSUqz71CYBqMtEVM2N7onyCA==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/logger": "0.2.6", + "@firebase/remote-config": "0.0.900-exp.8b4d7550f", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "1.2.0", + "tslib": "^2.1.0" + } + }, + "@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==", + "dev": true + }, + "@firebase/storage": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-oBRYC63h/2cI469WTN0+bZV5JhP8UMDAOBd81ZaI+fV3ce6FH+0ezYHBpc6Qp0uwCVGL22Q8YzCCt+lDnYhNkA==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/storage-types": "0.4.1", + "@firebase/util": "1.2.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/storage-compat": { + "version": "0.0.900-exp.8b4d7550f", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.0.900-exp.8b4d7550f.tgz", + "integrity": "sha512-kjq5RDX1N54Pz4CA7UNG9HuKZYfXi0UsRUOxjsL3Ppx/gwS5x51Ae/H2sAm6FDdrIKhzoSWRXLy+KIMgOTZhFA==", + "dev": true, + "requires": { + "@firebase/component": "0.5.5", + "@firebase/storage": "0.0.900-exp.8b4d7550f", + "@firebase/storage-types": "0.4.1", + "@firebase/util": "1.2.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/storage-types": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.4.1.tgz", + "integrity": "sha512-IM4cRzAnQ6QZoaxVZ5MatBzqXVcp47hOlE28jd9xXw1M9V7gfjhmW0PALGFQx58tPVmuUwIKyoEbHZjV4qRJwQ==", + "dev": true + }, + "@firebase/util": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.2.0.tgz", + "integrity": "sha512-8W9TTGImXr9cu+oyjBJ7yjoEd/IVAv0pBZA4c1uIuKrpGZi2ee38m+8xlZOBRmsAaOU/tR9DXz1WF/oeM6Fb7Q==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.5.1.tgz", + "integrity": "sha512-dZMzN0uAjwJXWYYAcnxIwXqRTZw3o14hGe7O6uhwjD1ZQWPVYA5lASgnNskEBra0knVBsOXB4KXg+HnlKewN/A==", + "dev": true + }, + "@formatjs/ecma402-abstract": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.9.3.tgz", + "integrity": "sha512-DBrRUL65m4SVtfq+T4Qltd8+upAzfb9K1MX0UZ0hqQ0wpBY0PSIti9XJe0ZQ/j2v/KxpwQ0Jw5NLumKVezJFQg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@formatjs/fast-memoize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.1.1.tgz", + "integrity": "sha512-mIqBr5uigIlx13eZTOPSEh2buDiy3BCdMYUtewICREQjbb4xarDiVWoXSnrERM7NanZ+0TAHNXSqDe6HpEFQUg==", + "dev": true + }, + "@formatjs/icu-messageformat-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.6.tgz", + "integrity": "sha512-dgOZ2kq3sbjjC4P0IIghXFUiGY+x9yyypBJF9YFACjw8gPq/OSPmOzdMGvjY9hl4EeeIhhsDd4LIAN/3zHG99A==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.9.3", + "@formatjs/icu-skeleton-parser": "1.2.7", + "tslib": "^2.1.0" + } + }, + "@formatjs/icu-skeleton-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.7.tgz", + "integrity": "sha512-xm1rJMOz4fwVfWH98VKtbTpZvyQ45plHilkCF16Nm6bAgosYC/IcMmgJisGr6uHqb5TvJRXE07+EvnkIIQjsdA==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.9.3", + "tslib": "^2.1.0" + } + }, + "@grpc/grpc-js": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.3.7.tgz", + "integrity": "sha512-CKQVuwuSPh40tgOkR7c0ZisxYRiN05PcKPW72mQL5y++qd7CwBRoaJZvU5xfXnCJDFBmS3qZGQ71Frx6Ofo2XA==", + "dev": true, + "requires": { + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.4.tgz", + "integrity": "sha512-7xvDvW/vJEcmLUltCUGOgWRPM8Oofv0eCFSVMuKqaqWJaXSzmB+m9hiyqe34QofAl4WAzIKUZZlinIF9FOHyTQ==", + "dev": true, + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", + "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.0.6", + "jest-util": "^27.0.6", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "@jest/core": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", + "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/reporters": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.0.6", + "jest-config": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-resolve-dependencies": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "jest-watcher": "^27.0.6", + "micromatch": "^4.0.4", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "@jest/environment": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", + "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/fake-timers": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", + "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@sinonjs/fake-timers": "^7.0.2", + "@types/node": "*", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "@jest/globals": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", + "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/types": "^27.0.6", + "expect": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/reporters": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", + "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", + "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/test-sequencer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", + "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", + "dev": true, + "requires": { + "@jest/test-result": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-runtime": "^27.0.6" + } + }, + "@jest/transform": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", + "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.0.6", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.0.6", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@mapbox/geojson-rewind": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz", + "integrity": "sha512-eL7fMmfTBKjrb+VFHXCGv9Ot0zc3C0U+CwXo1IrP+EPwDczLoXv34Tgq3y+2mPSFNVUXgU42ILWJTC7145KPTA==", + "dev": true, + "requires": { + "get-stream": "^6.0.1", + "minimist": "^1.2.5" + } + }, + "@mapbox/geojson-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", + "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==", + "dev": true + }, + "@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha1-zlblOfg1UrWNENZy6k1vya3HsjQ=", + "dev": true + }, + "@mapbox/mapbox-gl-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.0.tgz", + "integrity": "sha512-zu4udqYiBrKMQKwpKJ4hhPON7tz0QR/JZ3iGpHnNWFmH3Sv/ysxlICATUtGCFpsyJf2v1WpFhlzaZ3GhhKmPMA==", + "dev": true + }, + "@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=", + "dev": true + }, + "@mapbox/tiny-sdf": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==", + "dev": true + }, + "@mapbox/unitbezier": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4=", + "dev": true + }, + "@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "dev": true, + "requires": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", + "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", + "dev": true + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", + "dev": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", + "dev": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", + "dev": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", + "dev": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", + "dev": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", + "dev": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", + "dev": true + }, + "@rollup/plugin-commonjs": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", + "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/pluginutils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", + "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@sentry/browser": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.10.0.tgz", + "integrity": "sha512-H0Blgp8f8bomebkkGWIgxHVjabtQAlsKJDiFXBg7gIc75YcarRxwH0R3hMog1/h8mmv4CGGUsy5ljYW6jsNnvA==", + "dev": true, + "requires": { + "@sentry/core": "6.10.0", + "@sentry/types": "6.10.0", + "@sentry/utils": "6.10.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/core": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.10.0.tgz", + "integrity": "sha512-5KlxHJlbD7AMo+b9pMGkjxUOfMILtsqCtGgI7DMvZNfEkdohO8QgUY+hPqr540kmwArFS91ipQYWhqzGaOhM3Q==", + "dev": true, + "requires": { + "@sentry/hub": "6.10.0", + "@sentry/minimal": "6.10.0", + "@sentry/types": "6.10.0", + "@sentry/utils": "6.10.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/hub": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.10.0.tgz", + "integrity": "sha512-MV8wjhWiFAXZAhmj7Ef5QdBr2IF93u8xXiIo2J+dRZ7eVa4/ZszoUiDbhUcl/TPxczaw4oW2a6tINBNFLzXiig==", + "dev": true, + "requires": { + "@sentry/types": "6.10.0", + "@sentry/utils": "6.10.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/minimal": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.10.0.tgz", + "integrity": "sha512-yarm046UgUFIBoxqnBan2+BEgaO9KZCrLzsIsmALiQvpfW92K1lHurSawl5W6SR7wCYBnNn7CPvPE/BHFdy4YA==", + "dev": true, + "requires": { + "@sentry/hub": "6.10.0", + "@sentry/types": "6.10.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/types": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.10.0.tgz", + "integrity": "sha512-M7s0JFgG7/6/yNVYoPUbxzaXDhnzyIQYRRJJKRaTD77YO4MHvi4Ke8alBWqD5fer0cPIfcSkBqa9BLdqRqcMWw==", + "dev": true + }, + "@sentry/utils": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.10.0.tgz", + "integrity": "sha512-F9OczOcZMFtazYVZ6LfRIe65/eOfQbiAedIKS0li4npuMz0jKYRbxrjd/U7oLiNQkPAp4/BujU4m1ZIwq6a+tg==", + "dev": true, + "requires": { + "@sentry/types": "6.10.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sveltejs/adapter-vercel": { + "version": "1.0.0-next.27", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.27.tgz", + "integrity": "sha512-KiGDJXgjkj3MJvmQLXpE7pfQnN7dVx8pPgqcrFp8yziFrLMrvluklKmNqNei6JivQn5JVYxLojRgHpik1fdIOw==", + "dev": true, + "requires": { + "esbuild": "^0.12.5" + } + }, + "@sveltejs/kit": { + "version": "1.0.0-next.156", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.156.tgz", + "integrity": "sha512-YHT3sbPKpBGSYYFgEpXUx7JhN682wdXhc5INYZGqFfaGqkIOrThosz8qRsLQBfRbFnu0fzgWSsfj7FKq8YeFuA==", + "dev": true, + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.16", + "cheap-watch": "^1.0.3", + "sade": "^1.7.4", + "vite": "^2.5.0" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.0.0-next.19", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.19.tgz", + "integrity": "sha512-q9hHkMzodScwDq64pNaWhekpj97vWg3wO9T0rqd8bC2EsrBQs2uD1qMJvDqlNd63AbO2uSJMGo+TQ0Xt2xgyYg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.1.1", + "debug": "^4.3.2", + "kleur": "^4.1.4", + "magic-string": "^0.25.7", + "require-relative": "^0.8.7", + "svelte-hmr": "^0.14.7" + } + }, + "@tailwindcss/forms": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.3.3.tgz", + "integrity": "sha512-U8Fi/gq4mSuaLyLtFISwuDYzPB73YzgozjxOIHsK6NXgg/IWD1FLaHbFlWmurAMyy98O+ao74ksdQefsquBV1Q==", + "dev": true, + "requires": { + "mini-svg-data-uri": "^1.2.3" + } + }, + "@tailwindcss/typography": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz", + "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==", + "dev": true, + "requires": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + } + }, + "@testing-library/dom": { + "version": "7.31.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", + "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + } + }, + "@testing-library/jest-dom": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz", + "integrity": "sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^4.2.2", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@testing-library/svelte": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-3.0.3.tgz", + "integrity": "sha512-GxafAllShGM2nkntFGURZ7fYVlUYwv7K62lqv1aFqtTYzzeZ2Cu8zTVhtE/Qt3bk2zMl6+FPKP03wjLip/G8mA==", + "dev": true, + "requires": { + "@testing-library/dom": "^7.0.3" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@trysound/sax": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", + "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", + "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", + "dev": true + }, + "@types/aria-query": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.1.tgz", + "integrity": "sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/d3-dsv": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-2.0.1.tgz", + "integrity": "sha512-wovgiG9Mgkr/SZ/m/c0m+RwrIT4ozsuCWeLxJyoObDWsie2DeQT4wzMdHZPR9Ya5oZLQT3w3uSl0NehG0+0dCA==", + "dev": true + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==", + "dev": true + }, + "@types/google.maps": { + "version": "3.45.6", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.45.6.tgz", + "integrity": "sha512-BzGzxs8UXFxeP8uN/0nRgGbsbpYQxSCKsv/7S8OitU7wwhfFcqQSm5aAcL1nbwueMiJ/VVmIZKPq69s0kX5W+Q==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/hogan.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hogan.js/-/hogan.js-3.0.1.tgz", + "integrity": "sha512-D03i/2OY7kGyMq9wdQ7oD8roE49z/ZCZThe/nbahtvuqCNZY9T2MfedOWyeBdbEpY2W8Gnh/dyJLdFtUCOkYbg==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", + "dev": true + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", + "dev": true + }, + "@types/mapbox-gl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.3.0.tgz", + "integrity": "sha512-Vf5f/jWOgSKbQCm1q0KA7n2DrHZHEWT1NvKuWZl5k7LTYaw8LkZXe9AatWD16t5pKFNBVRpg2VVNXX89d7hyPQ==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, + "@types/node": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.0.tgz", + "integrity": "sha512-gCYSfQpy+LYhOFTKAeE8BkyGqaxmlFxe+n4DKM6DR0wzw/HISUE/hAmkC/KT8Sw5PCJblqg062b3z9gucv3k0A==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", + "dev": true + }, + "@types/pug": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.5.tgz", + "integrity": "sha512-LOnASQoeNZMkzexRuyqcBBDZ6rS+rQxUMkmj5A0PkhhiSZivLIuz6Hxyr1mkGoEZEkk66faROmpMi4fFkrKsBA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/recordrtc": { + "version": "5.6.6", + "resolved": "https://registry.npmjs.org/@types/recordrtc/-/recordrtc-5.6.6.tgz", + "integrity": "sha512-lO/0EL9Mp0HBiwmzwnYIPRKCdLkzimAjaKG5M0pPwuXi++corDU9nzIBP2Hgn7+8OTZWGpy9pHdTaJn8SUiMGw==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sass": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.16.1.tgz", + "integrity": "sha512-iZUcRrGuz/Tbg3loODpW7vrQJkUtpY2fFSf4ELqqkApcS2TkZ1msk7ie8iZPB86lDOP8QOTTmuvWjc5S0R9OjQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/testing-library__jest-dom": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.0.tgz", + "integrity": "sha512-l2P2GO+hFF4Liye+fAajT1qBqvZOiL79YMpEvgGs1xTK7hECxBI8Wz4J7ntACJNiJ9r0vXQqYovroXRLPDja6A==", + "dev": true, + "requires": { + "@types/jest": "*" + } + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.5.tgz", + "integrity": "sha512-m31cPEnbuCqXtEZQJOXAHsHvtoDi9OVaeL5wZnO2KZTnkvELk+u6J6jHg+NzvWQxk+87Zjbc4lJS4NHmgImz6Q==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.28.5", + "@typescript-eslint/scope-manager": "4.28.5", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.5.tgz", + "integrity": "sha512-bGPLCOJAa+j49hsynTaAtQIWg6uZd8VLiPcyDe4QPULsvQwLHGLSGKKcBN8/lBxIX14F74UEMK2zNDI8r0okwA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.28.5", + "@typescript-eslint/types": "4.28.5", + "@typescript-eslint/typescript-estree": "4.28.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.5.tgz", + "integrity": "sha512-NPCOGhTnkXGMqTznqgVbA5LqVsnw+i3+XA1UKLnAb+MG1Y1rP4ZSK9GX0kJBmAZTMIktf+dTwXToT6kFwyimbw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.28.5", + "@typescript-eslint/types": "4.28.5", + "@typescript-eslint/typescript-estree": "4.28.5", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.5.tgz", + "integrity": "sha512-PHLq6n9nTMrLYcVcIZ7v0VY1X7dK309NM8ya9oL/yG8syFINIMHxyr2GzGoBYUdv3NUfCOqtuqps0ZmcgnZTfQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.5", + "@typescript-eslint/visitor-keys": "4.28.5" + } + }, + "@typescript-eslint/types": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.5.tgz", + "integrity": "sha512-MruOu4ZaDOLOhw4f/6iudyks/obuvvZUAHBDSW80Trnc5+ovmViLT2ZMDXhUV66ozcl6z0LJfKs1Usldgi/WCA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.5.tgz", + "integrity": "sha512-FzJUKsBX8poCCdve7iV7ShirP8V+ys2t1fvamVeD1rWpiAnIm550a+BX/fmTHrjEpQJ7ZAn+Z7ZZwJjytk9rZw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.5", + "@typescript-eslint/visitor-keys": "4.28.5", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.5.tgz", + "integrity": "sha512-dva/7Rr+EkxNWdJWau26xU/0slnFlkh88v3TsyTgRS/IIYFi5iIfpCFM4ikw0vQTFUR9FYSSyqgK4w64gsgxhg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.5", + "eslint-visitor-keys": "^2.0.0" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "algoliasearch": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.10.4.tgz", + "integrity": "sha512-noZ59PZYyYJVsm78YEo6EXH5DgaU0jSKf17xxJ3q9WtpBkmiaNk5b53mSJFsAI3c5gMOWgXM4+4o1EEaCbXXGg==", + "dev": true, + "requires": { + "@algolia/cache-browser-local-storage": "4.10.4", + "@algolia/cache-common": "4.10.4", + "@algolia/cache-in-memory": "4.10.4", + "@algolia/client-account": "4.10.4", + "@algolia/client-analytics": "4.10.4", + "@algolia/client-common": "4.10.4", + "@algolia/client-personalization": "4.10.4", + "@algolia/client-search": "4.10.4", + "@algolia/logger-common": "4.10.4", + "@algolia/logger-console": "4.10.4", + "@algolia/requester-browser-xhr": "4.10.4", + "@algolia/requester-common": "4.10.4", + "@algolia/requester-node-http": "4.10.4", + "@algolia/transporter": "4.10.4" + } + }, + "algoliasearch-helper": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.5.5.tgz", + "integrity": "sha512-JDH14gMpSj8UzEaKwVkrqKOeAOyK0dDWsFlKvWhk0Xl5yw9FyafYf1xZPb4uSXaPBAFQtUouFlR1Zt68BCY0/w==", + "dev": true, + "requires": { + "events": "^1.1.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz", + "integrity": "sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", + "integrity": "sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-lite": "^1.0.30001243", + "colorette": "^1.2.2", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001248", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz", + "integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==", + "dev": true + } + } + }, + "babel-jest": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", + "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", + "dev": true, + "requires": { + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.0.6", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz", + "integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", + "integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.0.6", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "bcp-47-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz", + "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cac": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.3.tgz", + "integrity": "sha512-ECVqVZh74qgSuZG9YOt2OJPI3wGcf+EwwuF/XIOYqZBD0KZYLtgPWqFPxmDPQ6joxI1nOlvVgRV6VT53Ooyocg==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001238", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001238.tgz", + "integrity": "sha512-bZGam2MxEt7YNsa2VwshqWQMwrYs5tR5WZQRYSuFxsBQunWjBuXhN4cS9nV5FFb1Z9y+DoQcQ0COyQbv6A+CKw==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "cheap-watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cheap-watch/-/cheap-watch-1.0.3.tgz", + "integrity": "sha512-xC5CruMhLzjPwJ5ecUxGu1uGmwJQykUhqd2QrCrYbwvsFYdRyviu6jG9+pccwDXJR/OpmOTOJ9yLFunVgQu9wg==", + "dev": true + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz", + "integrity": "sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==", + "dev": true + }, + "ckeditor5-build-classic-with-alignment-underline-smallcaps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ckeditor5-build-classic-with-alignment-underline-smallcaps/-/ckeditor5-build-classic-with-alignment-underline-smallcaps-1.0.0.tgz", + "integrity": "sha512-25alYsrhgTsg51MkgGjfFk+aFbBVVEEA2dDOfoAc9rv4r30bNVN0DbKCLyRLiNJnEZrLIEASf7VOq8JmNa4TZg==", + "dev": true + }, + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==", + "dev": true + }, + "clipboard": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", + "dev": true, + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/color-js/-/color-js-1.0.5.tgz", + "integrity": "sha512-KgOTVz7fupb3lOXu4lixP6BR2CdMaTtCnGmLfHZWhq8NU3MABd6U9KjWtJVuYChGS/gIaoA8LakKKQfWhQgwYQ==", + "dev": true + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colord": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.4.0.tgz", + "integrity": "sha512-2306/NeTDOykDwvFQK0ctnP+9I5KQdqVm+IJAM6MsAr4vvy1llAdJyax4YmZoqTxdJ/lvRBwR8MqyJi/tupBAw==", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js-pure": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.15.1.tgz", + "integrity": "sha512-OZuWHDlYcIda8sJLY4Ec6nWq2hRjlyCqCZ+jCflyleMkVt3tPedDVErvHslyS2nbO+SlBFMSBJYvtLMwxnrzjA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true + }, + "css-declaration-sorter": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.1.tgz", + "integrity": "sha512-BZ1aOuif2Sb7tQYY1GeCjG7F++8ggnwUkH5Ictw0mrdpqpEd+zWmcPdstnH2TItlb74FqR0DrVEieon221T/1Q==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-selector-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", + "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==", + "dev": true + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", + "dev": true + }, + "css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "dev": true + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha1-s085HupNqPPpgjHizNjfnAQfFxs=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.7.tgz", + "integrity": "sha512-7C0tbb298hef3rq+TtBbMuezBQ9VrFtrQEsPNuBKNVgWny/67vdRsnq8EoNu7TRjAHURgYvWlRIpCUmcMZkRzw==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.1.3", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", + "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.1", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "csvtojson": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", + "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "lodash": "^4.17.3", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "dev": true + }, + "dependency-graph": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", + "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "direction": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", + "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", + "dev": true + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.6.tgz", + "integrity": "sha512-DplGLZd8L1lN64jlT27N9TVSESFR5STaEJvX+thCby7fuCHonfPpAlodYc3vuUYbDuDec5w8AMP7oCM5TWFsqw==", + "dev": true + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==", + "dev": true + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-object": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.4.tgz", + "integrity": "sha512-7FXnyyCLFawNYJ+NhkqyP9Wd2yzuo+7n9pGiYpkmXCTYa8Ci2U0eUNDVg5OuO5Pm6aFXI2SWN8/N/w7SJWu1WA==", + "dev": true, + "requires": { + "commander": "^4.0.0", + "glob": "^7.1.5" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + } + } + }, + "earcut": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.2.tgz", + "integrity": "sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.752", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz", + "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==", + "dev": true + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "esbuild": { + "version": "0.12.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.17.tgz", + "integrity": "sha512-GshKJyVYUnlSXIZj/NheC2O0Kblh42CS7P1wJyTbbIHevTG4jYMS9NNw8EOd8dDWD0dzydYHS01MpZoUcQXB4g==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "dev": true + }, + "eslint-plugin-svelte3": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.2.0.tgz", + "integrity": "sha512-qdWB1QN21dEozsJFdR8XlEhMnsS6aKHjsXWuNmchYwxoet5I6QdCr1Xcq62++IzRBMCNCeH4waXqSOAdqrZzgA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expect": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", + "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "firebase": { + "version": "9.0.0-beta.8", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.0.0-beta.8.tgz", + "integrity": "sha512-QPqBJ/oRe+Afwm7dkFQ0Uy85T4+Q+w0yyk5sOyOh6Tx5rpMdBHcPLTje8Nf4qq0k1tOyNrXPTKnVxX/gPjZ7cA==", + "dev": true, + "requires": { + "@firebase/analytics": "0.0.900-exp.8b4d7550f", + "@firebase/analytics-compat": "0.0.900-exp.8b4d7550f", + "@firebase/app": "0.0.900-exp.8b4d7550f", + "@firebase/app-check": "0.0.900-exp.8b4d7550f", + "@firebase/app-check-compat": "0.0.900-exp.8b4d7550f", + "@firebase/app-compat": "0.0.900-exp.8b4d7550f", + "@firebase/auth": "0.0.900-exp.8b4d7550f", + "@firebase/auth-compat": "0.0.900-exp.8b4d7550f", + "@firebase/database": "0.0.900-exp.8b4d7550f", + "@firebase/database-compat": "0.0.900-exp.8b4d7550f", + "@firebase/firestore": "0.0.900-exp.8b4d7550f", + "@firebase/firestore-compat": "0.0.900-exp.8b4d7550f", + "@firebase/functions": "0.0.900-exp.8b4d7550f", + "@firebase/functions-compat": "0.0.900-exp.8b4d7550f", + "@firebase/messaging": "0.0.900-exp.8b4d7550f", + "@firebase/messaging-compat": "0.0.900-exp.8b4d7550f", + "@firebase/performance": "0.0.900-exp.8b4d7550f", + "@firebase/performance-compat": "0.0.900-exp.8b4d7550f", + "@firebase/remote-config": "0.0.900-exp.8b4d7550f", + "@firebase/remote-config-compat": "0.0.900-exp.8b4d7550f", + "@firebase/storage": "0.0.900-exp.8b4d7550f", + "@firebase/storage-compat": "0.0.900-exp.8b4d7550f" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true + }, + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", + "dev": true, + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + }, + "dependencies": { + "emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=", + "dev": true + } + } + }, + "gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "dev": true, + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hast-util-has-property": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz", + "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==", + "dev": true + }, + "hast-util-is-element": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", + "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "dev": true + }, + "hast-util-select": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-4.0.2.tgz", + "integrity": "sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg==", + "dev": true, + "requires": { + "bcp-47-match": "^1.0.0", + "comma-separated-tokens": "^1.0.0", + "css-selector-parser": "^1.0.0", + "direction": "^1.0.0", + "hast-util-has-property": "^1.0.0", + "hast-util-is-element": "^1.0.0", + "hast-util-to-string": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0", + "unist-util-visit": "^2.0.0", + "zwitch": "^1.0.0" + } + }, + "hast-util-to-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz", + "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==", + "dev": true + }, + "hast-util-whitespace": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", + "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hogan.js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", + "integrity": "sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=", + "dev": true, + "requires": { + "mkdirp": "0.3.0", + "nopt": "1.0.10" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "requires": { + "import-from": "^3.0.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "instantsearch.js": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.28.0.tgz", + "integrity": "sha512-eJwIyPuMDagniMdNS8bNK5ZX4v/dlYmRdjM449FfWEiAem0cvYe1psWv3fYAmSYw8Llyb4jPFUcsHI7oRrCuwQ==", + "dev": true, + "requires": { + "@types/google.maps": "^3.45.3", + "@types/hogan.js": "^3.0.0", + "@types/qs": "^6.5.3", + "algoliasearch-helper": "^3.5.5", + "classnames": "^2.2.5", + "events": "^1.1.0", + "hogan.js": "^3.0.2", + "preact": "^10.0.0", + "qs": "^6.5.1 < 6.10" + } + }, + "intl-messageformat": { + "version": "9.6.18", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.6.18.tgz", + "integrity": "sha512-phG2EtMS/J6C4pcbErPkTSoqJ+T6qNfPVWTv5cDnI/nuCDKRUHPLDp4QpMdxIWPSUYPj7Lq69vMEIqg91x+H1Q==", + "dev": true, + "requires": { + "@formatjs/fast-memoize": "1.1.1", + "@formatjs/icu-messageformat-parser": "2.0.6", + "tslib": "^2.1.0" + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + }, + "dependencies": { + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + } + } + }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", + "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", + "dev": true, + "requires": { + "@jest/core": "^27.0.6", + "import-local": "^3.0.2", + "jest-cli": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-cli": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", + "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", + "dev": true, + "requires": { + "@jest/core": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "prompts": "^2.0.1", + "yargs": "^16.0.3" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "jest-changed-files": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", + "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-circus": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", + "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.0.6", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-config": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", + "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.0.6", + "@jest/types": "^27.0.6", + "babel-jest": "^27.0.6", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-docblock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", + "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-environment-jsdom": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", + "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6", + "jsdom": "^16.6.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "jest-environment-node": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", + "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", + "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", + "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.0.6", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-leak-detector": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", + "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", + "dev": true, + "requires": { + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-matcher-utils": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", + "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true + }, + "jest-diff": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + } + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-message-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", + "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.0.6", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-mock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", + "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true + }, + "jest-resolve": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", + "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "escalade": "^3.1.1", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "resolve": "^1.20.0", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", + "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-runner": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", + "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-leak-detector": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", + "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/globals": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.0.3" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } + } + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", + "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", + "dev": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "natural-compare": "^1.4.0", + "pretty-format": "^27.0.6", + "semver": "^7.3.2" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true + }, + "jest-diff": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + } + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-validate": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", + "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "leven": "^3.1.0", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true + }, + "pretty-format": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "jest-watcher": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", + "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.0.6", + "string-length": "^4.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + } + } + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdom": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", + "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.5", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jszip": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "kdbush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==", + "dev": true + }, + "kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.forown": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-4.4.0.tgz", + "integrity": "sha1-hRFc8E9z75ZuztUlEdOJPMRmg68=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "dev": true + }, + "lodash.topath": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", + "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "logrocket": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/logrocket/-/logrocket-1.3.0.tgz", + "integrity": "sha512-iP3l9hgBJxTkATZKJs93+uUJBvfg6QkV3+wNk9YB/wkJweXfsH9cNyYRx1PxI4BXvgX/CGR0qwbP7Vvo8STtgg==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "mapbox-gl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.3.0.tgz", + "integrity": "sha512-0ssKvbxNnvkenzmJCS0kbXGTYtFtlaX/UdOFGnGdR0nBW3cB2sXwx3yCK8b+SmvsTt6qumpkxeZy7ahspSCA8A==", + "dev": true, + "requires": { + "@mapbox/geojson-rewind": "^0.5.0", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^2.0.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.2.5", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.2", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.3.0", + "grid-index": "^1.1.0", + "minimist": "^1.2.5", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^7.1.3", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "mdsvex": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.8.9.tgz", + "integrity": "sha512-9CDBDV29IVNJsJWDlCg1UwascU8QmuHsYEXJH2ZGsf7lCCWUDSwbOmR+I77tm8D2YQrPsbLCLq/UndUMJck3Cw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.3", + "prismjs": "^1.17.1", + "vfile-message": "^2.0.4" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "requires": { + "mime-db": "1.48.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "mini-svg-data-uri": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.3.3.tgz", + "integrity": "sha512-+fA2oRcR1dJI/7ITmeQJDrYWks0wodlOz0pAEhKYJ2IVc1z0AnwJUsKY2fzFmPAM3Jo9J0rBx8JAA9QQSJ5PuA==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "modern-normalize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", + "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", + "dev": true + }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "mri": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E=", + "dev": true + }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "navaid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/navaid/-/navaid-1.2.0.tgz", + "integrity": "sha512-Yh5mix394WrT5go29GFeFD4Gp4W0Xj1Ejs0KHXXCA24KKW74pq3PY3fwP3o18KveYO/pjUI2zzcAAp8kY98aNA==", + "dev": true, + "requires": { + "regexparam": "^1.0.2" + } + }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dev": true, + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", + "dev": true + }, + "not": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", + "integrity": "sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0=", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=", + "dev": true + }, + "nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "overlayscrollbars": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz", + "integrity": "sha512-gIQfzgGgu1wy80EB4/6DaJGHMEGmizq27xHIESrzXq0Y/J0Ay1P3DWk6tuVmEPIZH15zaBlxeEJOqdJKmowHCQ==", + "dev": true + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "dev": true, + "requires": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + } + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", + "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-cli": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-8.3.1.tgz", + "integrity": "sha512-leHXsQRq89S3JC9zw/tKyiVV2jAhnfQe0J8VI4eQQbUjwIe0XxVqLrR+7UsahF1s9wi4GlqP6SJ8ydf44cgF2Q==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "chokidar": "^3.3.0", + "dependency-graph": "^0.9.0", + "fs-extra": "^9.0.0", + "get-stdin": "^8.0.0", + "globby": "^11.0.0", + "postcss-load-config": "^3.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^3.0.0", + "yargs": "^16.0.0" + } + }, + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true + }, + "postcss-functions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", + "integrity": "sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=", + "dev": true, + "requires": { + "glob": "^7.1.2", + "object-assign": "^4.1.1", + "postcss": "^6.0.9", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", + "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1", + "postcss": "^8.1.6" + } + }, + "postcss-load-config": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", + "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", + "dev": true, + "requires": { + "import-cwd": "^3.0.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "requires": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + } + }, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + } + }, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-gradients": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", + "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "is-color-stop": "^1.1.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-nested": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.5.tgz", + "integrity": "sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-reporter": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.2.tgz", + "integrity": "sha512-JyQ96NTQQsso42y6L1H1RqHfWH1C3Jr0pt91mVv5IdYddZAE9DUZxuferNgk6q0o6vBVOrfVJb10X1FgDzjmDw==", + "dev": true, + "requires": { + "colorette": "^1.2.1", + "lodash.difference": "^4.5.0", + "lodash.forown": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.groupby": "^4.6.0", + "lodash.sortby": "^4.7.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + } + }, + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "potpack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.1.tgz", + "integrity": "sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==", + "dev": true + }, + "preact": { + "version": "10.5.14", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz", + "integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "dev": true + }, + "prettier-plugin-svelte": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.3.1.tgz", + "integrity": "sha512-F1/r6OYoBq8Zgurhs1MN25tdrhPw0JW5JjioPRqpxbYdmrZ3gY/DzHGs0B6zwd4DLyRsfGB2gqhxUCbHt/D1fw==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "prism-svelte": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz", + "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==", + "dev": true + }, + "prismjs": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz", + "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } + } + }, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dev": true, + "requires": { + "xtend": "^4.0.0" + } + }, + "protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, + "protocol-buffers-schema": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.5.1.tgz", + "integrity": "sha512-YVCvdhxWNDP8/nJDyXLuM+UFsuPk4+1PB7WGPVDzm3HTHbzFLxQYeW2iZpS4mmnXrQJGBzt230t/BbEb7PrQaw==", + "dev": true + }, + "proxyquire": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", + "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", + "dev": true, + "requires": { + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.1", + "resolve": "^1.11.1" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "purgecss": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.0.3.tgz", + "integrity": "sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==", + "dev": true, + "requires": { + "commander": "^6.0.0", + "glob": "^7.0.0", + "postcss": "^8.2.1", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + } + } + }, + "qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "recordrtc": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/recordrtc/-/recordrtc-5.6.2.tgz", + "integrity": "sha512-1QNKKNtl7+KcwD1lyOgP3ZlbiJ1d0HtXnypUy7yq49xEERxk31PHvE9RCciDrulPCY7WJ+oz0R9hpNxgsIurGQ==", + "dev": true + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regexparam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", + "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==", + "dev": true + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "rehype-autolink-headings": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-3.0.0.tgz", + "integrity": "sha512-Kit6caYCGvH7OSeXgEq0F4b4vXFg92owru/26ckSLCODjvbD4TogAOvYvzcvkaeIO0uDpnmCg0MsmHJtHXBvyQ==", + "dev": true, + "requires": { + "extend": "^3.0.1", + "hast-util-has-property": "^1.0.0", + "hast-util-is-element": "^1.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "rehype-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-3.0.0.tgz", + "integrity": "sha512-zFnj5BCEJXV6+URwaz8yW+9BdjDwO5iVzlQui3+7cCJ9MXlIEL0IY8VefcT/03Gw+2Hutdrx+zXnS7bnOrepZg==", + "dev": true, + "requires": { + "github-slugger": "^1.1.1", + "hast-util-has-property": "^1.0.0", + "hast-util-is-element": "^1.0.0", + "hast-util-to-string": "^1.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "replace-in-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.2.0.tgz", + "integrity": "sha512-Im2AF9G/qgkYneOc9QwWwUS/efyyonTUBvzXS2VXuxPawE5yQIjT/e6x4CTijO0Quq48lfAujuo+S89RR2TP2Q==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "glob": "^7.1.6", + "yargs": "^16.2.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "dev": true, + "requires": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "restana": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/restana/-/restana-4.9.1.tgz", + "integrity": "sha512-V2AgZCs54/Q3AffX/M5ru3vVAeQB6fmInccIzluxYGXdEGhF+ANbHrzeKUTKgk1cx0cgAGDikr9gPdZreD1e7A==", + "dev": true, + "requires": { + "0http": "^3.1.1" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.3.tgz", + "integrity": "sha512-79QIGP5DXz5ZHYnCPi3tLz+elOQi6gudp9YINdaJdjG0Yddubo6JRFUM//qCZ0Bap/GJrsUoEBVdSOc4AkMlRA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-svelte-hot": { + "version": "1.0.0-8", + "resolved": "https://registry.npmjs.org/rollup-plugin-svelte-hot/-/rollup-plugin-svelte-hot-1.0.0-8.tgz", + "integrity": "sha512-mCGILRyEAFpeU6NOZdkC5XzD8sCkShjz3+Or5btHoGPEJRQq9yZbpfMG+5RrC9r0KBKJgHVJZPZRUEJ+I67Tww==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.1.0", + "require-relative": "^0.8.7", + "svelte-hmr": "^0.14.3" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "routix": { + "version": "0.1.0-8", + "resolved": "https://registry.npmjs.org/routix/-/routix-0.1.0-8.tgz", + "integrity": "sha512-f2KiGGjI8cmUg2hOWyWHdPnzGQHZAqj8hB9PkabrYl0ANF1luelkH/Bp2/PnaqxHMvKac2nVZdgNuw6HXBnS6A==", + "dev": true, + "requires": { + "cheap-watch": "^1.0.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=", + "dev": true + }, + "sade": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", + "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "dev": true + }, + "selenium-webdriver": { + "version": "4.0.0-beta.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-beta.1.tgz", + "integrity": "sha512-DJ10z6Yk+ZBaLrt1CLElytQ/FOayx29ANKDtmtyW1A6kCJx3+dsc5fFMOZxwzukDniyYsC3OObT5pUAsgkjpxQ==", + "dev": true, + "requires": { + "jszip": "^3.5.0", + "rimraf": "^2.7.1", + "tmp": "^0.2.1", + "ws": "^7.3.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-git-hooks": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.5.1.tgz", + "integrity": "sha512-iI/MEEVObv45slsxz+BT+5NCS2UDgVIqfQKmNjL4/XnEfacpdYAHd71Imc5Nw/FY100A+i1PIXdIdkLHYcC2Bg==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sirv": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.6.tgz", + "integrity": "sha512-rYpOXlNbpHiY4nVXxuDf4mXPvKz1reZGap/LkWp9TvcZ84qD/nPBjjH/6GZsgIjVMbOslnY8YYULAyP8jMn1GQ==", + "dev": true, + "requires": { + "@polka/url": "^0.5.0", + "mime": "^2.3.1" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-chain": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz", + "integrity": "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==", + "dev": true + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + } + }, + "supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-7+bR4FbF5SYsmkHfDp61QiwCKtwNDyPsddk9TzfsDA5DQr5Goii5CVD2SXjglweFCxjrzVZf945ahqYfUIk8UA==", + "dev": true, + "requires": { + "kdbush": "^3.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "svelte": { + "version": "3.42.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.42.2.tgz", + "integrity": "sha512-FOyNYKXb8wdE0Ot+Ctt2/OyDLsNBP8+V6PUE9ag6ZKeLslIou0LnMu1fhtWUA+HjzKTbAM1yj+4PFLtg/3pMJA==", + "dev": true + }, + "svelte-check": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.2.5.tgz", + "integrity": "sha512-EstDoqxjqWStWELh7Z0qytqUDl/ikdNEr21dveNc4fUDnhnqO2F2jHEufqoNnC3GfBji3GIUHvoXsp/I5lMbCg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "chokidar": "^3.4.1", + "glob": "^7.1.6", + "import-fresh": "^3.2.1", + "minimist": "^1.2.5", + "sade": "^1.7.4", + "source-map": "^0.7.3", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + } + }, + "svelte-hmr": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.7.tgz", + "integrity": "sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog==", + "dev": true + }, + "svelte-i18n": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-3.3.9.tgz", + "integrity": "sha512-0w+4kHH/T5DJ4VvX4N2LxYaKxFIKgfc1yzB08ZUOAuQsWC+zgr95mqfgmQVRJ7GxHxneVJcq33VjOzmXzRmYVA==", + "dev": true, + "requires": { + "deepmerge": "^4.2.2", + "estree-walker": "^2.0.1", + "intl-messageformat": "^9.3.15", + "sade": "^1.7.4", + "tiny-glob": "^0.2.6" + } + }, + "svelte-jester": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/svelte-jester/-/svelte-jester-1.7.0.tgz", + "integrity": "sha512-eWJSmxGXR/jetU+gpuAvrSEZT7PpNxrhV2GoUm/WQUtXFjGJcy6sZTq3kKaUz7q8VddHU1/yt9cxDRxo8IUsLA==", + "dev": true + }, + "svelte-preprocess": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.8.0.tgz", + "integrity": "sha512-i9Z17cwGlp+kuSSv3kJWdAdAP2L26A5yMzHHdDj8YL+86sN64Yz5/gfjQp3Xb6fiaToo4sB+wTpid/23Gz0yvw==", + "dev": true, + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "strip-indent": "^3.0.0" + } + }, + "svench": { + "version": "0.2.0-29", + "resolved": "https://registry.npmjs.org/svench/-/svench-0.2.0-29.tgz", + "integrity": "sha512-T9LoX0jYR31KGA198E7nmONfXi+v6YiFAt5TmA1+6+h8k9cz6fuFy76eLPMa5zQU1zNSigYVTGul1ChX/ZbNog==", + "dev": true, + "requires": { + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-node-resolve": "^11.0.1", + "cac": "^6.7.2", + "cheap-watch": "^1.0.3", + "clipboard": "^2.0.6", + "color-js": "^1.0.5", + "dedent": "^0.7.0", + "esm": "^3.2.25", + "hast-util-select": "^4.0.0", + "http-proxy": "^1.18.1", + "mdsvex": "^0.8.0", + "navaid": "^1.1.0", + "overlayscrollbars": "^1.12.0", + "prism-svelte": "^0.4.6", + "prismjs": "^1.21.0", + "proxyquire": "^2.1.3", + "regexparam": "^1.3.0", + "rehype-autolink-headings": "^3.0.0", + "rehype-slug": "^3.0.0", + "require-relative": "^0.8.7", + "resolve": "^1.20.0", + "restana": "^4.4.1", + "rollup": "^2.39.1", + "rollup-plugin-svelte-hot": "^1.0.0-8", + "rollup-plugin-terser": "^7.0.2", + "routix": "^0.1.0-8", + "sirv": "^0.4.2", + "stack-chain": "^2.0.0", + "trace": "^3.1.1", + "zingtouch": "^1.0.6" + } + }, + "svgo": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.1.tgz", + "integrity": "sha512-riDDIQgXpEnn0BEl9Gvhh1LNLIyiusSpt64IR8upJu7MwxnzetmF/Y57pXQD2NMX2lVyMRzXt5f2M5rO4wG7Dw==", + "dev": true, + "requires": { + "@trysound/sax": "0.1.1", + "chalk": "^4.1.0", + "commander": "^7.1.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.2", + "csso": "^4.2.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "tailwindcss": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.7.tgz", + "integrity": "sha512-jv35rugP5j8PpzbXnsria7ZAry7Evh0KtQ4MZqNd+PhF+oIKPwJTVwe/rmfRx9cZw3W7iPZyzBmeoAoNwfJ1yg==", + "dev": true, + "requires": { + "arg": "^5.0.0", + "bytes": "^3.0.0", + "chalk": "^4.1.1", + "chokidar": "^3.5.2", + "color": "^3.2.0", + "cosmiconfig": "^7.0.0", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.7", + "fs-extra": "^10.0.0", + "glob-parent": "^6.0.0", + "html-tags": "^3.1.0", + "is-glob": "^4.0.1", + "lodash": "^4.17.21", + "lodash.topath": "^4.5.2", + "modern-normalize": "^1.1.0", + "node-emoji": "^1.8.1", + "normalize-path": "^3.0.0", + "object-hash": "^2.2.0", + "postcss-js": "^3.0.3", + "postcss-load-config": "^3.1.0", + "postcss-nested": "5.0.5", + "postcss-selector-parser": "^6.0.6", + "postcss-value-parser": "^4.1.0", + "pretty-hrtime": "^1.0.3", + "purgecss": "^4.0.3", + "quick-lru": "^5.1.1", + "reduce-css-calc": "^2.1.8", + "resolve": "^1.20.0", + "tmp": "^0.2.1" + }, + "dependencies": { + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob-parent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.1.tgz", + "integrity": "sha512-kEVjS71mQazDBHKcsq4E9u/vUzaLcw1A8EtUeydawvIWQCJM0qQ08G1H7/XTjFUulla6XQiDOG6MXSaG0HDKog==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "tailwindcss-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tailwindcss-dir/-/tailwindcss-dir-4.0.0.tgz", + "integrity": "sha512-G5orTODS8sDQOZqKa2Q4Ey/F4nlxK1mTZm02iKHLxZaNjpboPews/h2KUksC5KbgIVrpmOe1hqcNYZJy07ftwA==", + "dev": true, + "requires": { + "tailwindcss": "^1.0.1" + }, + "dependencies": { + "@fullhuman/postcss-purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-2.3.0.tgz", + "integrity": "sha512-qnKm5dIOyPGJ70kPZ5jiz0I9foVOic0j+cOzNDoo8KoCf6HjicIZ99UfO2OmE7vCYSKAAepEwJtNzpiiZAh9xw==", + "dev": true, + "requires": { + "postcss": "7.0.32", + "purgecss": "^2.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + } + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + } + } + }, + "postcss-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz", + "integrity": "sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1", + "postcss": "^7.0.18" + } + }, + "postcss-nested": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz", + "integrity": "sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==", + "dev": true, + "requires": { + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2" + } + }, + "purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "dev": true, + "requires": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tailwindcss": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.9.6.tgz", + "integrity": "sha512-nY8WYM/RLPqGsPEGEV2z63riyQPcHYZUJpAwdyBzVpxQHOHqHE+F/fvbCeXhdF1+TA5l72vSkZrtYCB9hRcwkQ==", + "dev": true, + "requires": { + "@fullhuman/postcss-purgecss": "^2.1.2", + "autoprefixer": "^9.4.5", + "browserslist": "^4.12.0", + "bytes": "^3.0.0", + "chalk": "^3.0.0 || ^4.0.0", + "color": "^3.1.2", + "detective": "^5.2.0", + "fs-extra": "^8.0.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.20", + "node-emoji": "^1.8.1", + "normalize.css": "^8.0.1", + "object-hash": "^2.0.3", + "postcss": "^7.0.11", + "postcss-functions": "^3.0.0", + "postcss-js": "^2.0.0", + "postcss-nested": "^4.1.1", + "postcss-selector-parser": "^6.0.0", + "postcss-value-parser": "^4.1.0", + "pretty-hrtime": "^1.0.3", + "reduce-css-calc": "^2.1.6", + "resolve": "^1.14.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "trace": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/trace/-/trace-3.1.1.tgz", + "integrity": "sha512-iVxFnDKps8bCRQ6kXj66rHYFJY3fNkoYPHeFTFZn89YdwmmQ9Hz97IFPf3NdfbCF3zuqUqFpRNTu6N9+eZR2qg==", + "dev": true, + "requires": { + "stack-chain": "^2.0.0" + } + }, + "trouter": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/trouter/-/trouter-3.2.0.tgz", + "integrity": "sha512-rLLXbhTObLy2MBVjLC+jTnoIKw99n0GuJs9ov10J870vDw5qhTurPzsDrudNtBf5w/CZ9ctZy2p2IMmhGcel2w==", + "dev": true, + "requires": { + "regexparam": "^1.3.0" + } + }, + "ts-jest": { + "version": "27.0.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.4.tgz", + "integrity": "sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + } + }, + "ts-node": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.1.0.tgz", + "integrity": "sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==", + "dev": true, + "requires": { + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + } + } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-to-istanbul": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz", + "integrity": "sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + } + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vite": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.5.1.tgz", + "integrity": "sha512-FwmLbbz8MB1pBs9dKoRDgpiqoijif8hSK1+NNUYc12/cnf+pM2UFhhQ1rcpXgbMhm/5c2USZdVAf0FSkSxaFDA==", + "dev": true, + "requires": { + "esbuild": "^0.12.17", + "fsevents": "~2.3.2", + "postcss": "^8.3.6", + "resolve": "^1.20.0", + "rollup": "^2.38.5" + } + }, + "vt-pbf": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "dev": true, + "requires": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "wavesurfer.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wavesurfer.js/-/wavesurfer.js-5.1.0.tgz", + "integrity": "sha512-6qEhIopHwDpZl9otqopIH94gcu1xxbO4JZfjd0kH/s5c4p52BSx3p5/dBH4aappzvxbI+90fxKZKsoqaOUSn8Q==", + "dev": true + }, + "web-vitals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.0.tgz", + "integrity": "sha512-npEyJP8jHf3J71t1tRTEtz9FeKp8H2udWJUUq5ykfPhhstr//TUxiYhIEzLNwk4zv2ybAilMn7v7N6Mxmuitmg==", + "dev": true + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "zingtouch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/zingtouch/-/zingtouch-1.0.6.tgz", + "integrity": "sha512-S7jcR7cSRy28VmQBO0Tq7ZJV4pzfvvrTU9FrrL0K1QPpfBal9wm0oKhoCuifc+PPCq+hQMTJr5E9XKUQDm00VA==", + "dev": true + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..8df5faaf2 --- /dev/null +++ b/package.json @@ -0,0 +1,79 @@ +{ + "name": "living-dictionaries", + "version": "1.0.0", + "scripts": { + "dev": "svelte-kit dev --host --port 3041", + "build": "svelte-kit build", + "build:prod": "cross-env VITE_project=talking-dictionaries-alpha svelte-kit build", + "preview": "svelte-kit preview --open --host --port 3040", + "lint": "prettier --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .", + "format": "prettier --write --plugin-search-dir=. .", + "validate": "svelte-check --threshold warning --diagnostic-sources js,svelte", + "test": "jest", + "update-locales": "node --loader ts-node/esm scripts/update-locales.ts" + }, + "devDependencies": { + "@sentry/browser": "^6.10.0", + "@sveltejs/adapter-vercel": "^1.0.0-next.27", + "@sveltejs/kit": "^1.0.0-next.156", + "@tailwindcss/forms": "^0.3.3", + "@tailwindcss/typography": "^0.4.1", + "@testing-library/jest-dom": "^5.14.1", + "@testing-library/svelte": "^3.0.3", + "@types/d3-dsv": "^2.0.1", + "@types/jest": "^26.0.24", + "@types/mapbox-gl": "^2.3.0", + "@types/recordrtc": "^5.6.6", + "@typescript-eslint/eslint-plugin": "^4.28.5", + "@typescript-eslint/parser": "^4.28.5", + "algoliasearch": "4.10.4", + "autoprefixer": "^10.3.1", + "ckeditor5-build-classic-with-alignment-underline-smallcaps": "^1.0.0", + "cross-env": "^7.0.3", + "cssnano": "^5.0.7", + "csvtojson": "^2.0.10", + "d3-dsv": "^3.0.1", + "dot-object": "^2.1.4", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.1.0", + "eslint-plugin-svelte3": "^3.2.0", + "firebase": "^9.0.0-beta.8", + "instantsearch.js": "4.28.0", + "jest": "^27.0.6", + "logrocket": "^1.3.0", + "mapbox-gl": "^2.3.0", + "node-fetch": "^2.6.1", + "nprogress": "^0.2.0", + "postcss": "^8.3.6", + "postcss-cli": "^8.3.1", + "prettier": "^2.3.2", + "prettier-plugin-svelte": "^2.3.1", + "recordrtc": "^5.6.2", + "replace-in-file": "^6.2.0", + "simple-git-hooks": "^2.5.1", + "svelte": "^3.42.2", + "svelte-check": "^2.2.5", + "svelte-i18n": "^3.3.9", + "svelte-jester": "^1.7.0", + "svelte-preprocess": "^4.8.0", + "svench": "^0.2.0-29", + "tailwindcss": "^2.2.7", + "tailwindcss-dir": "^4.0.0", + "ts-jest": "^27.0.4", + "ts-node": "^10.1.0", + "tslib": "^2.3.0", + "typescript": "^4.3.5", + "wavesurfer.js": "^5.1.0", + "web-vitals": "^2.1.0" + }, + "type": "module", + "simple-git-hooks": { + "pre-commit": "npx lint-staged" + }, + "lint-staged": { + "*.+(ts|svelte)": "eslint --fix", + "**/*.+(ts|svelte|json)": [ + "prettier --write" + ] + } +} diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 000000000..642869b4e --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,20 @@ +const tailwindcss = require("tailwindcss"); +const autoprefixer = require("autoprefixer"); +const cssnano = require("cssnano"); + +const mode = process.env.NODE_ENV; +const dev = mode === "development"; + +const config = { + plugins: [ + //Some plugins, like postcss-nested, need to run before Tailwind, + tailwindcss(), + //But others, like autoprefixer, need to run after, + !dev && autoprefixer(), + !dev && cssnano({ + preset: ["default", { discardComments: { removeAll: true } }] + }) + ], +}; + +module.exports = config; \ No newline at end of file diff --git a/scripts/App-Translations.csv b/scripts/App-Translations.csv new file mode 100644 index 000000000..50ed39d41 --- /dev/null +++ b/scripts/App-Translations.csv @@ -0,0 +1,201 @@ +"en","Context","page","component","item","key","Spanish","write-in","es","✓","Portuguese","write-in","pt","✓","French","write-in","fr","✓","Hebrew","write-in","he","✓","Arabic","write-in","ar","✓","Hindi","write-in","hi","✓","Bengali","write-in","bn","✓","Oriya","write-in","or","✓","as","✓","Russian","write-in","ru","✓","Mandarin Chinese (simplified)","write-in","zh","✓","Hausa","write-in","ha","✓","Indonesian","write-in","id","✓","Swahili","write-in","sw","✓","Amharic","write-in","am","✓","Vietnamese","write-in","vi","✓","Thai","write-in","th","✓","Khmer","write-in","km","✓","Lao","write-in","lo","✓","Malay","write-in","ms","✓","Filipino","write-in","fil","✓","Zulu","write-in","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"ltr","Text direction","","direction","","direction","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","rtl","TRUE","","","rtl","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","ltr","TRUE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"About Living Dictionaries","","","about","about_LD","about.about_LD","Sobre Diccionarios de Vida","Acerca de Diccionarios Vivos","Acerca de Diccionarios Vivos","TRUE","Sobre Dicionários Vida","Sobre dicionários vivos","Sobre dicionários vivos","TRUE","A propos de Dictionnaires de vie","À propos des dictionnaires vivants","À propos des dictionnaires vivants","TRUE","אודות מילונים חיים","","אודות מילונים חיים","TRUE","حول قواميس المعيشة","نبذة عن القواميس الناطقة","نبذة عن القواميس الناطقة","FALSE","लिविंग शब्दकोश बारे में","लिविंग शब्दकोश के बारे में","लिविंग शब्दकोश के बारे में","TRUE","লিভিং অভিধানের সম্পর্কে","জীবিত অভিধান সম্পর্কে","জীবিত অভিধান সম্পর্কে","FALSE","Living ଅବିଧାନଗୁଡ଼ିକ ବିଷୟରେ","","Living ଅବିଧାନଗୁଡ଼ିକ ବିଷୟରେ","FALSE","","FALSE","О живых словарях","О Живых Словарях","О Живых Словарях","TRUE","关于活字典","","关于活字典","FALSE","Game da Living Dictionaries","","Game da Living Dictionaries","FALSE","Tentang Hidup Kamus","Tentang Kamus Hidup","Tentang Kamus Hidup","TRUE","Kuhusu Hai Kamusi","Kuhusu Kamusi Hai","Kuhusu Kamusi Hai","TRUE","ሕያው መዝገበ ስለ","ስለ ሕያው መዝገበ ቃላት","ስለ ሕያው መዝገበ ቃላት","TRUE","Về Living Từ điển","","Về Living Từ điển","FALSE","เกี่ยวกับการใช้ชีวิตพจนานุกรม","","เกี่ยวกับการใช้ชีวิตพจนานุกรม","FALSE","អំពីវចនានុក្រមការរស់នៅ","","អំពីវចនានុក្រមការរស់នៅ","FALSE","ກ່ຽວກັບດໍາລົງຊີວິດ Dictionaries","","ກ່ຽວກັບດໍາລົງຊີວິດ Dictionaries","FALSE","Mengenai Living Dictionaries","Mengenai Living Dictionaries","Mengenai Living Dictionaries","TRUE","Tungkol sa mga dictionaries ng buhay","","Tungkol sa mga dictionaries ng buhay","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Living Dictionaries are mobile-friendly web tools that support endangered, under-represented and diasporic languages.","","","about","online_tool","about.online_tool","Diccionarios de vida son herramientas web optimizados para móviles que soportan en peligro de extinción, subrepresentados y las lenguas de la diáspora.","Diccionarios Vivos son herramientas digitales móviles que apoyan a las lenguas amenazadas, subrepresentadas y diaspóricas.","Diccionarios Vivos son herramientas digitales móviles que apoyan a las lenguas amenazadas, subrepresentadas y diaspóricas.","TRUE","Dicionários de vida são ferramentas de web móvel-friendly que suportam ameaçadas, sub-representados e línguas da diáspora.","Dicionários vivos são ferramentas web adaptáveis a telemóveis e englobam línguas em perigo de extinção e subrepresentadas.","Dicionários vivos são ferramentas web adaptáveis a telemóveis e englobam línguas em perigo de extinção e subrepresentadas.","TRUE","Dictionnaires vivants sont des outils Web adaptés aux mobiles qui prennent en charge en danger, sous-représentés et les langues diasporiques.","Les dictionnaires vivants sont des outils mobiles en ligne qui soutiennent les langues menacées, sous-représentées et diasporiques.","Les dictionnaires vivants sont des outils mobiles en ligne qui soutiennent les langues menacées, sous-représentées et diasporiques.","TRUE","מילוני חיים הם כלי אינטרנט סלולריים ידידותיים שתומכים בסכנת הכחדה, תת ייצוג ושפות הגלותי.","מילונים חיים הם כלים מקוונים, ידידותיים למחשב ולנייד, עבור שפות בסכנת הכחדה, שפות תת-מיוצגות, ושפות גלותיות.","מילונים חיים הם כלים מקוונים, ידידותיים למחשב ולנייד, עבור שפות בסכנת הכחדה, שפות תת-מיוצגות, ושפות גלותיות.","TRUE","قواميس الحية هي أدوات الإنترنت صديقة للالمتنقلة التي تدعم المهددة بالانقراض، الممثلة تمثيلا ناقصا واللغات الشتات.","إن ليفنغ تانغز هي أداة سحابية معدة وفق أحدث تقنيات الويب في محاولة لنشر المصادر اللغوية لكل لغات العالم المهددة بالانقراض. إن أداة كهذه لديها القدرة على تغيير طريقة تفكيرنا حول اللغات المهددة بالانقراض. فبدلاً من النظر إلى هذه اللغات باعتبارها مهملة، وصعبة التعلم، وعلى وشك الزوال، يمكننا النظر إليها باعتبارها لغات حديثة، متاحة للتعلم، ويسهل رؤيتها وسماعها على شبكة الإنترنت.","إن ليفنغ تانغز هي أداة سحابية معدة وفق أحدث تقنيات الويب في محاولة لنشر المصادر اللغوية لكل لغات العالم المهددة بالانقراض. إن أداة كهذه لديها القدرة على تغيير طريقة تفكيرنا حول اللغات المهددة بالانقراض. فبدلاً من النظر إلى هذه اللغات باعتبارها مهملة، وصعبة التعلم، وعلى وشك الزوال، يمكننا النظر إليها باعتبارها لغات حديثة، متاحة للتعلم، ويسهل رؤيتها وسماعها على شبكة الإنترنت.","FALSE","लिविंग शब्दकोश मोबाइल के अनुकूल वेब उपकरण है कि, खतरे का समर्थन कम प्रतिनिधित्व और प्रवासी भाषाएं हैं।","लिविंग शब्दकोश मोबाइल के अनुकूल वेब साधन है, जो कि लुप्तप्राय, कम प्रतिनिधित्व एवं प्रवासी भाषाओं को प्रोत्साहन देता है ","लिविंग शब्दकोश मोबाइल के अनुकूल वेब साधन है, जो कि लुप्तप्राय, कम प्रतिनिधित्व एवं प्रवासी भाषाओं को प्रोत्साहन देता है ","TRUE","বাস অভিধানের মোবাইল বন্ধুত্বপূর্ণ ওয়েব টুলস যে বিপন্ন সমর্থন অধীনে প্রতিনিধিত্ব এবং diasporic ভাষা।","জীবিত অভিধান হলো মোবাইল বন্ধুত্বপূর্ণ ওয়েব সরঞ্জাম যেটি বিপন্ন, নিম্ন-উপস্থাপিত এবং ডায়াস্পোরিক ভাষা সমর্থন করে ।","জীবিত অভিধান হলো মোবাইল বন্ধুত্বপূর্ণ ওয়েব সরঞ্জাম যেটি বিপন্ন, নিম্ন-উপস্থাপিত এবং ডায়াস্পোরিক ভাষা সমর্থন করে ।","FALSE","Living ଅବିଧାନଗୁଡ଼ିକ ମୋବାଇଲ୍-ବନ୍ଧୁ ୱେବ୍ ଉପକରଣ ତଳେ-ଉପସ୍ଥାପିତ ଏବଂ diasporic ଭାଷା, ଯାହା ସମର୍ଥନ ବିରଳ ଅଟେ।","","Living ଅବିଧାନଗୁଡ଼ିକ ମୋବାଇଲ୍-ବନ୍ଧୁ ୱେବ୍ ଉପକରଣ ତଳେ-ଉପସ୍ଥାପିତ ଏବଂ diasporic ଭାଷା, ଯାହା ସମର୍ଥନ ବିରଳ ଅଟେ।","FALSE","","FALSE","Живые Словари мобильные дружественных веб-инструменты, которые поддерживают исчезающие, недопредставленные и диаспорские языки.","Живые Словари - это совместимые с мобильными устройствами веб-инструменты для поддержки языков, находящихся под угрозой исчезновения, языков с ограниченными сферами употребления, а также языков диаспор.","Живые Словари - это совместимые с мобильными устройствами веб-инструменты для поддержки языков, находящихся под угрозой исчезновения, языков с ограниченными сферами употребления, а также языков диаспор.","TRUE","活字典是移动友好的Web工具支持濒危,代表性不足和流散语言。","","活字典是移动友好的Web工具支持濒危,代表性不足和流散语言。","FALSE","Rayuwa Dictionaries ne mobile-friendly yanar gizo kayan aikin da Support miyagun, a karkashin-wakilta da kuma diasporic harsuna.","","Rayuwa Dictionaries ne mobile-friendly yanar gizo kayan aikin da Support miyagun, a karkashin-wakilta da kuma diasporic harsuna.","FALSE","Hidup Kamus adalah alat web mobile-friendly yang mendukung terancam punah, kurang terwakili dan bahasa diaspora.","Kamus Hidup adalah website yang dirancang agar mudah dioperasikan pada perangkat yang lebih kecil, misalnya seluler, dengan maksud untuk mendukung bahasa-bahasa yang terancam punah, kurang terwakili, dan bahasa-bahasa diaspora.","Kamus Hidup adalah website yang dirancang agar mudah dioperasikan pada perangkat yang lebih kecil, misalnya seluler, dengan maksud untuk mendukung bahasa-bahasa yang terancam punah, kurang terwakili, dan bahasa-bahasa diaspora.","TRUE","Hai Kamusi ni vya mkononi zana mtandao kuwa kuhamasisha hatarini, uwakilishi na lugha diasporic.","Kamusi Hai ni zana za wavuti zinazofaa kutumika kwenye simu ambazo zinasaidia lugha zilizo hatarini kutoweka, zenye uwakilishi duni na za diasporiki.","Kamusi Hai ni zana za wavuti zinazofaa kutumika kwenye simu ambazo zinasaidia lugha zilizo hatarini kutoweka, zenye uwakilishi duni na za diasporiki.","TRUE","መኖር መዝገበ, አደጋ በታች-ይወክላል እና diasporic ቋንቋዎች የሚደግፉ ተንቀሳቃሽ ተስማሚ የድር መሣሪያዎች ናቸው.","","መኖር መዝገበ, አደጋ በታች-ይወክላል እና diasporic ቋንቋዎች የሚደግፉ ተንቀሳቃሽ ተስማሚ የድር መሣሪያዎች ናቸው.","FALSE","Từ điển sống là những công cụ web di động thân thiện với hỗ trợ đang bị đe dọa, theo đại diện và ngôn ngữ tha hương.","","Từ điển sống là những công cụ web di động thân thiện với hỗ trợ đang bị đe dọa, theo đại diện và ngôn ngữ tha hương.","FALSE","พจนานุกรมอาศัยอยู่เป็นเครื่องมือเว็บบนมือถือที่เป็นมิตรที่สนับสนุนอันตรายภายใต้การเป็นตัวแทนของภาษาและ diasporic","","พจนานุกรมอาศัยอยู่เป็นเครื่องมือเว็บบนมือถือที่เป็นมิตรที่สนับสนุนอันตรายภายใต้การเป็นตัวแทนของภาษาและ diasporic","FALSE","វចនានុក្រមដែលកំពុងរស់នៅគឺជាឧបករណ៍បណ្ដាញដែលងាយស្រួលចល័តដែលគាំទ្រការជិតផុតពូជ, មានតំណាងនិងភាសាដើមកំណើត។","","វចនានុក្រមដែលកំពុងរស់នៅគឺជាឧបករណ៍បណ្ដាញដែលងាយស្រួលចល័តដែលគាំទ្រការជិតផុតពូជ, មានតំណាងនិងភាសាដើមកំណើត។","FALSE","Dictionaries ດໍາລົງຊີວິດເຄື່ອງມືເວັບໄຮ້ສາຍເປັນມິດທີ່ຮອງຮັບໃກ້ຈະສູນພັນ, ພາຍໃຕ້ການເປັນຕົວແທນແລະພາສາ diasporic.","","Dictionaries ດໍາລົງຊີວິດເຄື່ອງມືເວັບໄຮ້ສາຍເປັນມິດທີ່ຮອງຮັບໃກ້ຈະສູນພັນ, ພາຍໃຕ້ການເປັນຕົວແທນແລະພາສາ diasporic.","FALSE","Hidup Dictionaries adalah alat web mesra mudah alih yang menyokong terancam, kurang diwakili dan bahasa FASA.","Living Dictionaries merupakan laman web mesra mudah alih yang dilancarkan bagi menyokong bahasa-bahasa terancam, kurang diwakili dan bahasa-bahasa diaspora.","Living Dictionaries merupakan laman web mesra mudah alih yang dilancarkan bagi menyokong bahasa-bahasa terancam, kurang diwakili dan bahasa-bahasa diaspora.","TRUE","Ang mga dictionaries sa pamumuhay ay mga mobile-friendly na mga tool sa web na sumusuporta sa mga endangered, under-represented at diasporic languages.","","Ang mga dictionaries sa pamumuhay ay mga mobile-friendly na mga tool sa web na sumusuporta sa mga endangered, under-represented at diasporic languages.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Led by community activists around the globe, Living Dictionaries are collaborative multimedia projects that help languages survive for generations to come.","","","about","promote_connectivity","about.promote_connectivity","Dirigido por activistas de la comunidad en todo el mundo, Diccionarios de vida son proyectos multimedia de colaboración que sobreviven idiomas de ayuda para las generaciones venideras.","Lanzados por activistas comunitarios de todo el mundo, Diccionarios Vivos son colaboraciones multimedia que ayudan a las lenguas a sobrevivir hasta la próxima generación.","Lanzados por activistas comunitarios de todo el mundo, Diccionarios Vivos son colaboraciones multimedia que ayudan a las lenguas a sobrevivir hasta la próxima generación.","TRUE","Liderados por activistas comunitários em todo o mundo, Vida dicionários são projetos multimídia de colaboração que ajuda línguas sobrevivem para as gerações vindouras.","Liderados por activistas comunitários pelo mundo","Liderados por activistas comunitários pelo mundo","TRUE","Dirigée par des activistes communautaires dans le monde entier, dictionnaires vivants sont des projets multimédia de collaboration que les langues d'aide pour survivre les générations à venir.","Dirigés par des activistes communautaires du monde entier, les dictionnaires vivants sont des collaborations multimédia qui aident les langues à survivre pour des générations à venir.","Dirigés par des activistes communautaires du monde entier, les dictionnaires vivants sont des collaborations multimédia qui aident les langues à survivre pour des générations à venir.","TRUE","בהנהגת פעילי קהילה ברחבי העולם, מילוני חיים הם פרויקטי מולטימדיה שיתופיים בשפות עזרה לשרוד לדורות.","בהנהגתם של פעילים חברתיים מסביב לעולם, מילונים חיים הם פרויקטי מולטימדיה שיתופיים, המסייעים לשפות שונות לשרוד לאורך דורות.","בהנהגתם של פעילים חברתיים מסביב לעולם, מילונים חיים הם פרויקטי מולטימדיה שיתופיים, המסייעים לשפות שונות לשרוד לאורך דורות.","TRUE","بقيادة نشطاء المجتمع في جميع أنحاء العالم، قواميس المعيشة هي مشاريع الوسائط المتعددة التعاونية التي تساعد اللغات البقاء على قيد الحياة للأجيال القادمة.","تسهل القواميس الناطقة التواصل عبر مسافات شاسعة، كما تدعم مجتمع متعلمي اللغة على شبكة الإنترنت الذين يودون تعلم وسماع لغة ما دون الحاجة إلى تواجدهم الفعلي بالقرب من متحدثي اللغة الفصحاء. إنها تتيح الوصول إلى آلاف التسجيلات بضغطة زر. وكل المدخلات في هذه الأداة مسجلة بجودة صوتية عالية لكي يتمكن أفراد المجتمع والمتحدثون الجدد والباحثون الأكاديميون من الاستماع إلى النطق الصحيح بواسطة متحدث فصيح. كما توفر الصور الجذابة معنى أشمل للسياق الثقافي للغة.","تسهل القواميس الناطقة التواصل عبر مسافات شاسعة، كما تدعم مجتمع متعلمي اللغة على شبكة الإنترنت الذين يودون تعلم وسماع لغة ما دون الحاجة إلى تواجدهم الفعلي بالقرب من متحدثي اللغة الفصحاء. إنها تتيح الوصول إلى آلاف التسجيلات بضغطة زر. وكل المدخلات في هذه الأداة مسجلة بجودة صوتية عالية لكي يتمكن أفراد المجتمع والمتحدثون الجدد والباحثون الأكاديميون من الاستماع إلى النطق الصحيح بواسطة متحدث فصيح. كما توفر الصور الجذابة معنى أشمل للسياق الثقافي للغة.","FALSE","विश्व भर में समुदाय के कार्यकर्ताओं के नेतृत्व में, लिविंग शब्दकोश सहयोगी मल्टीमीडिया परियोजनाओं कि मदद भाषाओं आने वाली पीढ़ियों के लिए जीवित रहने के कर रहे हैं।","लिविंग शब्दकोश विश्व भर के समुदाय के कार्यकर्ताओं के नेतृत्व में सहयोगपूर्ण बाहुमाध्यमिक पारियोजना है जो आने वाले पीढ़ियों तक भाषाओं को जीवित रखने में मदद करती है।","लिविंग शब्दकोश विश्व भर के समुदाय के कार्यकर्ताओं के नेतृत्व में सहयोगपूर्ण बाहुमाध्यमिक पारियोजना है जो आने वाले पीढ़ियों तक भाषाओं को जीवित रखने में मदद करती है।","TRUE","প্রায় সারা বিশ্ব সম্প্রদায় কর্মীরা নেতৃত্বে লিভিং অভিধানের সহযোগীতা মাল্টিমিডিয়া প্রকল্পের সাহায্যে ভাষায় প্রজন্মের জন্য বেঁচে থাকতে হয়।","বিশ্বজুড়ে সম্প্রদায়ের নেতাকর্মীদের নেতৃত্বে, লিভিং অভিধান এমন একটি সহযোগিতামূলক মাল্টিমিডিয়া প্রকল্প যা ভাষাগুলিকে আগামী প্রজন্ম ধরে বাঁচিয়ে থাকতে সহায়তা করে।","বিশ্বজুড়ে সম্প্রদায়ের নেতাকর্মীদের নেতৃত্বে, লিভিং অভিধান এমন একটি সহযোগিতামূলক মাল্টিমিডিয়া প্রকল্প যা ভাষাগুলিকে আগামী প্রজন্ম ধরে বাঁচিয়ে থাকতে সহায়তা করে।","FALSE","ବିଶ୍ଵରେ ସମ୍ପ୍ରଦାୟ ସଂଗ୍ରାମୀ ନେତୃତ୍ଵାଧୀନ, Living ଅବିଧାନଗୁଡ଼ିକ ସହଯୋଗୀଭାବରେ ମଲ୍ଟିମେଡ଼ିଆ ପ୍ରକଳ୍ପ ପାଇଁ ପୁରୁଷାନୁକ୍ରମେ ଆସିବା ପାଇଁ ସହାୟତା ଭାଷା ବଞ୍ଚି ଯେ ଅଟେ।","","ବିଶ୍ଵରେ ସମ୍ପ୍ରଦାୟ ସଂଗ୍ରାମୀ ନେତୃତ୍ଵାଧୀନ, Living ଅବିଧାନଗୁଡ଼ିକ ସହଯୋଗୀଭାବରେ ମଲ୍ଟିମେଡ଼ିଆ ପ୍ରକଳ୍ପ ପାଇଁ ପୁରୁଷାନୁକ୍ରମେ ଆସିବା ପାଇଁ ସହାୟତା ଭାଷା ବଞ୍ଚି ଯେ ଅଟେ।","FALSE","","FALSE","Во главе с активистами сообщества по всему миру, Гостиные словари являются совместными мультимедийными проектами, языки помогают выжить в течение нескольких поколений, чтобы прибыть.","Живые Словари представляют собой мультимедийные совместные проекты, возглавляемые общественными активистами из разных уголков планеты, которые ориентированы на сохранение и передачу языков последующим поколениям.","Живые Словари представляют собой мультимедийные совместные проекты, возглавляемые общественными активистами из разных уголков планеты, которые ориентированы на сохранение и передачу языков последующим поколениям.","TRUE","由全球各地的社区活动家的带领下,生活字典和协作多媒体项目是帮助语言存活后代。","","由全球各地的社区活动家的带领下,生活字典和协作多媒体项目是帮助语言存活后代。","FALSE","Jagorancin al'umma gwagwarmaya a duniya, Living Dictionaries ne hadin baki multimedia ayyukan da taimako harsuna tsira ga al'ummomi masu zuwa.","","Jagorancin al'umma gwagwarmaya a duniya, Living Dictionaries ne hadin baki multimedia ayyukan da taimako harsuna tsira ga al'ummomi masu zuwa.","FALSE","Dipimpin oleh aktivis masyarakat di seluruh dunia, Hidup Kamus adalah multimedia proyek kolaboratif yang membantu bahasa bertahan untuk generasi mendatang.","Kamus Hidup yang bertujuan membantu menyelamatkan bahasa-bahasa demi generasi masa depan ini merupakan proyek multimedia yang bersifat kolaboratif, dan proyek ini dipimpin oleh aktifis-aktifis komunitas bahasa dari berbagai belahan dunia.","Kamus Hidup yang bertujuan membantu menyelamatkan bahasa-bahasa demi generasi masa depan ini merupakan proyek multimedia yang bersifat kolaboratif, dan proyek ini dipimpin oleh aktifis-aktifis komunitas bahasa dari berbagai belahan dunia.","TRUE","Wakiongozwa na wanaharakati wa jamii duniani kote, Hai Kamusi ni multimedia shirikishi miradi ambayo msaada lugha kuishi kwa miaka mingi ijayo.","Zikiongozwa na wanaharakati wa jamii kote ulimwenguni, Kamusi Hai ni miradi ya ushirikiano ya media titika ambayo husaidia lugha kuwepo kwa ajili ya vizazi vijavyo.","Zikiongozwa na wanaharakati wa jamii kote ulimwenguni, Kamusi Hai ni miradi ya ushirikiano ya media titika ambayo husaidia lugha kuwepo kwa ajili ya vizazi vijavyo.","TRUE","በዓለም ዙሪያ ማህበረሰብ ተሟጋቾች የሚመሩ, ሊቪንግ መዝገበ ትውልዶች እንዲመጣ እርዳታ ቋንቋዎች እንዲተርፉ መሆኑን የትብብር መልቲሚዲያ ፕሮጀክቶች ናቸው.","","በዓለም ዙሪያ ማህበረሰብ ተሟጋቾች የሚመሩ, ሊቪንግ መዝገበ ትውልዶች እንዲመጣ እርዳታ ቋንቋዎች እንዲተርፉ መሆኑን የትብብር መልቲሚዲያ ፕሮጀክቶች ናቸው.","FALSE","Được dẫn dắt bởi các nhà hoạt động cộng đồng trên khắp thế giới, Living Từ điển là đa phương tiện hợp tác các dự án giúp đỡ ngôn ngữ tồn tại cho thế hệ mai sau.","","Được dẫn dắt bởi các nhà hoạt động cộng đồng trên khắp thế giới, Living Từ điển là đa phương tiện hợp tác các dự án giúp đỡ ngôn ngữ tồn tại cho thế hệ mai sau.","FALSE","นำโดยนักกิจกรรมชุมชนทั่วโลกพจนานุกรม Living โครงการมัลติมีเดียความร่วมมือที่ช่วยเหลือภาษาอยู่รอดสำหรับรุ่นมา","","นำโดยนักกิจกรรมชุมชนทั่วโลกพจนานุกรม Living โครงการมัลติมีเดียความร่วมมือที่ช่วยเหลือภาษาอยู่รอดสำหรับรุ่นมา","FALSE","ដែលដឹកនាំដោយសកម្មជនសហគមន៍នៅជុំវិញពិភពលោកការរស់នៅវចនានុក្រមគឺជាគម្រោងពហុរួមគ្នាមួយដែលរស់បានជំនួយភាសាជំនាន់ទៅមក។","","ដែលដឹកនាំដោយសកម្មជនសហគមន៍នៅជុំវិញពិភពលោកការរស់នៅវចនានុក្រមគឺជាគម្រោងពហុរួមគ្នាមួយដែលរស់បានជំនួយភាសាជំនាន់ទៅមក។","FALSE","ນໍາພາໂດຍພວກນັກເຄື່ອນໄຫວຊຸມຊົນໃນທົ່ວໂລກ, ດໍາລົງຊີວິດ Dictionaries ແມ່ນບັນດາໂຄງການມັນຕິມີເດຍຮ່ວມທີ່ຊ່ວຍເຫຼືອພາສາຄວາມຢູ່ລອດສໍາລັບຄົນລຸ້ນທີ່ຈະມາ.","","ນໍາພາໂດຍພວກນັກເຄື່ອນໄຫວຊຸມຊົນໃນທົ່ວໂລກ, ດໍາລົງຊີວິດ Dictionaries ແມ່ນບັນດາໂຄງການມັນຕິມີເດຍຮ່ວມທີ່ຊ່ວຍເຫຼືອພາສາຄວາມຢູ່ລອດສໍາລັບຄົນລຸ້ນທີ່ຈະມາ.","FALSE","Diketuai oleh aktivis masyarakat di seluruh dunia, Living Dictionaries adalah multimedia kerjasama projek-projek yang membantu bahasa terus hidup untuk generasi akan datang.","Diketuai oleh aktivis masyarakat dari seluruh dunia, Living Dictionaries ialah sebuah projek multimedia kolaboratif yang bertujuan untuk memulihara bahasa-bahasa demi generasi akan datang.","Diketuai oleh aktivis masyarakat dari seluruh dunia, Living Dictionaries ialah sebuah projek multimedia kolaboratif yang bertujuan untuk memulihara bahasa-bahasa demi generasi akan datang.","TRUE","Pinangunahan ng mga aktibistang komunidad sa buong mundo, ang mga dictionaries ng pamumuhay ay mga collaborative multimedia project na tumutulong sa mga wika na nakataguyod para sa mga henerasyon na darating.","","Pinangunahan ng mga aktibistang komunidad sa buong mundo, ang mga dictionaries ng pamumuhay ay mga collaborative multimedia project na tumutulong sa mga wika na nakataguyod para sa mga henerasyon na darating.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Originally known as “Talking Dictionary” software, our platform was first launched in 2006 by Living Tongues linguists Gregory D. S. Anderson and K. David Harrison. In 2020, Living Tongues Institute updated the name of the tool to Living Dictionaries.","","","about","td_beginnings","about.td_beginnings","Originalmente conocido como software de “Talking Dictionary”, nuestra plataforma se puso en marcha por primera vez en 2006 por Living Tongues lingüistas Gregory D. S. Anderson y K. David Harrison. En 2020, Living Tongues Institute actualiza el nombre de la herramienta de Diccionarios de vida.","Conocido originalmente como el software ""Talking Dictionary"" (diccionario hablado), nuestra plataforma fue lanzada por primera vez en 2006 por los lingüistas del Instituto Living Tongues: Gregory D. S. Anderson y K. David Harrison. En 2020, el Instituto Living Tongues actualizó el nombre de la herramienta a Diccionarios Vivos.","Conocido originalmente como el software ""Talking Dictionary"" (diccionario hablado), nuestra plataforma fue lanzada por primera vez en 2006 por los lingüistas del Instituto Living Tongues: Gregory D. S. Anderson y K. David Harrison. En 2020, el Instituto Living Tongues actualizó el nombre de la herramienta a Diccionarios Vivos.","TRUE","Originalmente conhecido como software “Talking Dictionary”, a nossa plataforma foi lançada pela primeira vez em 2006 por Living Tongues lingüistas Gregory D. S. Anderson e K. David Harrison. Em 2020, Vida Tongues Institute atualizou o nome da ferramenta para Dicionários Vida.","A nossa plataforma originalmente conhecida pelo software ""Talking Dictionary"" foi lançada pela primeira vez em 2006 por Gregory D. S. Anderson e K. David Harrison, linguistas do Living Tonges. No ano de 2020, o Instituto Living Tonges actualizou o nome da ferramenta para ""Dicionários vivos""","A nossa plataforma originalmente conhecida pelo software ""Talking Dictionary"" foi lançada pela primeira vez em 2006 por Gregory D. S. Anderson e K. David Harrison, linguistas do Living Tonges. No ano de 2020, o Instituto Living Tonges actualizou o nome da ferramenta para ""Dicionários vivos""","TRUE","Initialement connu sous le logiciel « Talking Dictionary », notre plate-forme a été lancée en 2006 par les linguistes Living Tongues Gregory D. S. Anderson et K. David Harrison. En 2020, l'Institut Living Tongues mis à jour le nom de l'outil Dictionnaires de vie.","Connue à l'origine sous le nom de logiciel ""Talking Dictionary"" (dictionnaire parlant), notre plateforme a été lancée en 2006 par les linguistes de l’Institut Living Tongues, Gregory D. S. Anderson et K. David Harrison. En 2020, l'Institut Living Tongues a rebaptisé l'outil pour qu’il soit nommé les dictionnaires vivants.","Connue à l'origine sous le nom de logiciel ""Talking Dictionary"" (dictionnaire parlant), notre plateforme a été lancée en 2006 par les linguistes de l’Institut Living Tongues, Gregory D. S. Anderson et K. David Harrison. En 2020, l'Institut Living Tongues a rebaptisé l'outil pour qu’il soit nommé les dictionnaires vivants.","TRUE","במקור המכונה ""מילון Talking"" תוכנה, הפלטפורמה שלנו הושקה לראשונה בשנת 2006 על ידי בלשנים חיים לשונות גרגורי ד ס אנדרסון ו ק דוד הריסון. בשנת 2020, מכון לשונות חיים מעודכן השם של הכלי כדי לחיות מילונים.","מילונים חיים הם דור ההמשך של התוכנה ״מילון מדבר״ (“Talking Dictionary”), שהושק בשנת 2006 על ידי הבלשנים גרגורי ד.ס. אנדרסון וק. דייוויד הריסון, ממכון לשונות חיים (Living Tongues Institute). בשנת 2020, מכון לשונות חיים עדכן את השם של הממשק למילונים חיים.","מילונים חיים הם דור ההמשך של התוכנה ״מילון מדבר״ (“Talking Dictionary”), שהושק בשנת 2006 על ידי הבלשנים גרגורי ד.ס. אנדרסון וק. דייוויד הריסון, ממכון לשונות חיים (Living Tongues Institute). בשנת 2020, מכון לשונות חיים עדכן את השם של הממשק למילונים חיים.","TRUE","الأصل المعروف باسم ""قاموس الكلام"" البرمجيات، تم إطلاق منصة لدينا لأول مرة في عام 2006 من قبل المعيشة الألسنة اللغويين غريغوري D. S. أندرسون وK. ديفيد هاريسون. في عام 2020، معهد اللغات الحية تحديث اسم الأداة إلى قواميس المعيشة.","قاد اللغويون في معهد ليفنغ تانغز للغات المهددة بالانقراض، د. غريغوري آندرسن ود. ديفيد هاريسون برنامج القواميس الناطقة عام 2006م كأداة رقمية رائعة تساعد في حفظ وتعلم كلمات وعبارات من لغات مهددة بالانقراض. والآن، في صيغة متوافقة مع الهواتف النقالة، مع خاصية العمل دون الاتصال بالانترنت، ستصل القواميس الناطقة لجماهير جديدة وتخدم المزيد من المجتمعات اللغوية.","قاد اللغويون في معهد ليفنغ تانغز للغات المهددة بالانقراض، د. غريغوري آندرسن ود. ديفيد هاريسون برنامج القواميس الناطقة عام 2006م كأداة رقمية رائعة تساعد في حفظ وتعلم كلمات وعبارات من لغات مهددة بالانقراض. والآن، في صيغة متوافقة مع الهواتف النقالة، مع خاصية العمل دون الاتصال بالانترنت، ستصل القواميس الناطقة لجماهير جديدة وتخدم المزيد من المجتمعات اللغوية.","FALSE","मूल रूप से ""के रूप में बात शब्दकोश"" सॉफ्टवेयर जाना जाता है, हमारे मंच पहले लिविंग जीभ भाषाविदों ग्रेगरी डी एस एंडरसन और लालकृष्ण डेविड हैरिसन द्वारा 2006 में शुरू किया गया था। 2020 में, लिविंग जीभ संस्थान के रहने शब्दकोश करने के लिए उपकरण के नाम पर अपडेट किया गया।","पहले इसे टॉकिंग डिक्शनरी के नाम से जाना जाता था जिसे २००६ में लिविंग टंग्स के भाषा विद ग्रेगोरी एंडरसन और डेविड हैरीसन ने पर्दापर्ण किया था। लिविंग टंग्स इंस्टिट्यूट ने २०२० में इसका नाम बदलकर लिविंग शब्दकोश रखा गया।","पहले इसे टॉकिंग डिक्शनरी के नाम से जाना जाता था जिसे २००६ में लिविंग टंग्स के भाषा विद ग्रेगोरी एंडरसन और डेविड हैरीसन ने पर्दापर्ण किया था। लिविंग टंग्स इंस्टिट्यूट ने २०२० में इसका नाम बदलकर लिविंग शब्दकोश रखा गया।","TRUE","আদতে ""টকিং অভিধান"" সফ্টওয়্যার পরিচিত, আমাদের প্ল্যাটফর্ম প্রথম লিভিং মুখের অনুবাদকদের গ্রেগরি ডি এস অ্যান্ডারসন ও কে ডেভিড হ্যারিসন 2006 সালে শুরু হয়। 2020 সালে, লিভিং মুখের ইনস্টিটিউট লিভিং অভিধানের করার টুল নাম আপডেট করা হয়েছে।","মূলত ""টকিং ডিকশনারি"" সফ্টওয়্যার হিসাবে পরিচিত, আমাদের প্ল্যাটফর্মটি সর্বপ্রথম 2006 সালে লিভিং টঙ ভাষাবিদ গ্রেগরি ডি. এস. এন্ডারসন এবং কে. ডেভিড হ্যারিসনের দ্বারা শুরু হয়েছিল।","মূলত ""টকিং ডিকশনারি"" সফ্টওয়্যার হিসাবে পরিচিত, আমাদের প্ল্যাটফর্মটি সর্বপ্রথম 2006 সালে লিভিং টঙ ভাষাবিদ গ্রেগরি ডি. এস. এন্ডারসন এবং কে. ডেভিড হ্যারিসনের দ্বারা শুরু হয়েছিল।","FALSE","ମୂଳତଃ ଭାବରେ ""କଥାବାର୍ତ୍ତା Dictionary"" ସଫ୍ଟୱେୟାର ପରିଚିତ, ଆମର ପ୍ଲାଟଫର୍ମ ପ୍ରଥମେ Living ଭାଷା linguists Gregory D. S. Anderson ଏବଂ K. ଦାଉଦ Harrison ଦ୍ୱାରା 2006 ରେ ଉନ୍ମୋଚିତ ହୋଇଥିଲା। 2020 ରେ, Living ଭାଷା ପ୍ରତିଷ୍ଠାନ Living ଅବିଧାନଗୁଡ଼ିକ କୁ ଉପକରଣ ନାମ ଅଦ୍ୟତନ।","","ମୂଳତଃ ଭାବରେ ""କଥାବାର୍ତ୍ତା Dictionary"" ସଫ୍ଟୱେୟାର ପରିଚିତ, ଆମର ପ୍ଲାଟଫର୍ମ ପ୍ରଥମେ Living ଭାଷା linguists Gregory D. S. Anderson ଏବଂ K. ଦାଉଦ Harrison ଦ୍ୱାରା 2006 ରେ ଉନ୍ମୋଚିତ ହୋଇଥିଲା। 2020 ରେ, Living ଭାଷା ପ୍ରତିଷ୍ଠାନ Living ଅବିଧାନଗୁଡ଼ିକ କୁ ଉପକରଣ ନାମ ଅଦ୍ୟତନ।","FALSE","","FALSE","Первоначально известный как программное обеспечение «Talking Dictionary», наша платформа была впервые запущена в 2006 году жизни язычки лингвисты Грегори Д. С. Андерсон и К. Дэвид Харрисон. В 2020 году, Living Tongues Институт обновил название инструмента в живых словарях.","Первоначально известная как ""Talking Dictionary"" (""Говорящий Словарь""), наша платформа была впервые запущена лингвистами общества Living Tongues Грегори Д. С. Андерсоном и К. Дэвидом Харрисоном в 2006 году. В 2020 году институт Living Tongues изменил название платформы на ""Living Dictionaries"" (""Живые Словари"").","Первоначально известная как ""Talking Dictionary"" (""Говорящий Словарь""), наша платформа была впервые запущена лингвистами общества Living Tongues Грегори Д. С. Андерсоном и К. Дэвидом Харрисоном в 2006 году. В 2020 году институт Living Tongues изменил название платформы на ""Living Dictionaries"" (""Живые Словари"").","TRUE","最初被称为“会说话的词典”软件,我们的平台最早是在2006年由居住方言学家格雷戈里D. S. Anderson和K.大卫·哈里森推出。在2020年,生活方言研究所更新工具,生活字典的名称。","","最初被称为“会说话的词典”软件,我们的平台最早是在2006年由居住方言学家格雷戈里D. S. Anderson和K.大卫·哈里森推出。在2020年,生活方言研究所更新工具,生活字典的名称。","FALSE","Asali da aka sani da ""Talking Dictionary"" software, mu dandali aka farko kaddamar a 2006 ta Living Harsuna masana ilimin harsuna Gregory D. S. Anderson da kuma K. David Harrison. A shekarar 2020, Living Harsuna Cibiyar sabunta sunan da kayan aiki don Living Dictionaries.","","Asali da aka sani da ""Talking Dictionary"" software, mu dandali aka farko kaddamar a 2006 ta Living Harsuna masana ilimin harsuna Gregory D. S. Anderson da kuma K. David Harrison. A shekarar 2020, Living Harsuna Cibiyar sabunta sunan da kayan aiki don Living Dictionaries.","FALSE","Awalnya dikenal sebagai “Talking Dictionary” software, platform kami pertama kali diluncurkan pada tahun 2006 oleh Tongues ahli bahasa Living Gregory D. S. Anderson dan K. David Harrison. Pada tahun 2020, Living Tongues Institute diperbarui nama alat untuk Hidup Kamus.","Awalnya perangkat lunak ini dikenal sebagai ""Kamus Bicara"", platform yang diluncurkan pertama kali pada tahun 2006 oleh ahli bahasa pada Institut Living Tongue yakni Gregory D.S. Anderson dan K. David Harrison. Pada tahun 2020, Institut Living Tongue memperbaharui nama dari perangkat lunak tersebut menjadi Kamus Hidup.","Awalnya perangkat lunak ini dikenal sebagai ""Kamus Bicara"", platform yang diluncurkan pertama kali pada tahun 2006 oleh ahli bahasa pada Institut Living Tongue yakni Gregory D.S. Anderson dan K. David Harrison. Pada tahun 2020, Institut Living Tongue memperbaharui nama dari perangkat lunak tersebut menjadi Kamus Hidup.","TRUE","Awali inajulikana kama ""Talking Dictionary"" programu, jukwaa letu ilizinduliwa mara ya kwanza mwaka 2006 na Living Tongues wataalamu wa lugha Gregory D. S. Anderson na K. David Harrison. Katika mwaka 2020, Hai Lugha Institute updated jina la chombo cha Living Dictionaries.","Hapo awali ilijulikana kama programu ya “Talking Dictionary”, jukwaa letu lilizinduliwa kwa mara ya kwanza mnamo 2006 na wanaisimu wa Living Tongues Gregory D. S. Anderson na K. David Harrison. Mnamo mwaka wa 2020, Taasisi ya Living Tongues ilisasisha jina la programu kuwa Kamusi Hai.","Hapo awali ilijulikana kama programu ya “Talking Dictionary”, jukwaa letu lilizinduliwa kwa mara ya kwanza mnamo 2006 na wanaisimu wa Living Tongues Gregory D. S. Anderson na K. David Harrison. Mnamo mwaka wa 2020, Taasisi ya Living Tongues ilisasisha jina la programu kuwa Kamusi Hai.","TRUE","በመጀመሪያ ""Talking መዝገበ ቃላት"" ሶፍትዌር በመባል የሚታወቀው, የእኛ መድረክ ለመጀመሪያ ሊቪንግ የቋንቋ ግሪጎሪ ዲ ኤስ አንደርሰን እና ኬ ዴቪድ ሃሪሰን በ 2006 ይፋ ነበር. በ 2020 ውስጥ, ሊቪንግ ተቋም ሊቪንግ መዝገበ ወደ መሣሪያ ስም ዘምኗል.","","በመጀመሪያ ""Talking መዝገበ ቃላት"" ሶፍትዌር በመባል የሚታወቀው, የእኛ መድረክ ለመጀመሪያ ሊቪንግ የቋንቋ ግሪጎሪ ዲ ኤስ አንደርሰን እና ኬ ዴቪድ ሃሪሰን በ 2006 ይፋ ነበር. በ 2020 ውስጥ, ሊቪንግ ተቋም ሊቪንግ መዝገበ ወደ መሣሪያ ስም ዘምኗል.","FALSE","Nguyên gọi là “Talking điển” phần mềm, nền tảng của chúng tôi lần đầu tiên được đưa ra vào năm 2006 bởi nhà ngôn ngữ học Lưỡi Living Gregory D. S. Anderson và K. David Harrison. Trong năm 2020, Living Lưỡi Viện cập nhật tên của công cụ để Living Từ điển.","","Nguyên gọi là “Talking điển” phần mềm, nền tảng của chúng tôi lần đầu tiên được đưa ra vào năm 2006 bởi nhà ngôn ngữ học Lưỡi Living Gregory D. S. Anderson và K. David Harrison. Trong năm 2020, Living Lưỡi Viện cập nhật tên của công cụ để Living Từ điển.","FALSE","แต่เดิมเรียกว่าซอฟต์แวร์“พจนานุกรม” แพลตฟอร์มของเราได้รับการเปิดตัวครั้งแรกในปี 2006 โดยการใช้ชีวิตลิ้นนักภาษาศาสตร์เกรกอรีดีเอสแอนเดอเคเดวิดแฮร์ริสัน ในปี 2020, การใช้ชีวิตลิ้นสถาบันการปรับปรุงชื่อของเครื่องมือที่จะใช้ชีวิตพจนานุกรม","","แต่เดิมเรียกว่าซอฟต์แวร์“พจนานุกรม” แพลตฟอร์มของเราได้รับการเปิดตัวครั้งแรกในปี 2006 โดยการใช้ชีวิตลิ้นนักภาษาศาสตร์เกรกอรีดีเอสแอนเดอเคเดวิดแฮร์ริสัน ในปี 2020, การใช้ชีวิตลิ้นสถาบันการปรับปรุงชื่อของเครื่องมือที่จะใช้ชีวิตพจนานุกรม","FALSE","ពីមុនគេស្គាល់ថាកម្មវិធី ""វចនានុក្រមពិភាក្សា"" វេទិការបស់យើងត្រូវបានបង្កើតឡើងជាលើកដំបូងនៅឆ្នាំ 2006 ដោយលោក Gregory ការរស់នៅអណ្តាតភាសាវិទូនិងឃម៉ាសអេសឃេលោក David Anderson Harrison ។ ក្នុងឆ្នាំ 2020 វិទ្យាស្ថានភាសាការរស់នៅធ្វើឱ្យទាន់សម័យឈ្មោះរបស់ឧបករណ៍ដើម្បីវចនានុក្រមការរស់នៅនោះ។","","ពីមុនគេស្គាល់ថាកម្មវិធី ""វចនានុក្រមពិភាក្សា"" វេទិការបស់យើងត្រូវបានបង្កើតឡើងជាលើកដំបូងនៅឆ្នាំ 2006 ដោយលោក Gregory ការរស់នៅអណ្តាតភាសាវិទូនិងឃម៉ាសអេសឃេលោក David Anderson Harrison ។ ក្នុងឆ្នាំ 2020 វិទ្យាស្ថានភាសាការរស់នៅធ្វើឱ្យទាន់សម័យឈ្មោះរបស់ឧបករណ៍ដើម្បីវចនានុក្រមការរស់នៅនោះ។","FALSE","ຕົ້ນກໍາເນີດຮູ້ຈັກເປັນຊອຟແວ ""ເວົ້າ Dictionary"", ເວທີເວັບໄດ້ເປີດທໍາອິດໃນປີ 2006 ໂດຍດໍາລົງຊີວິດພາສາພາສາ Gregory D. S. ແອນເດີສັນແລະ K. David Harrison. ໃນປີ 2020, ດໍາລົງຊີວິດພາສາສະຖາບັນການປັບປຸງຊື່ຂອງເຄື່ອງມືໃນການດໍາລົງຊີວິດ Dictionaries ໄດ້.","","ຕົ້ນກໍາເນີດຮູ້ຈັກເປັນຊອຟແວ ""ເວົ້າ Dictionary"", ເວທີເວັບໄດ້ເປີດທໍາອິດໃນປີ 2006 ໂດຍດໍາລົງຊີວິດພາສາພາສາ Gregory D. S. ແອນເດີສັນແລະ K. David Harrison. ໃນປີ 2020, ດໍາລົງຊີວິດພາສາສະຖາບັນການປັບປຸງຊື່ຂອງເຄື່ອງມືໃນການດໍາລົງຊີວິດ Dictionaries ໄດ້.","FALSE","Asalnya dikenali sebagai ""Talking Dictionary"" perisian, platform kami pertama kali dilancarkan pada tahun 2006 oleh Living Tongues ahli bahasa Gregory D. S. Anderson dan K. David Harrison. Pada tahun 2020, Living Tongues Institut dikemaskini nama alat untuk Living Dictionaries.","Pada mulanya dikenali sebagai perisian ""Talking Dictionary"", platform kami dilancarkan buat pertama kalinya pada tahun 2006 oleh para ahli bahasa Living Tongues Gregory D. S. Anderson dan K. David Harrison. Pada tahun 2020, namanya dikemaskinikan oleh Institut Living Tongues kepada Living Dictionaries.","Pada mulanya dikenali sebagai perisian ""Talking Dictionary"", platform kami dilancarkan buat pertama kalinya pada tahun 2006 oleh para ahli bahasa Living Tongues Gregory D. S. Anderson dan K. David Harrison. Pada tahun 2020, namanya dikemaskinikan oleh Institut Living Tongues kepada Living Dictionaries.","TRUE","Orihinal na kilala bilang ""Talking Dictionary"" software, ang aming platform ay unang inilunsad noong 2006 sa pamamagitan ng buhay na wika Linguists Gregory D. S. Anderson at K. David Harrison. Noong 2020, na-update ng Buhay na Tongues Institute ang pangalan ng tool sa mga living dictionaries.","","Orihinal na kilala bilang ""Talking Dictionary"" software, ang aming platform ay unang inilunsad noong 2006 sa pamamagitan ng buhay na wika Linguists Gregory D. S. Anderson at K. David Harrison. Noong 2020, na-update ng Buhay na Tongues Institute ang pangalan ng tool sa mga living dictionaries.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Current Dictionary Features","","","about","current_features","about.current_features","Características diccionario actual","Herramientas actuales del diccionario","Herramientas actuales del diccionario","TRUE","Dicionário atual Características","Características Actuais do Dicionário","Características Actuais do Dicionário","TRUE","Courant Dictionnaire Caractéristiques","Caractéristiques des dictionnaires","Caractéristiques des dictionnaires","TRUE","התכונות הקיימות מילון","אפשרויות קיימות במילון","אפשרויות קיימות במילון","TRUE","قاموس تيار ميزات","خصائص القاموس الحالية","خصائص القاموس الحالية","FALSE","वर्तमान शब्दकोश सुविधाएँ","मौजूदा शब्दकोश की विशेषताएं","मौजूदा शब्दकोश की विशेषताएं","TRUE","বর্তমান অভিধানের বৈশিষ্ট্য","","বর্তমান অভিধানের বৈশিষ্ট্য","FALSE","ସମ୍ପ୍ରତି Dictionary ବିଶେଷତାଗୁଡ଼ିକ","","ସମ୍ପ୍ରତି Dictionary ବିଶେଷତାଗୁଡ଼ିକ","FALSE","","FALSE","Текущий словарь Особенности","Текущие особенности Словаря","Текущие особенности Словаря","TRUE","当前词典功能","","当前词典功能","FALSE","Yanzu Dictionary Features","","Yanzu Dictionary Features","FALSE","Saat Kamus Fitur","Fitur Kamus Terbaru","Fitur Kamus Terbaru","TRUE","Sasa Dictionary Features","Vipengele vya Kamusi ya sasa","Vipengele vya Kamusi ya sasa","TRUE","የአሁኑን መዝገበ ቃላት ባህሪያት","የአሁኑን መዝገበ ቃላት ባህሪያት","የአሁኑን መዝገበ ቃላት ባህሪያት","TRUE","Từ điển hiện tại tính năng","","Từ điển hiện tại tính năng","FALSE","พจนานุกรมปัจจุบันคุณสมบัติ","","พจนานุกรมปัจจุบันคุณสมบัติ","FALSE","លក្ខណៈពិសេសវចនានុក្រមបច្ចុប្បន្ន","","លក្ខណៈពិសេសវចនានុក្រមបច្ចុប្បន្ន","FALSE","Dictionary ປັດຈຸບັນຄຸນນະສົມບັດ","","Dictionary ປັດຈຸບັນຄຸນນະສົມບັດ","FALSE","Kamus semasa Ciri-ciri","Ciri-ciri Kamus Kini","Ciri-ciri Kamus Kini","TRUE","Mga tampok ng kasalukuyang diksyunaryo","","Mga tampok ng kasalukuyang diksyunaryo","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Manage Dictionary: View & Edit Entries in Real-Time","","","about","manage_entries","about.manage_entries","Manejo de diccionario: Ver y editar el contenido en tiempo real","Gestión del diccionario: ver y editar entradas en tiempo real","Gestión del diccionario: ver y editar entradas en tiempo real","TRUE","Gerenciar dicionário: Ver e editar entradas em tempo real","Gerir o Dicionário: ver e editar entradas em tempo real","Gerir o Dicionário: ver e editar entradas em tempo real","TRUE","Gérer Dictionnaire: Afficher et modifier les entrées en temps réel","Gérer le dictionnaire : Visualiser et modifier les entrées en temps réel","Gérer le dictionnaire : Visualiser et modifier les entrées en temps réel","TRUE","ניהול מילון: צפה וערוך ערכי ב'זמן אמת","ניהול מילון: צפייה ועריכת ערכים בזמן אמת","ניהול מילון: צפייה ועריכת ערכים בזמן אמת","TRUE","إدارة القاموس: عرض وتحرير مقالات في الوقت الحقيقي","ضبط القاموس: عرض وتحرير المدخلات في الوقت الحقيقي","ضبط القاموس: عرض وتحرير المدخلات في الوقت الحقيقي","FALSE","प्रबंधित शब्दकोश: वास्तविक समय में देखें और प्रविष्टियों को संपादित","शब्दकोश का संचालन: वास्तविक समय में प्रवष्टियों का अवलोकन और संपादन","शब्दकोश का संचालन: वास्तविक समय में प्रवष्टियों का अवलोकन और संपादन","TRUE","পরিচালনা অভিধান: রিয়েল-টাইমে দেখুন & এন্ট্রি সম্পাদনা","","পরিচালনা অভিধান: রিয়েল-টাইমে দেখুন & এন্ট্রি সম্পাদনা","FALSE","ପ୍ରକୃତ-ସମୟ ରେ ଦର୍ଶନ & ସମ୍ପାଦନ ଭରଣଗୁଡ଼ିକର: Dictionary ପରିଚାଳନା","","ପ୍ରକୃତ-ସମୟ ରେ ଦର୍ଶନ & ସମ୍ପାଦନ ଭରଣଗୁଡ଼ିକର: Dictionary ପରିଚାଳନା","FALSE","","FALSE","Управление словарь: View & редактировать записи в режиме реального времени","Управление словарём: Просмотр и редактирование словарных статей в режиме реального времени","Управление словарём: Просмотр и редактирование словарных статей в режиме реального времени","TRUE","管理词典:查看和编辑的条目在实时","","管理词典:查看和编辑的条目在实时","FALSE","Sarrafa Dictionary: View & Edit Entries a Real-Time","","Sarrafa Dictionary: View & Edit Entries a Real-Time","FALSE","Mengelola kamus: View & Edit Entri di Real-Time","Mengelola Kamus: Lihat & Sunting Entri Secara Langsung","Mengelola Kamus: Lihat & Sunting Entri Secara Langsung","TRUE","Kusimamia Kamusi: View & Hariri Entries katika Sululu","Thibiti Kamusi: Tazama na Hariri Maingizo katika Muda-Halisi","Thibiti Kamusi: Tazama na Hariri Maingizo katika Muda-Halisi","TRUE","ሪል-ታይም ውስጥ ይመልከቱ & አርትዕ ግቤቶችን: መዝገበ ያቀናብሩ","","ሪል-ታይም ውስጥ ይመልከቱ & አርትዕ ግቤቶችን: መዝገበ ያቀናብሩ","FALSE","Quản lý từ điển: Xem & Sửa đổi mục trong thời gian thực","","Quản lý từ điển: Xem & Sửa đổi mục trong thời gian thực","FALSE","จัดการพจนานุกรม: ดูและแก้ไขรายการในแบบ Real-Time","","จัดการพจนานุกรม: ดูและแก้ไขรายการในแบบ Real-Time","FALSE","គ្រប់គ្រងវចនានុក្រម: មើលនិងកែសម្រួលធាតុនៅអចលនទ្រព្យម៉ោង","","គ្រប់គ្រងវចនានុក្រម: មើលនិងកែសម្រួលធាតុនៅអចលនទ្រព្យម៉ោង","FALSE","ການຄຸ້ມຄອງຈະນານຸກົມ: ເບິ່ງແລະແກ້ໄຂການອອກສຽງໃນທີ່ແທ້ຈິງທີ່ໃຊ້ເວລາ","","ການຄຸ້ມຄອງຈະນານຸກົມ: ເບິ່ງແລະແກ້ໄຂການອອກສຽງໃນທີ່ແທ້ຈິງທີ່ໃຊ້ເວລາ","FALSE","Urus Kamus: Lihat & Edit Penyertaan dalam Masa Nyata","Urus Kamus: Lihat & Edit Entri Secara Langsung","Urus Kamus: Lihat & Edit Entri Secara Langsung","TRUE","Pamahalaan ang Diksyunaryo: Tingnan at I-edit ang mga entry sa real-time","","Pamahalaan ang Diksyunaryo: Tingnan at I-edit ang mga entry sa real-time","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Record & Playback Audio","","","about","record_playback_audio","about.record_playback_audio","Grabación y reproducción de audio","Grabar y reproducir audio","Grabar y reproducir audio","TRUE","Record & reprodução de áudio","Gravação e Reprodução de áudio","Gravação e Reprodução de áudio","TRUE","Enregistrement et lecture audio","Enregistrement et lecture audio","Enregistrement et lecture audio","TRUE","אודיו שיא & פלייבק","הקלטה והאזנה של קטעי שמע (אודיו)","הקלטה והאזנה של קטעי שמע (אודיו)","TRUE","سجل وقراءة الصوت","تسجيل مقاطع صوتية والاستماع إليها","تسجيل مقاطع صوتية والاستماع إليها","FALSE","रिकॉर्ड और प्लेबैक ऑडियो","ऑडियो को रिकॉर्ड करें और सुनें","ऑडियो को रिकॉर्ड करें और सुनें","TRUE","রেকর্ড & প্লেব্যাক অডিও","","রেকর্ড & প্লেব্যাক অডিও","FALSE","ରେକର୍ଡ & ପ୍ଲେବେକ୍ ଅଡିଓ","","ରେକର୍ଡ & ପ୍ଲେବେକ୍ ଅଡିଓ","FALSE","","FALSE","Запись и воспроизведение звука","Запись и воспроизведение аудио","Запись и воспроизведение аудио","TRUE","记录和回放音频","","记录和回放音频","FALSE","Record & sake kunnawa Audio","","Record & sake kunnawa Audio","FALSE","Rekam & Playback Audio","Rekam & Putar Ulang Audio","Rekam & Putar Ulang Audio","TRUE","Rekodi & Playback Audio","Rekodi & Uchezaji Sauti","Rekodi & Uchezaji Sauti","TRUE","ሪኮርድ & የመጫወት ኦዲዮ","","ሪኮርድ & የመጫወት ኦዲዮ","FALSE","Ghi & Playback âm thanh","","Ghi & Playback âm thanh","FALSE","บันทึกและเล่นเสียง","","บันทึกและเล่นเสียง","FALSE","កំណត់ត្រាការចាក់សារថ្មីអូឌីយ៉ូ &","","កំណត់ត្រាការចាក់សារថ្មីអូឌីយ៉ូ &","FALSE","ບັນທຶກແລະການຫຼິ້ນສຽງ","","ບັນທຶກແລະການຫຼິ້ນສຽງ","FALSE","Audio Record & Main balik","Rakam & Main Semula Audio","Rakam & Main Semula Audio","TRUE","Record & Playback Audio.","","Record & Playback Audio.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Photo Upload","","","about","photo_upload","about.photo_upload","fotos Cargar","Subir fotos","Subir fotos","TRUE","photo upload","Carregar a foto","Carregar a foto","TRUE","photos","Téléchargement de photos","Téléchargement de photos","TRUE","העלה תמונה","העלאת תמונה","העלאת תמונה","TRUE","رفع صورة","رفع صورة","رفع صورة","FALSE","फोटो अपलोड करें","छायाचित्र (फोटो) अपलोड करें","छायाचित्र (फोटो) अपलोड करें","TRUE","ছবি আপলোড","","ছবি আপলোড","FALSE","ଫଟୋ ଅପଲୋଡ୍","","ଫଟୋ ଅପଲୋଡ୍","FALSE","","FALSE","Фото Загрузить","Загрузка фотографий","Загрузка фотографий","TRUE","照片上传","","照片上传","FALSE","Photo Upload","","Photo Upload","FALSE","foto Upload","Unggah Foto","Unggah Foto","TRUE","Picha Upload","Pakia picha","Pakia picha","TRUE","የፎቶ ሰቀላ","","የፎቶ ሰቀላ","FALSE","ảnh Tải lên","","ảnh Tải lên","FALSE","ภาพอัพโหลด","","ภาพอัพโหลด","FALSE","រូបថតផ្ទុកឡើង","","រូបថតផ្ទុកឡើង","FALSE","Photo Upload","","Photo Upload","FALSE","Maut naik","Muat Naik Gambar","Muat Naik Gambar","TRUE","Pag-upload ng larawan","","Pag-upload ng larawan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Offline Data Access","","","about","offline_data","about.offline_data","Acceso sin conexión de datos","Acceso a datos sin conexión","Acceso a datos sin conexión","TRUE","Off-line de acesso a dados","Base de dados off-line","Base de dados off-line","TRUE","Hors-ligne d'accès aux données","Accès aux données hors ligne","Accès aux données hors ligne","TRUE","גישה לנתונים מנותק","גישה לנתונים אופליין (גישה לא מקוונת)","גישה לנתונים אופליין (גישה לא מקוונת)","TRUE","حاليا الوصول إلى البيانات","الوصول للببيانات دون الاتصال بالإنترنت","الوصول للببيانات دون الاتصال بالإنترنت","FALSE","ऑफलाइन डेटा एक्सेस","बिना इंटरनेट के प्रविष्टियों तक पहुंचे","बिना इंटरनेट के प्रविष्टियों तक पहुंचे","TRUE","অফলাইন ডেটা অ্যাক্সেস","","অফলাইন ডেটা অ্যাক্সেস","FALSE","ଅଫଲାଇନ୍ ଡାଟା ପ୍ରବେଶାଧିକାର","","ଅଫଲାଇନ୍ ଡାଟା ପ୍ରବେଶାଧିକାର","FALSE","","FALSE","Доступ к данным в сети","Оффлайн-доступ к данным","Оффлайн-доступ к данным","TRUE","脱机数据访问","","脱机数据访问","FALSE","Offline Data Access","","Offline Data Access","FALSE","Offline Akses Data","Akses Data Secara Luring","Akses Data Secara Luring","TRUE","Nje ya Mtandao Data Access","Ufikiaji wa data nje ya mtandao","Ufikiaji wa data nje ya mtandao","TRUE","የመስመር ውጪ ውሂብ መዳረሻ","","የመስመር ውጪ ውሂብ መዳረሻ","FALSE","Ẩn Data Access","","Ẩn Data Access","FALSE","ออฟไลน์การเข้าถึงข้อมูล","","ออฟไลน์การเข้าถึงข้อมูล","FALSE","ការចូលដំណើរការក្រៅបណ្ដាញទិន្នន័យ","","ការចូលដំណើរការក្រៅបណ្ដាញទិន្នន័យ","FALSE","Offline ເຂົ້າເຖິງຂໍ້ມູນ","","Offline ເຂົ້າເຖິງຂໍ້ມູນ","FALSE","Offline Data Access","Akses Data di Luar Talian","Akses Data di Luar Talian","TRUE","Offline na data access","","Offline na data access","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Search","","","about","search","about.search","Buscar","Buscar","Buscar","TRUE","Pesquisa","Pesquisa","Pesquisa","TRUE","Chercher","Recherche","Recherche","TRUE","לחפש","חיפוש","חיפוש","TRUE","بحث","بحث","بحث","FALSE","खोज","ढूढें +","ढूढें +","TRUE","অনুসন্ধান করুন","","অনুসন্ধান করুন","FALSE","ସନ୍ଧାନ","","ସନ୍ଧାନ","FALSE","","FALSE","Поиск","","Поиск","TRUE","搜索","","搜索","FALSE","Search","","Search","FALSE","Cari","Pencarian","Pencarian","TRUE","Tafuta","Tafuta","Tafuta","TRUE","ፈልግ","ፈልግ","ፈልግ","TRUE","Tìm kiếm","","Tìm kiếm","FALSE","ค้นหา","","ค้นหา","FALSE","ស្វែងរក","","ស្វែងរក","FALSE","ຄົ້ນຫາ","","ຄົ້ນຫາ","FALSE","cari","Cari","Cari","TRUE","Search.","","Search.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Entry Count","","","about","entry_count","about.entry_count","Contador de entrada","Número de entradas","Número de entradas","TRUE","Entry Count","Digite a sua conta","Digite a sua conta","TRUE","Nombre d'entrée","Nombre d'entrées","Nombre d'entrées","TRUE","רוזן Entry","מספר הערכים במילון","מספר הערכים במילון","TRUE","عدد الدخول","عدد المدخلات","عدد المدخلات","FALSE","एंट्री गणना","प्रविष्टियों की गणना","प्रविष्टियों की गणना","TRUE","এন্ট্রির সংখ্যার","","এন্ট্রির সংখ্যার","FALSE","ଏଣ୍ଟ୍ରି ଗଣନା","","ଏଣ୍ଟ୍ରି ଗଣନା","FALSE","","FALSE","Вход граф","Номер словарной статьи","Номер словарной статьи","TRUE","条目计数","","条目计数","FALSE","Entry Count","","Entry Count","FALSE","entri Hitungan","Hitungan Entri","Hitungan Entri","TRUE","kuingia Hesabu","Idadi ya Maingizo","Idadi ya Maingizo","TRUE","ምዝግብ ቆጠራ","","ምዝግብ ቆጠራ","FALSE","Đếm nhập","","Đếm nhập","FALSE","จำนวนรายการ","","จำนวนรายการ","FALSE","រាប់ធាតុ","","រាប់ធាតុ","FALSE","ນັບ Entry","","ນັບ Entry","FALSE","Kemasukan Count","Kiraan Entri","Kiraan Entri","TRUE","Bilang ng entry.","","Bilang ng entry.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Semantic Domains","","","about","SD","about.SD","dominios semánticos","Dominios semánticos","Dominios semánticos","TRUE","Domínios semântica","Domínios Semânticos","Domínios Semânticos","TRUE","sémantique domaines","Domaines sémantiques","Domaines sémantiques","TRUE","תחומים סמנטיים","שדות סמנטיים","שדות סמנטיים","TRUE","الدلالي المجالات","النطاقات الدلالية","النطاقات الدلالية","FALSE","सिमेंटिक डोमेन","अर्थ-संबंधी ज्ञानक्षेत्र","अर्थ-संबंधी ज्ञानक्षेत्र","TRUE","শব্দার্থিক ডোমেন","","শব্দার্থিক ডোমেন","FALSE","ଅର୍ଥଗତ ଡୋମେନ","","ଅର୍ଥଗତ ଡୋମେନ","FALSE","","FALSE","Семантический Домены","Семантические поля","Семантические поля","TRUE","语义域","","语义域","FALSE","Rara Domains","","Rara Domains","FALSE","semantik Domain","Ranah Semantis","Ranah Semantis","TRUE","semantic Domains","Nyanja za Semantiki","Nyanja za Semantiki","TRUE","የፍቺ ጎራዎች","","የፍቺ ጎራዎች","FALSE","Semantic Domains","","Semantic Domains","FALSE","ความหมายของโดเมน","","ความหมายของโดเมน","FALSE","ដែន semantic","","ដែន semantic","FALSE","semantic Domains","","semantic Domains","FALSE","semantik Domain","Domain Semantik","Domain Semantik","TRUE","Semantiko na mga domain","","Semantiko na mga domain","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Set Dictionaries as Private or Public","","","about","private_public","about.private_public","Diccionarios conjunto como privado o público","Configurar diccionarios como privados o públicos","Configurar diccionarios como privados o públicos","TRUE","Definir dicionários como Privado ou Público","Definir os Dicionários como Privados e Públicos","Definir os Dicionários como Privados e Públicos","TRUE","Set dictionnaires privé ou public,","Établir des dictionnaires comme étant privés ou publics","Établir des dictionnaires comme étant privés ou publics","TRUE","מילונים מוגדרים כפרטיים או ציבוריים","הגדרת מילונים כפרטיים או ציבוריים","הגדרת מילונים כפרטיים או ציבוריים","TRUE","قواميس إضافة إلى القطاع الخاص أو العام","إتاحة القواميس للاستخدام الخاص أو العام","إتاحة القواميس للاستخدام الخاص أو العام","FALSE","निजी या सार्वजनिक रूप में सेट शब्दकोश","शब्दकोश को निजी या सार्वजनिक रूप में निर्धारित करें","शब्दकोश को निजी या सार्वजनिक रूप में निर्धारित करें","TRUE","ব্যক্তিগত বা পাবলিক হিসেবে সেট করুন অভিধানের","","ব্যক্তিগত বা পাবলিক হিসেবে সেট করুন অভিধানের","FALSE","ବ୍ୟକ୍ତିଗତ କିମ୍ବା ଜନସାଧାରଣ ଭାବରେ ସେଟ୍ ଅବିଧାନଗୁଡ଼ିକ","","ବ୍ୟକ୍ତିଗତ କିମ୍ବା ଜନସାଧାରଣ ଭାବରେ ସେଟ୍ ଅବିଧାନଗୁଡ଼ିକ","FALSE","","FALSE","Установить словари как частный или общественный","Настроить частный и общий доступ к словарям","Настроить частный и общий доступ к словарям","TRUE","集词典作为私人或公共","","集词典作为私人或公共","FALSE","Sa Dictionaries matsayin Private ko Jama'a","","Sa Dictionaries matsayin Private ko Jama'a","FALSE","Set Kamus sebagai pribadi atau umum","Atur Kamus sebagai Pribadi atau Umum","Atur Kamus sebagai Pribadi atau Umum","TRUE","Kuweka Kamusi kama Binafsi au ya umma","Weka Kamusi iwe ya matumizi Binafsi au ya Umma","Weka Kamusi iwe ya matumizi Binafsi au ya Umma","TRUE","የግል ወይም የህዝብ እንደ አዘጋጅ መዝገበ","","የግል ወይም የህዝብ እንደ አዘጋጅ መዝገበ","FALSE","Set điển như cá nhân hoặc công cộng","","Set điển như cá nhân hoặc công cộng","FALSE","พจนานุกรมตั้งเป็นส่วนตัวหรือสาธารณะ","","พจนานุกรมตั้งเป็นส่วนตัวหรือสาธารณะ","FALSE","កំណត់វចនានុក្រមដែលជាឯកជនឬសាធារណៈ","","កំណត់វចនានុក្រមដែលជាឯកជនឬសាធារណៈ","FALSE","Dictionaries ທີ່ກໍານົດໄວ້ເປັນສ່ວນຕົວຫຼືສາທາລະນະ","","Dictionaries ທີ່ກໍານົດໄວ້ເປັນສ່ວນຕົວຫຼືສາທາລະນະ","FALSE","Set Dictionaries sebagai persendirian atau Public","Tetapkan Kamus sebagai Peribadi atau Umum","Tetapkan Kamus sebagai Peribadi atau Umum","TRUE","Magtakda ng mga dictionaries bilang pribado o publiko","","Magtakda ng mga dictionaries bilang pribado o publiko","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"On-Screen Keyboards for Glossing Languages","","","about","OSK","about.OSK","Los teclados en pantalla para la glosa de Idiomas","Teclados en pantalla para idiomas de traducción","Teclados en pantalla para idiomas de traducción","TRUE","Teclados na tela para encobrir Idiomas","Ligue o teclado no ecrã para fazer as Glossas das Línguas","Ligue o teclado no ecrã para fazer as Glossas das Línguas","TRUE","Clavier à l'écran pour les langues lustrage","Claviers à l'écran pour les langues gloses","Claviers à l'écran pour les langues gloses","TRUE","מקלדות על המסך עבור שפות גלסינג","מקלדות וירטואליות עבור תרגום","מקלדות וירטואליות עבור תרגום","TRUE","على الشاشة لوحات المفاتيح والتلميع اللغات","لوحات المفاتيح متاحة على الشاشة لإظهار اللغات","لوحات المفاتيح متاحة على الشاشة لإظهار اللغات","FALSE","Glossing बोली के लिए ऑन-स्क्रीन कीबोर्ड","भाषांश के लिए आभासित कुंजीपटल","भाषांश के लिए आभासित कुंजीपटल","TRUE","Glossing ভাষাসমূহ জন্য অন-স্ক্রিন কিবোর্ড","","Glossing ভাষাসমূহ জন্য অন-স্ক্রিন কিবোর্ড","FALSE","Glossing ଭାଷା ପାଇଁ ପରଦାରେ କିବୋର୍ଡ଼","","Glossing ଭାଷା ପାଇଁ ପରଦାରେ କିବୋର୍ଡ଼","FALSE","","FALSE","Экранные клавиатуры для глянцевания языков","Экранные клавиатуры для языков глоссирования","Экранные клавиатуры для языков глоссирования","TRUE","屏幕键盘进行上光语言","","屏幕键盘进行上光语言","FALSE","A-Screen keyboards for Glossing Harsuna","","A-Screen keyboards for Glossing Harsuna","FALSE","On-Screen Keyboard untuk Glossing Bahasa","Papan Ketik Pada Layar untuk Memberi Glos pada Bahasa ","Papan Ketik Pada Layar untuk Memberi Glos pada Bahasa ","TRUE","On-Screen kinanda kwa glossing Lugha","Kicharazio cha kiwamba kwa ufasiri wa lugha","Kicharazio cha kiwamba kwa ufasiri wa lugha","TRUE","ከአብስትራክት ቋንቋዎች ለ የማያ ገጽ ላይ የቁልፍ ሰሌዳዎች","","ከአብስትራክት ቋንቋዎች ለ የማያ ገጽ ላይ የቁልፍ ሰሌዳዎች","FALSE","On-Screen Bàn phím cho glossing Ngôn ngữ","","On-Screen Bàn phím cho glossing Ngôn ngữ","FALSE","คีย์บอร์ดบนหน้าจอสำหรับ glossing ภาษา","","คีย์บอร์ดบนหน้าจอสำหรับ glossing ภาษา","FALSE","ក្តារចុចលើអេក្រង់សម្រាប់ការលាក់បាំងភាសា","","ក្តារចុចលើអេក្រង់សម្រាប់ការលាក់បាំងភាសា","FALSE","ຄີບອດເທິງຫນ້າຈໍສໍາລັບ Glossing ພາສາ","","ຄີບອດເທິງຫນ້າຈໍສໍາລັບ Glossing ພາສາ","FALSE","Pada Skrin Papan Kekunci untuk Glossing Bahasa","Papan Kekunci pada Skrin bagi Memberikan Penjelasan Perkataan","Papan Kekunci pada Skrin bagi Memberikan Penjelasan Perkataan","TRUE","Mga keyboard sa screen para sa mga glossing language","","Mga keyboard sa screen para sa mga glossing language","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Import Data (CSV, JSON formats)","","","about","import_data","about.import_data","Importación de datos (CSV, formatos JSON)","Importar datos (en formatos CSV, JSON)","Importar datos (en formatos CSV, JSON)","TRUE","A importação de dados (CSV, formatos JSON)","Importar Dados (formatos CSV, JSON )","Importar Dados (formatos CSV, JSON )","TRUE","Importation de données (formats CSV, JSON)","Importation de données (formats CSV, JSON)","Importation de données (formats CSV, JSON)","TRUE","יבוא נתונים (CSV, פורמטי JSON)","ייבוא נתונים (פורמטים: CSV, JSON)","ייבוא נתונים (פורמטים: CSV, JSON)","TRUE","استيراد البيانات (CSV، صيغ JSON)","استيراد البيانات بصيغ CSV وJSON","استيراد البيانات بصيغ CSV وJSON","FALSE","डेटा आयात करें (सीएसवी, JSON प्रारूप)","प्रविष्टियों को आयात करें ( CSV, JSON के रुप में)","प्रविष्टियों को आयात करें ( CSV, JSON के रुप में)","TRUE","আমদানি ডেটা (CSV, তাদেরকে JSON ফরম্যাটের)","","আমদানি ডেটা (CSV, তাদেরকে JSON ফরম্যাটের)","FALSE","ଡାଟା ଆମଦାନି (CSV, JSON ଶୈଳୀରେ)","","ଡାଟା ଆମଦାନି (CSV, JSON ଶୈଳୀରେ)","FALSE","","FALSE","Импорт данных (CSV, JSON форматы)","Импорт данных (в форматах CSV, JSON)","Импорт данных (в форматах CSV, JSON)","TRUE","导入数据(CSV,JSON格式)","","导入数据(CSV,JSON格式)","FALSE","Import Data (CSV, JSON tsaren)","","Import Data (CSV, JSON tsaren)","FALSE","Impor Data (CSV, format JSON)","Mengimpor Data (CSV, format JSON)","Mengimpor Data (CSV, format JSON)","TRUE","Import Data (CSV, JSON muundo)","Safirisha data kutoka mfumo wa (CSV, JSON)","Safirisha data kutoka mfumo wa (CSV, JSON)","TRUE","ውሂብ ከውጭ አስመጣ (የ CSV, JSON ቅርጸቶች)","","ውሂብ ከውጭ አስመጣ (የ CSV, JSON ቅርጸቶች)","FALSE","Nhập dữ liệu (CSV, định dạng JSON)","","Nhập dữ liệu (CSV, định dạng JSON)","FALSE","นำเข้าข้อมูล (CSV รูปแบบ JSON)","","นำเข้าข้อมูล (CSV รูปแบบ JSON)","FALSE","នាំចូលទិន្នន័យ (ជា CSV, ទ្រង់ទ្រាយ JSON)","","នាំចូលទិន្នន័យ (ជា CSV, ទ្រង់ទ្រាយ JSON)","FALSE","ຂໍ້ມູນການນໍາເຂົ້າ (CSV, ຮູບແບບ JSON)","","ຂໍ້ມູນການນໍາເຂົ້າ (CSV, ຮູບແບບ JSON)","FALSE","Import Data (CSV, format JSON)","Import Data (format CSV, JSON)","Import Data (format CSV, JSON)","TRUE","Mag-import ng data (CSV, mga format ng JSON)","","Mag-import ng data (CSV, mga format ng JSON)","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Development Roadmap","","","about","dev_roadmap","about.dev_roadmap","Mapa de desarrollo","Plan de desarrollo del sitio","Plan de desarrollo del sitio","TRUE","Mapa de desenvolvimento","Desenvolvimento do Mapa de Roteio","Desenvolvimento do Mapa de Roteio","TRUE","Plan de développement","Plan de développement web","Plan de développement web","TRUE","מפת דרכים לפיתוח","תכנית פיתוח (לפי שלבים)","תכנית פיתוח (לפי שלבים)","TRUE","خارطة طريق للتنمية","خطة التطوير","خطة التطوير","FALSE","विकास रोडमैप","विकास की रुपरेखा","विकास की रुपरेखा","TRUE","উন্নয়ন রোডম্যাপ","","উন্নয়ন রোডম্যাপ","FALSE","ବିକାଶ Roadmap","","ବିକାଶ Roadmap","FALSE","","FALSE","Дорожная карта развития","Перспективы развития","Перспективы развития","TRUE","发展路线图","","发展路线图","FALSE","Development bu] e hanyar","","Development bu] e hanyar","FALSE","pengembangan Roadmap","Pengembangan Peta Jalan","Pengembangan Peta Jalan","TRUE","Maendeleo Roadmap","Mpango wa Maendeleo","Mpango wa Maendeleo","TRUE","ልማት RoadMap","","ልማት RoadMap","FALSE","Lộ trình phát triển","","Lộ trình phát triển","FALSE","การพัฒนาแผนงาน","","การพัฒนาแผนงาน","FALSE","ផែនទីបង្ហាញផ្លូវអភិវឌ្ឍន៍","","ផែនទីបង្ហាញផ្លូវអភិវឌ្ឍន៍","FALSE","ການພັດທະນາເສັ້ນທາງ","","ການພັດທະນາເສັ້ນທາງ","FALSE","Pelan Hala Tuju pembangunan","Pelan Hala Tuju Pembangunan","Pelan Hala Tuju Pembangunan","TRUE","Development Roadmap.","","Development Roadmap.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Invite Contributors","","","contributors","invite_contributors","contributors.invite_contributors","invitar a colaboradores","Invitar colaboradores","Invitar colaboradores","TRUE","Convidar Contribuintes","Convidar Contribuintes","Convidar Contribuintes","TRUE","Inviter collaborateurs","Inviter des contributeurs","Inviter des contributeurs","TRUE","ולהזמין תורמים","הזמנת מתנדבים","הזמנת מתנדבים","TRUE","دعوة المساهمين","دعوة المساهمين","دعوة المساهمين","FALSE","योगदानकर्ता को आमंत्रित करें","योगदानकर्ताओं को आमंत्रित करें","योगदानकर्ताओं को आमंत्रित करें","TRUE","অবদানকারী আমন্ত্রণ করুন","","অবদানকারী আমন্ত্রণ করুন","FALSE","ଦାତାଗଣ ଆମନ୍ତ୍ରଣ","","ଦାତାଗଣ ଆମନ୍ତ୍ରଣ","FALSE","","FALSE","Пригласить Соавторы","Пригласить соавторов","Пригласить соавторов","TRUE","邀请贡献者","","邀请贡献者","FALSE","Gayyato da gudummuwa","","Gayyato da gudummuwa","FALSE","Undang Kontributor","Undang Kontributor","Undang Kontributor","TRUE","Mualike Wachangiaji","Wakaribishe Wachangiaji","Wakaribishe Wachangiaji","TRUE","አበርካቾች ይጋብዙ","","አበርካቾች ይጋብዙ","FALSE","mời Cộng tác viên","","mời Cộng tác viên","FALSE","เชิญร่วมให้ข้อมูล","","เชิญร่วมให้ข้อมูล","FALSE","អញ្ជើញអ្នកចូលរួមចំណែក","","អញ្ជើញអ្នកចូលរួមចំណែក","FALSE","ເຊີນປະກອບສ່ວນ","","ເຊີນປະກອບສ່ວນ","FALSE","menjemput Penyumbang","Undang Penyumbang","Undang Penyumbang","TRUE","Mag-imbita ng mga kontribyutor","","Mag-imbita ng mga kontribyutor","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Why document endangered languages?","","","about","why_document","about.why_document","¿Por qué documento de lenguas en peligro de extinción?","¿Por qué documentamos los idiomas en peligro de extinción?","¿Por qué documentamos los idiomas en peligro de extinción?","TRUE","Por documento línguas em perigo?","Por que documentar Línguas em Perigo de extinção?","Por que documentar Línguas em Perigo de extinção?","TRUE","Pourquoi documenter les langues en danger?","Pourquoi faut-il documenter les langues menacées ?","Pourquoi faut-il documenter les langues menacées ?","TRUE","למה מסמך שפה בסכנת הכחדה?","למה צריך לתעד שפות בסכנת הכחדה?","למה צריך לתעד שפות בסכנת הכחדה?","TRUE","لماذا وثيقة المهددة بالانقراض لغة؟","لماذا نوثق اللغات المهددة بالانقراض؟","لماذا نوثق اللغات المهددة بالانقراض؟","FALSE","क्यों दस्तावेज़ लुप्तप्राय भाषाओं?","लुप्तप्राय भाषाओं को क्यों प्रलेख करें?","लुप्तप्राय भाषाओं को क्यों प्रलेख करें?","TRUE","কেন ডকুমেন্ট বিপন্ন ভাষায়?","","কেন ডকুমেন্ট বিপন্ন ভাষায়?","FALSE","ଡକ୍ୟୁମେଣ୍ଟ କାହିଁକି ବିରଳ ଭାଷା?","","ଡକ୍ୟୁମେଣ୍ଟ କାହିଁକି ବିରଳ ଭାଷା?","FALSE","","FALSE","Почему документ под угрозой исчезновения языков?","Зачем документировать исчезающие языки?","Зачем документировать исчезающие языки?","TRUE","为什么文件濒危的语言吗?","","为什么文件濒危的语言吗?","FALSE","Me daftarin aiki miyagun harsuna?","","Me daftarin aiki miyagun harsuna?","FALSE","Mengapa dokumen terancam bahasa?","Mengapa mendokumentasikan bahasa-bahasa terancam punah?","Mengapa mendokumentasikan bahasa-bahasa terancam punah?","TRUE","Kwa hati hatarini lugha?","Kwanini ni muhimu kuziandikia lugha zilizohatarini kutoweka?","Kwanini ni muhimu kuziandikia lugha zilizohatarini kutoweka?","TRUE","ለምን ሰነድ ቋንቋዎች አደጋ?","","ለምን ሰነድ ቋንቋዎች አደጋ?","FALSE","Tại sao tài liệu quý hiếm ngôn ngữ?","","Tại sao tài liệu quý hiếm ngôn ngữ?","FALSE","ทำไมเอกสารภาษาที่ใกล้สูญพันธุ์?","","ทำไมเอกสารภาษาที่ใกล้สูญพันธุ์?","FALSE","ហេតុអ្វីបានជាឯកសារភាសាជិតផុតពូជ?","","ហេតុអ្វីបានជាឯកសារភាសាជិតផុតពូជ?","FALSE","ເປັນຫຍັງເອກະສານພາສາໃກ້ຈະສູນພັນ?","","ເປັນຫຍັງເອກະສານພາສາໃກ້ຈະສູນພັນ?","FALSE","Mengapa dokumen terancam bahasa?","Mengapa harus kita mendokumenkan bahasa terancam?","Mengapa harus kita mendokumenkan bahasa terancam?","TRUE","Bakit dokumento ang mga endangered na wika?","","Bakit dokumento ang mga endangered na wika?","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Languages are humanity's living history; they encode centuries of ancestral wisdom related to the environment, local culture and much more. Language is the vital, creative lens through which we perceive the world and express ourselves. There are over 3,000 threatened and endangered languages in the world, and it is up to our current generation to address this urgent problem before it's too late.","","","about","language_is_history","about.language_is_history","Las lenguas son la historia viva de la humanidad; codifican siglos de sabiduría ancestral relacionada con el medio ambiente, la cultura local y mucho más. El lenguaje es el objetivo fundamental, creativo a través del cual percibimos el mundo y nos expresamos. Hay más de 3.000 lenguas amenazadas y en peligro en el mundo, y le corresponde a nuestra generación actual para hacer frente a este problema urgente antes de que sea demasiado tarde.","Las lenguas forman parte de la historia de la humanidad. Contienen siglos de sabiduría ancestral relacionada con el medio ambiente, la cultura local y mucho más. El lenguaje es la puerta a través de la cual percibimos el mundo, así como una forma importante de expresarnos. Hay más de 3.000 lenguas amenazadas y en peligro de extinción en el mundo. Depende de nuestra generación actual abordar este problema urgente antes de que sea demasiado tarde.","Las lenguas forman parte de la historia de la humanidad. Contienen siglos de sabiduría ancestral relacionada con el medio ambiente, la cultura local y mucho más. El lenguaje es la puerta a través de la cual percibimos el mundo, así como una forma importante de expresarnos. Hay más de 3.000 lenguas amenazadas y en peligro de extinción en el mundo. Depende de nuestra generación actual abordar este problema urgente antes de que sea demasiado tarde.","TRUE","As línguas são história viva da humanidade; eles codificam séculos de sabedoria ancestral relacionadas com o ambiente, a cultura local e muito mais. A linguagem é a vital lente, criativo através do qual percebemos o mundo e expressar-nos. Existem mais de 3.000 línguas ameaçadas e em perigo de extinção no mundo, e cabe à nossa geração atual para resolver este problema urgente, antes que seja tarde demais.","As línguas são a história viva da humanidade; codificam séculos de sabedoria dos antepassados sobre a natureza, cultura local e muito mais","As línguas são a história viva da humanidade; codificam séculos de sabedoria dos antepassados sobre a natureza, cultura local e muito mais","TRUE","Les langues sont l'histoire vivante de l'humanité; ils encodent des siècles de sagesse ancestrale liée à l'environnement, la culture locale et bien plus encore. La langue est l'objectif essentiel, créatif par lequel nous percevons le monde et nous exprimons. Il y a plus de 3000 langues menacées et en danger dans le monde, et il appartient à notre génération actuelle pour résoudre ce problème urgent avant qu'il ne soit trop tard.","Les langues sont l'histoire vivante de l'humanité ; elles englobent des siècles de sagesse ancestrale liée à l'environnement, à la culture locale et plus encore. La langue est une lentille vitale et créative à travers laquelle nous percevons le monde et nous nous exprimons. Il existe plus de 3 000 langues menacées dans le monde, et il est du devoir de notre génération de s'attaquer à ce problème urgent avant qu'il ne soit trop tard.","Les langues sont l'histoire vivante de l'humanité ; elles englobent des siècles de sagesse ancestrale liée à l'environnement, à la culture locale et plus encore. La langue est une lentille vitale et créative à travers laquelle nous percevons le monde et nous nous exprimons. Il existe plus de 3 000 langues menacées dans le monde, et il est du devoir de notre génération de s'attaquer à ce problème urgent avant qu'il ne soit trop tard.","TRUE","שפות הן מההיסטוריה החיה של האנושות; הם לקודד מאות שנים של חוכמת קדומים הקשורים לאיכות הסביבה, התרבות המקומית ועוד. שפה היא העדשה החיונית, יצירתי שדרכה אנו רואים את העולם ולהביע את עצמנו. ישנם מעל 3000 איים וסיכן השפות בעולם, וזה תלוי לדור הנוכחי שלנו כדי לתת מענה לבעיה דחופה זה לפני שיהיה מאוחר מדי.","שפות הן ההיסטוריה החיה של האנושות; הן מצפינות מאות שנים של חוכמת אבות-אבותינו, בכל הנוגע לסביבה, תרבות מקומות, ועוד. שפה היא עדשה חיונית ויצירתית לתפיסת העולם סביבנו וכן להבעה עצמית. ישנן מעל ל-3,000 שפות בסכנת הכחדה, שתלויות בנו לתת מענה במהרה, לפני שמאוחר מדי.","שפות הן ההיסטוריה החיה של האנושות; הן מצפינות מאות שנים של חוכמת אבות-אבותינו, בכל הנוגע לסביבה, תרבות מקומות, ועוד. שפה היא עדשה חיונית ויצירתית לתפיסת העולם סביבנו וכן להבעה עצמית. ישנן מעל ל-3,000 שפות בסכנת הכחדה, שתלויות בנו לתת מענה במהרה, לפני שמאוחר מדי.","TRUE","اللغات والتاريخ الحي للإنسانية. أنها ترميز قرون من حكمة الأجداد المتعلقة بالبيئة والثقافة المحلية وأكثر من ذلك بكثير. اللغة هي حيوية، عدسة مبتكرة نستطيع من خلالها إدراك العالم والتعبير عن أنفسنا. وهناك أكثر من 3000 اللغات المهددة والمهددة بالانقراض في العالم، والأمر متروك للجيل الحالي لدينا لمعالجة هذه المشكلة الملحة قبل فوات الاوان.","إن اللغات هي تاريح البشرية الحي، إذ توثق قروناً من الحكمة الموروثة فيما يخص البيئة والثقافة المحلية وغيرها. إن اللغة هي العدسة الحية الخلاقة التي من خلالها نرى العالم ونعبر عن أنفسنا. هناك ما يزيد عن 3000 لغة مهددة بالانقراض حول العالم. ويُعوّل على جيلنا هذا التصدي لهذه المشكلة الملحة قبل فوات الأوان.","إن اللغات هي تاريح البشرية الحي، إذ توثق قروناً من الحكمة الموروثة فيما يخص البيئة والثقافة المحلية وغيرها. إن اللغة هي العدسة الحية الخلاقة التي من خلالها نرى العالم ونعبر عن أنفسنا. هناك ما يزيد عن 3000 لغة مهددة بالانقراض حول العالم. ويُعوّل على جيلنا هذا التصدي لهذه المشكلة الملحة قبل فوات الأوان.","FALSE","बोली मानवता के रहने वाले इतिहास कर रहे हैं; वे पर्यावरण, स्थानीय संस्कृति और भी बहुत कुछ करने के लिए संबंधित पैतृक ज्ञान के सदियों सांकेतिक शब्दों में बदलना। भाषा महत्वपूर्ण है, रचनात्मक लेंस जिसके माध्यम से हम दुनिया अनुभव करते हैं और अपने आप को व्यक्त करता है। दुनिया में 3,000 से अधिक की धमकी दी और लुप्तप्राय भाषाओं हैं, और यह इससे पहले कि बहुत देर हो चुकी है इस तत्काल समस्या का समाधान करने के लिए हमारे वर्तमान पीढ़ी पर निर्भर है।","भाषाएँ मानव जाति का जीवित इतिहास है; ये सदियों की स्थानीय संस्कृति, पर्यावरण और उनसे सम्बंधित पूर्वजों के ज्ञान को कूटबद्ध करती है । भाषा एक महत्वपूर्ण रचनात्मक माध्यम है जिसके जरिये से हम दुनिया को समझते हैं और खुद को वयक्त करते हैं । विश्व में लगभग ३००० से अधिक संकटित और लुप्तप्राय भाषायें हैं और ये हमारे वर्तमान पीढ़ी पर निर्भर करता है कि अविलंब इस समस्या का समाधान ढूंढा जाय इससे पहले की देर ना हो जाये ।","भाषाएँ मानव जाति का जीवित इतिहास है; ये सदियों की स्थानीय संस्कृति, पर्यावरण और उनसे सम्बंधित पूर्वजों के ज्ञान को कूटबद्ध करती है । भाषा एक महत्वपूर्ण रचनात्मक माध्यम है जिसके जरिये से हम दुनिया को समझते हैं और खुद को वयक्त करते हैं । विश्व में लगभग ३००० से अधिक संकटित और लुप्तप्राय भाषायें हैं और ये हमारे वर्तमान पीढ़ी पर निर्भर करता है कि अविलंब इस समस्या का समाधान ढूंढा जाय इससे पहले की देर ना हो जाये ।","TRUE","ভাষাসমূহ মানবতা জীবন্ত ইতিহাস আছে; তারা পরিবেশ, স্থানীয় সংস্কৃতি এবং আরো অনেক কিছু এর সাথে সম্পর্কিত পৈতৃক বিজ্ঞতা শতাব্দী সঙ্কেতাক্ষরে লিখা। ভাষা অত্যাবশ্যক, সৃজনশীল লেন্স, যার মাধ্যমে আমরা পৃথিবীকে উপলব্ধি এবং নিজেদের প্রকাশ করার নয়। সেখানে বিশ্বের 3,000 টি হুমকি এবং বিপন্ন ভাষা, এবং এটি আগে খুব দেরি এই জরুরী সমস্যা মোকাবেলার আমাদের বর্তমান প্রজন্মের আপ হয়।","","ভাষাসমূহ মানবতা জীবন্ত ইতিহাস আছে; তারা পরিবেশ, স্থানীয় সংস্কৃতি এবং আরো অনেক কিছু এর সাথে সম্পর্কিত পৈতৃক বিজ্ঞতা শতাব্দী সঙ্কেতাক্ষরে লিখা। ভাষা অত্যাবশ্যক, সৃজনশীল লেন্স, যার মাধ্যমে আমরা পৃথিবীকে উপলব্ধি এবং নিজেদের প্রকাশ করার নয়। সেখানে বিশ্বের 3,000 টি হুমকি এবং বিপন্ন ভাষা, এবং এটি আগে খুব দেরি এই জরুরী সমস্যা মোকাবেলার আমাদের বর্তমান প্রজন্মের আপ হয়।","FALSE","ଭାଷା ମାନବିକତା ର ଜୀବିତ ଇତିହାସ ଅଛି; ସେମାନେ ପରିବେଶ, ସ୍ଥାନୀୟ ସଂସ୍କୃତି ଏବଂ ବହୁତ ଅଧିକ ସମ୍ପର୍କିତ ancestral ଜ୍ଞାନ ର ଶହ encode। ଭାଷା ମାରାତ୍ମକ, ସୃଜନାତ୍ମକ ଲେନ୍ସ ଯାହା ମାଧ୍ୟମରେ ଆମେ ସାରା ଅନୁଭବ ଏବଂ ଆମ୍େଭ ପ୍ରକାଶ ଅଟେ। ସାରା ରେ 3000 ଉପରେ threatened ଏବଂ ବିରଳ ଭାଷା ଅଛି, ଏବଂ ଏହା ଏହି ଜରୁରୀ ସମସ୍ଯା ମୁକାବିଲା କରିବା ଏହା ବହୁତ ଡେରି ର ପୂର୍ବରୁ ଆମର ବର୍ତ୍ତମାନର ପୁରୁଷ ପର୍ଯ୍ୟନ୍ତ ହେଉଛି।","","ଭାଷା ମାନବିକତା ର ଜୀବିତ ଇତିହାସ ଅଛି; ସେମାନେ ପରିବେଶ, ସ୍ଥାନୀୟ ସଂସ୍କୃତି ଏବଂ ବହୁତ ଅଧିକ ସମ୍ପର୍କିତ ancestral ଜ୍ଞାନ ର ଶହ encode। ଭାଷା ମାରାତ୍ମକ, ସୃଜନାତ୍ମକ ଲେନ୍ସ ଯାହା ମାଧ୍ୟମରେ ଆମେ ସାରା ଅନୁଭବ ଏବଂ ଆମ୍େଭ ପ୍ରକାଶ ଅଟେ। ସାରା ରେ 3000 ଉପରେ threatened ଏବଂ ବିରଳ ଭାଷା ଅଛି, ଏବଂ ଏହା ଏହି ଜରୁରୀ ସମସ୍ଯା ମୁକାବିଲା କରିବା ଏହା ବହୁତ ଡେରି ର ପୂର୍ବରୁ ଆମର ବର୍ତ୍ତମାନର ପୁରୁଷ ପର୍ଯ୍ୟନ୍ତ ହେଉଛି।","FALSE","","FALSE","Языки являются живой историей человечества; они кодируют столетие мудрости предков, связанную с окружающей средой, местной культурой и многим другими. Язык является жизненно важной, творческой призмой, через которую мы воспринимаем мир и выражать себя. Есть более 3000 редких и исчезающих языков в мире, и это до нашего нынешнего поколения для решения этой насущной проблемы, прежде чем это слишком поздно.","Языки - это живое отражение истории человечества; в них сокрыта вековая мудрость предков и их знания об окружающей среде, местной культуре и многом другом. Сквозь живую и творческую призму языка мы воспринимаем мир и самовыражаемся. Сейчас в мире насчитывается более 3000 редких и исчезающих языков, и именно нынешнему поколению предстоит решать проблемы их сохранения и возрождения, прежде чем станет слишком поздно.","Языки - это живое отражение истории человечества; в них сокрыта вековая мудрость предков и их знания об окружающей среде, местной культуре и многом другом. Сквозь живую и творческую призму языка мы воспринимаем мир и самовыражаемся. Сейчас в мире насчитывается более 3000 редких и исчезающих языков, и именно нынешнему поколению предстоит решать проблемы их сохранения и возрождения, прежде чем станет слишком поздно.","TRUE","语言是人类生活的历史;它们编码的相关环境,当地文化等等祖先智慧的世纪。语言是通过它,我们看待世界和表达自己的重要,创意镜头。有在世界各地的3000受威胁和濒危的语言,它是由我们目前的一代为时已晚之前解决这一紧迫问题。","","语言是人类生活的历史;它们编码的相关环境,当地文化等等祖先智慧的世纪。语言是通过它,我们看待世界和表达自己的重要,创意镜头。有在世界各地的3000受威胁和濒危的语言,它是由我们目前的一代为时已晚之前解决这一紧迫问题。","FALSE","Harsuna suna Adam ta rai tarihi. suka encode ƙarni na kakanninmu hikima alaka da yanayi, na gida da al'adu da kuma yafi. Harshe ne m, m ruwan tabarau ta hanyar abin da muka gane da duniya da kuma bayyana kanmu. Akwai kan 3,000 barazana da kuma miyagun harsuna a duniya, da kuma shi ne har zuwa mu a halin yanzu tsara don magance wannan matsala da gaggawa kafin yana da latti.","","Harsuna suna Adam ta rai tarihi. suka encode ƙarni na kakanninmu hikima alaka da yanayi, na gida da al'adu da kuma yafi. Harshe ne m, m ruwan tabarau ta hanyar abin da muka gane da duniya da kuma bayyana kanmu. Akwai kan 3,000 barazana da kuma miyagun harsuna a duniya, da kuma shi ne har zuwa mu a halin yanzu tsara don magance wannan matsala da gaggawa kafin yana da latti.","FALSE","Bahasa adalah sejarah hidup manusia; mereka mengkodekan abad kebijaksanaan leluhur berhubungan dengan lingkungan, budaya lokal dan banyak lagi. Bahasa adalah penting, lensa kreatif melalui mana kita memandang dunia dan mengekspresikan diri. Ada lebih dari 3.000 terancam dan hampir punah bahasa di dunia, dan terserah kepada generasi kita saat ini untuk mengatasi masalah mendesak ini sebelum terlambat.","Bahasa-bahasa adalah sejarah hidup manusia; bahasa-bahasa tersebut mengandung kebijaksanaan dan pengetahuan leluhur, yang usianya berabad-abad, yang berkaitan dengan lingkungan, budaya lokal, dan masih banyak lagi. Bahasa sangat vital, sebuah lensa kreatif yang dengannya kita dapat melihat dunia dan mengekspresikan diri kita. Ada lebih dari 3,000 bahasa yang tidak aman dan terancam punah di dunia, dan ini tergantung pada generasi kita saat ini untuk mengatasi masalah yang mendesak ini sebelum terlambat.","Bahasa-bahasa adalah sejarah hidup manusia; bahasa-bahasa tersebut mengandung kebijaksanaan dan pengetahuan leluhur, yang usianya berabad-abad, yang berkaitan dengan lingkungan, budaya lokal, dan masih banyak lagi. Bahasa sangat vital, sebuah lensa kreatif yang dengannya kita dapat melihat dunia dan mengekspresikan diri kita. Ada lebih dari 3,000 bahasa yang tidak aman dan terancam punah di dunia, dan ini tergantung pada generasi kita saat ini untuk mengatasi masalah yang mendesak ini sebelum terlambat.","TRUE","Lugha ni binadamu wa historia ya maisha; wao encode karne ya hekima ya mababu kuhusiana na mazingira, utamaduni na mengi zaidi. Lugha ni muhimu, ubunifu Lens kwa njia ambayo tuna mawazo ya dunia na kueleza sisi wenyewe. Kuna zaidi ya 3,000 kutishiwa na hatarini lugha duniani, na ni juu ya kizazi yetu ya sasa ya kushughulikia tatizo hili haraka kabla ni kuchelewa mno.","Lugha ni historia ya maisha ya binadamu; zinabeba busara za mababu za karne nyingi zinazohusiana na mazingira, utamaduni wa asili na mengine mengi. Lugha ni lensi muhimu ya ubunifu ambayo kupitia sisi tunauona ulimwengu na kuweza kujielezea. Kuna zaidi ya lugha 3,000 zilizo hatarini na zinazotoweka ulimwenguni, na ni jukumu la kizazi chetu cha sasa kushughulikia tatizo hili kwa haraka kabla hatujachelewa.","Lugha ni historia ya maisha ya binadamu; zinabeba busara za mababu za karne nyingi zinazohusiana na mazingira, utamaduni wa asili na mengine mengi. Lugha ni lensi muhimu ya ubunifu ambayo kupitia sisi tunauona ulimwengu na kuweza kujielezea. Kuna zaidi ya lugha 3,000 zilizo hatarini na zinazotoweka ulimwenguni, na ni jukumu la kizazi chetu cha sasa kushughulikia tatizo hili kwa haraka kabla hatujachelewa.","TRUE","ቋንቋዎች የሰው ኑሮ ታሪክ ናቸው; እነርሱ አካባቢ, በአካባቢው ባህል እና ብዙ ተጨማሪ ጋር የተያያዙ በየአባቶቻቸው ጥበብ ዘመናት እንዲረዱት. ቋንቋ እኛ ዓለም አያለሁ እና እራሳችንን መግለጽ ይህም በኩል አስፈላጊ, የፈጠራ ሌንስ ነው. አለ በዓለም ላይ ከ 3,000 በላይ ማስፈራሪያ እና አደጋ ቋንቋዎች ናቸው, እና በጣም ዘግይቷል በፊት ይህንን አጣዳፊ ችግር ለመፍታት ያለንን የአሁኑ ትውልድ ድረስ ነው.","","ቋንቋዎች የሰው ኑሮ ታሪክ ናቸው; እነርሱ አካባቢ, በአካባቢው ባህል እና ብዙ ተጨማሪ ጋር የተያያዙ በየአባቶቻቸው ጥበብ ዘመናት እንዲረዱት. ቋንቋ እኛ ዓለም አያለሁ እና እራሳችንን መግለጽ ይህም በኩል አስፈላጊ, የፈጠራ ሌንስ ነው. አለ በዓለም ላይ ከ 3,000 በላይ ማስፈራሪያ እና አደጋ ቋንቋዎች ናቸው, እና በጣም ዘግይቷል በፊት ይህንን አጣዳፊ ችግር ለመፍታት ያለንን የአሁኑ ትውልድ ድረስ ነው.","FALSE","Ngôn ngữ là lịch sử sống của nhân loại; họ mã hóa nhiều thế kỷ của sự khôn ngoan của tổ tiên liên quan đến môi trường, văn hóa địa phương và nhiều hơn nữa. Ngôn ngữ là quan trọng, ống kính sáng tạo thông qua đó chúng ta nhận thức thế giới và thể hiện bản thân. Hiện có hơn 3.000 ngôn ngữ bị đe dọa và bị đe dọa trên thế giới, và nó tùy thuộc vào thế hệ hiện tại của chúng tôi để giải quyết vấn đề cấp bách này trước khi quá muộn.","","Ngôn ngữ là lịch sử sống của nhân loại; họ mã hóa nhiều thế kỷ của sự khôn ngoan của tổ tiên liên quan đến môi trường, văn hóa địa phương và nhiều hơn nữa. Ngôn ngữ là quan trọng, ống kính sáng tạo thông qua đó chúng ta nhận thức thế giới và thể hiện bản thân. Hiện có hơn 3.000 ngôn ngữ bị đe dọa và bị đe dọa trên thế giới, và nó tùy thuộc vào thế hệ hiện tại của chúng tôi để giải quyết vấn đề cấp bách này trước khi quá muộn.","FALSE","ภาษาที่มีประวัติชีวิตของมนุษย์; พวกเขาเข้ารหัสศตวรรษของภูมิปัญญาของบรรพบุรุษที่เกี่ยวข้องกับสภาพแวดล้อมวัฒนธรรมท้องถิ่นและอื่น ๆ อีกมากมาย ภาษาเป็นสิ่งสำคัญเลนส์ความคิดสร้างสรรค์ผ่านที่เรารับรู้โลกและแสดงตัวเอง มีอยู่มากกว่า 3,000 คุกคามและใกล้สูญพันธุ์ภาษาในโลกและมันขึ้นอยู่กับรุ่นปัจจุบันของเราที่จะแก้ไขปัญหาอย่างเร่งด่วนนี้ก่อนที่จะสายเกินไป","","ภาษาที่มีประวัติชีวิตของมนุษย์; พวกเขาเข้ารหัสศตวรรษของภูมิปัญญาของบรรพบุรุษที่เกี่ยวข้องกับสภาพแวดล้อมวัฒนธรรมท้องถิ่นและอื่น ๆ อีกมากมาย ภาษาเป็นสิ่งสำคัญเลนส์ความคิดสร้างสรรค์ผ่านที่เรารับรู้โลกและแสดงตัวเอง มีอยู่มากกว่า 3,000 คุกคามและใกล้สูญพันธุ์ภาษาในโลกและมันขึ้นอยู่กับรุ่นปัจจุบันของเราที่จะแก้ไขปัญหาอย่างเร่งด่วนนี้ก่อนที่จะสายเกินไป","FALSE","ភាសាប្រវត្តិសាស្រ្តការរស់នៅរបស់មនុស្សជាតិ! ពួកគេបានអ៊ិនកូដសតវត្សនៃប្រាជ្ញាដូនតាដែលទាក់ទងទៅនឹងបរិស្ថាន, វប្បធម៍ក្នុងតំបន់និងជាច្រើនទៀត។ ភាសាគឺជាការសំខាន់ណាស់, កែវច្នៃប្រឌិតតាមរយៈការដែលយើងយល់ឃើញថាពិភពលោកនិងការបង្ហាញពីខ្លួនយើង។ មានជាង 3000 ភាសារងការគំរាមកំហែងនិងជិតផុតពូជនៅក្នុងពិភពលោកនេះគឺមាន, ហើយវាគឺមានរហូតដល់ជំនាន់បច្ចុប្បន្នរបស់យើងដើម្បីដោះស្រាយបញ្ហាបន្ទាន់នេះមុនពេលដែលវាជាការយឺតពេល។","","ភាសាប្រវត្តិសាស្រ្តការរស់នៅរបស់មនុស្សជាតិ! ពួកគេបានអ៊ិនកូដសតវត្សនៃប្រាជ្ញាដូនតាដែលទាក់ទងទៅនឹងបរិស្ថាន, វប្បធម៍ក្នុងតំបន់និងជាច្រើនទៀត។ ភាសាគឺជាការសំខាន់ណាស់, កែវច្នៃប្រឌិតតាមរយៈការដែលយើងយល់ឃើញថាពិភពលោកនិងការបង្ហាញពីខ្លួនយើង។ មានជាង 3000 ភាសារងការគំរាមកំហែងនិងជិតផុតពូជនៅក្នុងពិភពលោកនេះគឺមាន, ហើយវាគឺមានរហូតដល់ជំនាន់បច្ចុប្បន្នរបស់យើងដើម្បីដោះស្រាយបញ្ហាបន្ទាន់នេះមុនពេលដែលវាជាការយឺតពេល។","FALSE","ພາສາແມ່ນປະຫວັດສາດດໍາລົງຊີວິດຂອງມະນຸດຂອງ; ພວກເຂົາເຈົ້າເຂົ້າລະຫັດສັດຕະວັດຂອງສະຕິປັນຍາບັນພະບູລຸດທີ່ກ່ຽວຂ້ອງກັບສະພາບແວດລ້ອມວັດທະນະທໍາທ້ອງຖິ່ນແລະມີຫຼາຍຫຼາຍ. ພາສາເປັນສໍາຄັນ, ທັດສະນະທີ່ສ້າງສັນໂດຍຜ່ານທີ່ພວກເຮົາຮັບຮູ້ວ່າໂລກແລະສະແດງເອງ. ມີຫຼາຍກວ່າ 3,000 ໄພຂົ່ມຂູ່ແລະໃກ້ຈະສູນພັນພາສາໃນໂລກແລະມັນແມ່ນຂຶ້ນກັບການຜະລິດໃນປະຈຸບັນຂອງພວກເຮົາເພື່ອແກ້ໄຂບັນຫາສຸກເສີນຄືແນວກ່ອນທີ່ມັນຈະເປັນການຊັກຊ້າເກີນໄປ.","","ພາສາແມ່ນປະຫວັດສາດດໍາລົງຊີວິດຂອງມະນຸດຂອງ; ພວກເຂົາເຈົ້າເຂົ້າລະຫັດສັດຕະວັດຂອງສະຕິປັນຍາບັນພະບູລຸດທີ່ກ່ຽວຂ້ອງກັບສະພາບແວດລ້ອມວັດທະນະທໍາທ້ອງຖິ່ນແລະມີຫຼາຍຫຼາຍ. ພາສາເປັນສໍາຄັນ, ທັດສະນະທີ່ສ້າງສັນໂດຍຜ່ານທີ່ພວກເຮົາຮັບຮູ້ວ່າໂລກແລະສະແດງເອງ. ມີຫຼາຍກວ່າ 3,000 ໄພຂົ່ມຂູ່ແລະໃກ້ຈະສູນພັນພາສາໃນໂລກແລະມັນແມ່ນຂຶ້ນກັບການຜະລິດໃນປະຈຸບັນຂອງພວກເຮົາເພື່ອແກ້ໄຂບັນຫາສຸກເສີນຄືແນວກ່ອນທີ່ມັນຈະເປັນການຊັກຊ້າເກີນໄປ.","FALSE","Bahasa adalah sejarah hidup manusia; mereka mengekod abad kebijaksanaan nenek moyang yang berkaitan dengan alam sekitar, budaya tempatan dan banyak lagi. Bahasa adalah penting, lensa kreatif di mana kita melihat dunia dan menyatakan diri kita sendiri. Terdapat lebih daripada 3000 bahasa terancam dan terancam di dunia, dan terpulang kepada generasi semasa kami untuk menangani masalah yang mendesak ini sebelum ia terlambat.","Bahasa adalah sejarah hidup manusia; beratusan tahun kearifan dan kebijaksanaan yang berkaitan dengan alam sekitar, budaya tempatan dan banyak lagi terkandung dalamnya. Bahasa merupakan sebuah lensa kreatif dan vital, di mana kita dapat melihat dunia dan meluahkan diri kita. Terdapat lebih daripada 3000 bahasa yang terancam di dunia - ia terpulang kepada generasi kita sekarang ini untuk menangani masalah mendesak ini sebelum terlambat.","Bahasa adalah sejarah hidup manusia; beratusan tahun kearifan dan kebijaksanaan yang berkaitan dengan alam sekitar, budaya tempatan dan banyak lagi terkandung dalamnya. Bahasa merupakan sebuah lensa kreatif dan vital, di mana kita dapat melihat dunia dan meluahkan diri kita. Terdapat lebih daripada 3000 bahasa yang terancam di dunia - ia terpulang kepada generasi kita sekarang ini untuk menangani masalah mendesak ini sebelum terlambat.","TRUE","Ang mga wika ay kasaysayan ng buhay ng sangkatauhan; Pinagsama nila ang mga siglo ng karunungan ng ninuno na may kaugnayan sa kapaligiran, lokal na kultura at marami pang iba. Ang wika ay ang mahalaga, malikhaing lens kung saan nakikita natin ang mundo at ipahayag ang ating sarili. Mayroong higit sa 3,000 nanganganib at endangered na mga wika sa mundo, at hanggang sa aming kasalukuyang henerasyon upang matugunan ang kagyat na problema bago ito huli.","","Ang mga wika ay kasaysayan ng buhay ng sangkatauhan; Pinagsama nila ang mga siglo ng karunungan ng ninuno na may kaugnayan sa kapaligiran, lokal na kultura at marami pang iba. Ang wika ay ang mahalaga, malikhaing lens kung saan nakikita natin ang mundo at ipahayag ang ating sarili. Mayroong higit sa 3,000 nanganganib at endangered na mga wika sa mundo, at hanggang sa aming kasalukuyang henerasyon upang matugunan ang kagyat na problema bago ito huli.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Not only is it important to scientifically document and preserve endangered languages, but from an educational standpoint, learning one's heritage language is a boost for communities who wish to conserve and celebrate their cultural identity, locally as well as internationally. Knowing about one's linguistic and cultural origins has significant, positive health impacts, and this translates to better well-being of the community in the long-term.","","","about","important_to_document","about.important_to_document","No sólo es importante documentar científicamente y preservar las lenguas en peligro de extinción, pero desde un punto de vista educativo, el aprendizaje de las lenguas de origen de uno es un impulso para las comunidades que desean conservar y celebran su identidad cultural, a nivel local como a nivel internacional. Conocer la existencia de uno de los orígenes lingüísticos y culturales tiene impactos sobre la salud significativos y positivos, y esto se traduce en un mayor bienestar de la comunidad en el largo plazo.","Es importante documentar y preservar las lenguas en peligro a nivel científico y cultural. Desde un punto de vista educativo, el aprendizaje de una propia lengua patrimonial es una forma de que las comunidades conserven y celebren su identidad cultural, tanto a nivel local como internacional. Conocer los orígenes lingüísticos y culturales de una persona tiene impactos significativos y positivos en la salud, y esto se traduce en un mejor bienestar de la comunidad a largo plazo.","Es importante documentar y preservar las lenguas en peligro a nivel científico y cultural. Desde un punto de vista educativo, el aprendizaje de una propia lengua patrimonial es una forma de que las comunidades conserven y celebren su identidad cultural, tanto a nivel local como internacional. Conocer los orígenes lingüísticos y culturales de una persona tiene impactos significativos y positivos en la salud, y esto se traduce en un mejor bienestar de la comunidad a largo plazo.","TRUE","Não só é importante para documentar cientificamente e preservar as línguas ameaçadas de extinção, mas do ponto de vista educacional, de uma aprendizagem de língua de herança é um impulso para as comunidades que desejam conservar e comemorar a sua identidade cultural, localmente, bem como internacionalmente. Sabendo sobre um de origens linguísticas e culturais tem impactos significativos positivos para a saúde, e isso se traduz em melhor bem-estar da comunidade a longo prazo.","A Documentação e Preservação das Línguas em Perigo de extinção não é importante apenas para a ciência, ela é igualmente importante para o ensino.","A Documentação e Preservação das Línguas em Perigo de extinção não é importante apenas para a ciência, ela é igualmente importante para o ensino.","TRUE","Non seulement il est important de documenter scientifiquement et la préservation des langues en voie de disparition, mais d'un point de vue éducatif, la langue du patrimoine de l'un d'apprentissage est un coup de pouce pour les collectivités qui souhaitent conserver et célébrer leur identité culturelle, au niveau local, ainsi qu'au niveau international. Le fait de connaître une des origines linguistiques et culturelles a d'importantes répercussions sur la santé positifs, et cela se traduit par un meilleur bien-être de la communauté à long terme.","Non seulement il est important de documenter scientifiquement et de protéger les langues en danger, mais d'un point de vue éducatif, l'apprentissage de la langue maternelle est un stimulant positif pour les communautés qui souhaitent conserver et célébrer leur identité culturelle, tant au niveau local qu'international. La connaissance de ses origines linguistiques et culturelles a un impact positif et significatif sur la santé, ce qui se traduit par un meilleur bien-être de la communauté à long terme.","Non seulement il est important de documenter scientifiquement et de protéger les langues en danger, mais d'un point de vue éducatif, l'apprentissage de la langue maternelle est un stimulant positif pour les communautés qui souhaitent conserver et célébrer leur identité culturelle, tant au niveau local qu'international. La connaissance de ses origines linguistiques et culturelles a un impact positif et significatif sur la santé, ce qui se traduit par un meilleur bien-être de la communauté à long terme.","TRUE","לא רק שזה חשוב מסמך מדעי לשמר שפה בסכנת הכחדה, אבל מבחינה חינוכית, שפת המורשת של אחד לומד היא דחיפה עבור קהילות המבקשות לשמר ולחגוג את זהותם התרבותית, מקומי וכן בינלאומית. ידיעה על מקורותיה הלשוניים ותרבותיים של אחד יש השפעות בריאותיות משמעותיות, חיוביות, זה מתרגם ל רווחה של הקהילה טובה יותר בטווח הארוך.","תיעוד ושימור שפות בסכנת הכחדה לא רק חשוב מבחינה מדעית, אלא גם מבחינה חינוכית — למידת שפת מורשת מאפשרת לקהילות שונות לשמר, לכבד, ולחגוג את זהותן התרבותית, באופן מקומי וכן בינלאומי. לידיעת המקורות הלשוניים ותרבותיים של עצמנו יש שלל השפעות בריאותיות נרחבות, אשר תורמות לרווחת הקהילה כולה בטווח הארוך.","תיעוד ושימור שפות בסכנת הכחדה לא רק חשוב מבחינה מדעית, אלא גם מבחינה חינוכית — למידת שפת מורשת מאפשרת לקהילות שונות לשמר, לכבד, ולחגוג את זהותן התרבותית, באופן מקומי וכן בינלאומי. לידיעת המקורות הלשוניים ותרבותיים של עצמנו יש שלל השפעות בריאותיות נרחבות, אשר תורמות לרווחת הקהילה כולה בטווח הארוך.","TRUE","ليس فقط لأنه من المهم أن ثيقة علميا والحفاظ على اللغات المهددة بالانقراض، ولكن من وجهة النظر التربوية، لغة التراث تعلم المرء هو دفعة للمجتمعات الذين يرغبون في حفظ واحتفال هويتهم الثقافية، محليا ودوليا. يعرف عن واحد في أصول لغوية وثقافية لها آثار صحية وخيمة، سواء كان إيجابيا، وهذا يترجم إلى أفضل رفاهية المجتمع في المدى الطويل.","ليس من الضروري أن توَثق اللغات المهددة بالانقراض وتحفظ بطريقة علمية فحسب، بل كذلك من منظور تعليمي، إذ أن تعلم الموروث اللغوي من شأنه تعزيز المجتمعات الراغبة في حفظ هويتها الثقافية والاحتفاء بها محلياً وعالمياً. إن معرفة الأصول اللغوية والثقافية للأشخاص لها آثار صحية إيجابية مهمة، مما يساهم في صحة المجتمع ككل على المدى البعيد.","ليس من الضروري أن توَثق اللغات المهددة بالانقراض وتحفظ بطريقة علمية فحسب، بل كذلك من منظور تعليمي، إذ أن تعلم الموروث اللغوي من شأنه تعزيز المجتمعات الراغبة في حفظ هويتها الثقافية والاحتفاء بها محلياً وعالمياً. إن معرفة الأصول اللغوية والثقافية للأشخاص لها آثار صحية إيجابية مهمة، مما يساهم في صحة المجتمع ككل على المدى البعيد.","FALSE","इतना ही नहीं यह वैज्ञानिक रूप से दस्तावेज़ के लिए महत्वपूर्ण है और खतरे में भाषाओं की रक्षा, लेकिन एक शैक्षिक दृष्टि से, किसी के सीखने विरासत भाषाई समुदायों जो संरक्षण के लिए कामना करते हैं और उनकी सांस्कृतिक पहचान का जश्न मनाने के लिए एक बढ़ावा, स्थानीय के साथ ही अंतरराष्ट्रीय स्तर पर है। किसी के भाषाई और सांस्कृतिक उत्पत्ति के बारे में जानते हुए भी महत्वपूर्ण है, सकारात्मक स्वास्थ्य को प्रभावित करता है, और यह बेहतर लंबी अवधि में समुदाय की भलाई के लिए अनुवाद।","लुप्तप्राय भाषाओं को ना केवल वैज्ञानिक दृष्टिकोण से प्रलेख और संरक्षित करना जरुरी है बल्कि शैक्षणिक दृष्टिकोण से पारम्परिक भाषाओं को सिखने से समुदाय के लोगों को प्रोत्साहन मिलता है; वे जो, अपने भाषाओं और गौरवमय सांस्कृतिक पहचान को स्थानीय एवं अंतरराष्ट्रीय स्तर पर संरक्षित रखने की कामना करते हैं । मातृ भाषा और अपनी सांस्कृतिक उत्पत्ति का ज्ञान रखने से जीवन में सकरात्मक प्रभाव पड़ता है और इससे लम्बे समय तक समुदाय के लोग अपने हित को उचित रूप से व्यक्त कर सकते है।","लुप्तप्राय भाषाओं को ना केवल वैज्ञानिक दृष्टिकोण से प्रलेख और संरक्षित करना जरुरी है बल्कि शैक्षणिक दृष्टिकोण से पारम्परिक भाषाओं को सिखने से समुदाय के लोगों को प्रोत्साहन मिलता है; वे जो, अपने भाषाओं और गौरवमय सांस्कृतिक पहचान को स्थानीय एवं अंतरराष्ट्रीय स्तर पर संरक्षित रखने की कामना करते हैं । मातृ भाषा और अपनी सांस्कृतिक उत्पत्ति का ज्ञान रखने से जीवन में सकरात्मक प्रभाव पड़ता है और इससे लम्बे समय तक समुदाय के लोग अपने हित को उचित रूप से व्यक्त कर सकते है।","TRUE","নেই শুধু এটা বৈজ্ঞানিকভাবেও দস্তাবেজে গুরুত্বপূর্ণ এবং বিপন্ন ভাষায় সংরক্ষণ, কিন্তু একটি শিক্ষাগত দৃষ্টিকোণ থেকে, নিজের শেখার ঐতিহ্য ভাষা সম্প্রদায়ের যারা সংরক্ষণ করতে ইচ্ছুক এবং তাদের সাংস্কৃতিক পরিচয় উদযাপন জন্য একটি সাহায্য, স্থানীয়ভাবে সেইসাথে আন্তর্জাতিকভাবে হয়। একজনের ভাষাগত ও সাংস্কৃতিক উদ্ভব সম্পর্কে জানা গুরুত্বপূর্ণ ইতিবাচক স্বাস্থ্যগত প্রভাবের আছে, এবং এটা উত্তম দীর্ঘমেয়াদী সম্প্রদায়ের মঙ্গল অনুবাদ।","","নেই শুধু এটা বৈজ্ঞানিকভাবেও দস্তাবেজে গুরুত্বপূর্ণ এবং বিপন্ন ভাষায় সংরক্ষণ, কিন্তু একটি শিক্ষাগত দৃষ্টিকোণ থেকে, নিজের শেখার ঐতিহ্য ভাষা সম্প্রদায়ের যারা সংরক্ষণ করতে ইচ্ছুক এবং তাদের সাংস্কৃতিক পরিচয় উদযাপন জন্য একটি সাহায্য, স্থানীয়ভাবে সেইসাথে আন্তর্জাতিকভাবে হয়। একজনের ভাষাগত ও সাংস্কৃতিক উদ্ভব সম্পর্কে জানা গুরুত্বপূর্ণ ইতিবাচক স্বাস্থ্যগত প্রভাবের আছে, এবং এটা উত্তম দীর্ঘমেয়াদী সম্প্রদায়ের মঙ্গল অনুবাদ।","FALSE","ଏହା ନୁହେଁ କେବଳ scientifically ଡକ୍ୟୁମେଣ୍ଟକୁ ଗୁରୁତ୍ଵପୂର୍ଣ୍ଣ ଅଟେ ଏବଂ ବିରଳ ଭାଷା ସଂରକ୍ଷିତ, କିନ୍ତୁ ଶିକ୍ଷାନୁଷ୍ଠାନ standpoint ରୁ, ଶିକ୍ଷାଗତ ଗୋଟିଏ ର ଅଧିକାର ଭାଷା କିଏ conserve କୁ ଇଚ୍ଛା ଏବଂ ସେମାନଙ୍କର ସାଂସ୍କୃତିକ ପରିଚୟ ପାଳନ ସମ୍ପ୍ରଦାୟଗୁଡିକ ପାଇଁ ଏକ ଉପରକୁ ଉଠାଇବା, ଭାବରେ ଆନ୍ତର୍ଜାତୀୟ ହେଉଛି ସ୍ଥାନୀୟ ଭାବରେ ଭଲ। ଗୋଟିଏ ର linguistic ଏବଂ ସାଂସ୍କୃତିକ ମୌଳିକ ବିଷୟରେ ଜାଣି ଉଲ୍ଲେଖନୀୟ, ସକାରାତ୍ମକ ସ୍ଵାସ୍ଥ୍ୟ ପ୍ରଭାବ ଅଛି, ଏବଂ ଏହା ଦୀର୍ଘମିଆଦି ସମ୍ପ୍ରଦାୟର ଭଲ ଭଲ-ହେବା ପାଇଁ ଅନୁବାଦ।","","ଏହା ନୁହେଁ କେବଳ scientifically ଡକ୍ୟୁମେଣ୍ଟକୁ ଗୁରୁତ୍ଵପୂର୍ଣ୍ଣ ଅଟେ ଏବଂ ବିରଳ ଭାଷା ସଂରକ୍ଷିତ, କିନ୍ତୁ ଶିକ୍ଷାନୁଷ୍ଠାନ standpoint ରୁ, ଶିକ୍ଷାଗତ ଗୋଟିଏ ର ଅଧିକାର ଭାଷା କିଏ conserve କୁ ଇଚ୍ଛା ଏବଂ ସେମାନଙ୍କର ସାଂସ୍କୃତିକ ପରିଚୟ ପାଳନ ସମ୍ପ୍ରଦାୟଗୁଡିକ ପାଇଁ ଏକ ଉପରକୁ ଉଠାଇବା, ଭାବରେ ଆନ୍ତର୍ଜାତୀୟ ହେଉଛି ସ୍ଥାନୀୟ ଭାବରେ ଭଲ। ଗୋଟିଏ ର linguistic ଏବଂ ସାଂସ୍କୃତିକ ମୌଳିକ ବିଷୟରେ ଜାଣି ଉଲ୍ଲେଖନୀୟ, ସକାରାତ୍ମକ ସ୍ଵାସ୍ଥ୍ୟ ପ୍ରଭାବ ଅଛି, ଏବଂ ଏହା ଦୀର୍ଘମିଆଦି ସମ୍ପ୍ରଦାୟର ଭଲ ଭଲ-ହେବା ପାଇଁ ଅନୁବାଦ।","FALSE","","FALSE","Это не только важно с научной точки документа и сохранение исчезающих языков, а с образовательной точки зрения, изучение языка своего наследия является стимулом для общин, которые хотят сохранить и праздновать свою культурную самобытность, на местном уровне, а также на международном уровне. Зная о своих языковых и культурных истоках имеют значительное позитивное воздействие на здоровье человека, и это приводит к более благосостоянию общины в долгосрочной перспективе.","Документация и сохранение исчезающих языков важны не только для научных, но и для образовательных целей, ведь изучение эритажного языка является стимулом для сообществ, желающих сохранить и укрепить свою культурную самобытность как на местном, так и на международном уровнях. Знания о своей языковой и культурной принадлежности очень важны для психического здоровья человека, и в долгосрочной перспективе это укрепляет благосостояние всего сообщества.","Документация и сохранение исчезающих языков важны не только для научных, но и для образовательных целей, ведь изучение эритажного языка является стимулом для сообществ, желающих сохранить и укрепить свою культурную самобытность как на местном, так и на международном уровнях. Знания о своей языковой и культурной принадлежности очень важны для психического здоровья человека, и в долгосрочной перспективе это укрепляет благосостояние всего сообщества.","TRUE","它不仅是对科学的重要文件和保存濒危语言,而是从教育的角度看,学习一个人的遗产语言是谁希望保护和庆祝他们的文化身份的社区提振,本地以及国际。了解关于一个人的语言和文化渊源有显著的,积极健康的影响,而这会带来更好的福祉,社会的长远。","","它不仅是对科学的重要文件和保存濒危语言,而是从教育的角度看,学习一个人的遗产语言是谁希望保护和庆祝他们的文化身份的社区提振,本地以及国际。了解关于一个人的语言和文化渊源有显著的,积极健康的影响,而这会带来更好的福祉,社会的长远。","FALSE","Ba wai kawai yake da muhimmanci a kimiyance daftarin aiki da kuma kiyaye miyagun harsuna, amma daga wani ilimi bisa, koyo daya ta al'adunmu harshe ne mai goyon baya ga al'ummomin da suke so su kare kuma ka yi tasbĩhi da al'adunsu da, gida, kazalika da waje ba. Sanin game da daya ta bangaren ilimin harsuna da al'adu asalin yana gagarumin, m kiwon lafiya tasirin, da kuma wannan fassara ga mafi alheri daga cikin al'umma a cikin dogon lokacin da.","","Ba wai kawai yake da muhimmanci a kimiyance daftarin aiki da kuma kiyaye miyagun harsuna, amma daga wani ilimi bisa, koyo daya ta al'adunmu harshe ne mai goyon baya ga al'ummomin da suke so su kare kuma ka yi tasbĩhi da al'adunsu da, gida, kazalika da waje ba. Sanin game da daya ta bangaren ilimin harsuna da al'adu asalin yana gagarumin, m kiwon lafiya tasirin, da kuma wannan fassara ga mafi alheri daga cikin al'umma a cikin dogon lokacin da.","FALSE","Tidak hanya itu penting untuk dokumen ilmiah dan melestarikan bahasa terancam punah, tetapi dari sudut pandang pendidikan, bahasa warisan belajar seseorang merupakan dorongan bagi masyarakat yang ingin melestarikan dan merayakan identitas budaya mereka, secara lokal maupun internasional. Mengetahui tentang seseorang asal bahasa dan budaya memiliki signifikan, dampak kesehatan yang positif, dan ini diterjemahkan menjadi lebih baik kesejahteraan masyarakat di jangka panjang.","Tidak hanya bahwa bahasa yang tidak aman dan terancam punah penting untuk didokumentasikan secara ilmiah dan dilestarikan, tetapi dari sudut pandang pendidikan, mempelajari bahasa yang diwariskan merupakan dorongan bagi masyarakat pengguna bahasa atau komunitas bahasa untuk melestarikan dan memuliakan identitas budaya mereka, baik secara lokal maupun internasional. Mengetahui tentang asal mula budaya dan kebahasaan seseorang memiliki dampak kesehatan yang positif dan signifikan, dan ini dapat diterjemahkan sebagai kesejahteraan yang lebih baik bagi komunitas bahasa dalam jangka panjang.","Tidak hanya bahwa bahasa yang tidak aman dan terancam punah penting untuk didokumentasikan secara ilmiah dan dilestarikan, tetapi dari sudut pandang pendidikan, mempelajari bahasa yang diwariskan merupakan dorongan bagi masyarakat pengguna bahasa atau komunitas bahasa untuk melestarikan dan memuliakan identitas budaya mereka, baik secara lokal maupun internasional. Mengetahui tentang asal mula budaya dan kebahasaan seseorang memiliki dampak kesehatan yang positif dan signifikan, dan ini dapat diterjemahkan sebagai kesejahteraan yang lebih baik bagi komunitas bahasa dalam jangka panjang.","TRUE","Siyo tu ni muhimu kwa hati kisayansi na kuhifadhi lugha za hatarini, lakini kwa upande wa elimu, lugha ya kujifunza ya mtu urithi ni kuongeza kwa jamii ambao wanataka kuhifadhi na kusherehekea utambulisho wao wa kitamaduni, ndani ya nchi na pia kimataifa. Kujua kuhusu asili ya mtu wa lugha na utamaduni ina muhimu, chanya athari za afya, na hii inasababisha na bora ustawi wa jamii kwa muda mrefu.","Sio tu kwamba ni muhimu kuweka kumbukumbu kisayansi na kuhifadhi lugha zilizo hatarini, lakini kwa mtazamo wa kielimu, kujifunza lugha ya asili ya mtu ni kichocheo kwa jamii ambazo zinataka kuhifadhi na kusherehekea utambulisho wao wa kitamaduni, baina yao wenyewe na hata watu wa mataifa mengine. Kujua asili lugha na utamaduni wa mtu kuna umuhimu mkubwa na ina matokeo chanya ya kiafya, na hii huwezesha ustawi bora wa jamii kwa muda mrefu.","Sio tu kwamba ni muhimu kuweka kumbukumbu kisayansi na kuhifadhi lugha zilizo hatarini, lakini kwa mtazamo wa kielimu, kujifunza lugha ya asili ya mtu ni kichocheo kwa jamii ambazo zinataka kuhifadhi na kusherehekea utambulisho wao wa kitamaduni, baina yao wenyewe na hata watu wa mataifa mengine. Kujua asili lugha na utamaduni wa mtu kuna umuhimu mkubwa na ina matokeo chanya ya kiafya, na hii huwezesha ustawi bora wa jamii kwa muda mrefu.","TRUE","ብቻ ነው በሳይንስ ሰነድ አስፈላጊ ነው እና አደጋ ቋንቋዎች ለማቆየት, ነገር ግን የትምህርት አንጻር, መማር ሰው ቅርስ ቋንቋ ሆኖ በዓለም አቀፍ ደረጃ በአካባቢ እንዲሁም, ለመቆጠብ ከፈለጉ እና ባህላዊ ማንነት ለማክበር ያላቸው ማህበረሰቦች የተለገሰ ነው. አንድ ዎቹ የቋንቋና የባህል መገኛ ስለ ማወቅህ ትርጉም, አዎንታዊ የጤና ተፅዕኖ አለው, ይህ የተሻለ የረጅም ጊዜ ውስጥ ማህበረሰብ በሚገባ-በመሆን ወደ ይተረጉመዋል.","","ብቻ ነው በሳይንስ ሰነድ አስፈላጊ ነው እና አደጋ ቋንቋዎች ለማቆየት, ነገር ግን የትምህርት አንጻር, መማር ሰው ቅርስ ቋንቋ ሆኖ በዓለም አቀፍ ደረጃ በአካባቢ እንዲሁም, ለመቆጠብ ከፈለጉ እና ባህላዊ ማንነት ለማክበር ያላቸው ማህበረሰቦች የተለገሰ ነው. አንድ ዎቹ የቋንቋና የባህል መገኛ ስለ ማወቅህ ትርጉም, አዎንታዊ የጤና ተፅዕኖ አለው, ይህ የተሻለ የረጅም ጊዜ ውስጥ ማህበረሰብ በሚገባ-በመሆን ወደ ይተረጉመዋል.","FALSE","Không chỉ là nó quan trọng đối với tài liệu một cách khoa học và bảo tồn ngôn ngữ đang bị đe dọa, nhưng từ một quan điểm giáo dục, ngôn ngữ di sản học tập của một người là một sự thúc đẩy cho các cộng đồng có nhu cầu bảo tồn và tôn vinh bản sắc văn hóa của họ, trong nước cũng như quốc tế. Biết về nguồn gốc ngôn ngữ và văn hóa của một người có, ảnh hưởng sức khỏe tích cực đáng kể, và điều này dịch tốt hơn hạnh phúc của cộng đồng trong dài hạn.","","Không chỉ là nó quan trọng đối với tài liệu một cách khoa học và bảo tồn ngôn ngữ đang bị đe dọa, nhưng từ một quan điểm giáo dục, ngôn ngữ di sản học tập của một người là một sự thúc đẩy cho các cộng đồng có nhu cầu bảo tồn và tôn vinh bản sắc văn hóa của họ, trong nước cũng như quốc tế. Biết về nguồn gốc ngôn ngữ và văn hóa của một người có, ảnh hưởng sức khỏe tích cực đáng kể, và điều này dịch tốt hơn hạnh phúc của cộng đồng trong dài hạn.","FALSE","ไม่เพียง แต่มันเป็นสิ่งสำคัญที่เอกสารทางวิทยาศาสตร์และรักษาภาษาที่ใกล้สูญพันธุ์ แต่จากมุมมองการศึกษาภาษามรดกหนึ่งในการเรียนรู้คือการเพิ่มให้กับชุมชนที่มีความประสงค์ที่จะอนุรักษ์และเฉลิมฉลองเอกลักษณ์ทางวัฒนธรรมของพวกเขาในประเทศเช่นเดียวกับประเทศ รู้เกี่ยวกับต้นกำเนิดหนึ่งของภาษาและวัฒนธรรมมีนัยสำคัญผลกระทบต่อสุขภาพในเชิงบวกและนี่แปลว่าจะดีกว่าที่เป็นอยู่ที่ดีของชุมชนในระยะยาว","","ไม่เพียง แต่มันเป็นสิ่งสำคัญที่เอกสารทางวิทยาศาสตร์และรักษาภาษาที่ใกล้สูญพันธุ์ แต่จากมุมมองการศึกษาภาษามรดกหนึ่งในการเรียนรู้คือการเพิ่มให้กับชุมชนที่มีความประสงค์ที่จะอนุรักษ์และเฉลิมฉลองเอกลักษณ์ทางวัฒนธรรมของพวกเขาในประเทศเช่นเดียวกับประเทศ รู้เกี่ยวกับต้นกำเนิดหนึ่งของภาษาและวัฒนธรรมมีนัยสำคัญผลกระทบต่อสุขภาพในเชิงบวกและนี่แปลว่าจะดีกว่าที่เป็นอยู่ที่ดีของชุมชนในระยะยาว","FALSE","មិនតែប៉ុណ្ណោះវាគឺជាការសំខាន់ក្នុងការរក្សាឯកសារវិទ្យាសាស្រ្តនិងភាសាជិតផុតពូជនោះទេប៉ុន្តែមកពីទស្សនៈអប់រំ, ភាសាបេតិកភ័ណ្ឌមួយគឺការជម្រុញការរៀនរបស់សហគមន៍ដែលមានបំណងសម្រាប់ការដើម្បីការអភិរក្សនិងការអបអរអត្តសញ្ញាណវប្បធម៍មួយក្នុងស្រុកដូចជាអន្តរជាតិ។ ការដឹងអំពីប្រភពដើមភាសានិងវប្បធម៍របស់មួយដែលមានសារៈសំខាន់ផលប៉ះពាល់សុខភាពជាវិជ្ជមាននិងការបកស្រាយនេះទៅល្អប្រសើរជាងមុនសុខុមាលភាពរបស់សហគមន៍នៅក្នុងរយៈពេលវែង។","","មិនតែប៉ុណ្ណោះវាគឺជាការសំខាន់ក្នុងការរក្សាឯកសារវិទ្យាសាស្រ្តនិងភាសាជិតផុតពូជនោះទេប៉ុន្តែមកពីទស្សនៈអប់រំ, ភាសាបេតិកភ័ណ្ឌមួយគឺការជម្រុញការរៀនរបស់សហគមន៍ដែលមានបំណងសម្រាប់ការដើម្បីការអភិរក្សនិងការអបអរអត្តសញ្ញាណវប្បធម៍មួយក្នុងស្រុកដូចជាអន្តរជាតិ។ ការដឹងអំពីប្រភពដើមភាសានិងវប្បធម៍របស់មួយដែលមានសារៈសំខាន់ផលប៉ះពាល់សុខភាពជាវិជ្ជមាននិងការបកស្រាយនេះទៅល្អប្រសើរជាងមុនសុខុមាលភាពរបស់សហគមន៍នៅក្នុងរយៈពេលវែង។","FALSE","ບໍ່ພຽງແຕ່ມັນເປັນສິ່ງສໍາຄັນເອກະສານວິທະຍາສາດແລະປົກປັກຮັກສາພາສາໃກ້ຈະສູນພັນ, ແຕ່ຈາກ standpoint ການສຶກສາ, ພາສາມໍລະດົກຫນຶ່ງຮຽນແມ່ນສະຫນັບສະຫນູນສໍາລັບຊຸມຊົນທີ່ຕ້ອງການທີ່ຈະອະນຸລັກແລະສະເຫຼີມສະຫຼອງເອກະລັກວັດທະນະທໍາຂອງເຂົາເຈົ້າເປັນ, ທ້ອງຖິ່ນເຊັ່ນດຽວກັນກັບລະດັບສາກົນ. ຮູ້ຈັກປະມານຫນຶ່ງຂອງຕົ້ນກໍາເນີດມາພາສາແລະວັດທະນະທໍາມີຄວາມສໍາຄັນ, ຜົນກະທົບຕໍ່ສຸຂະພາບໃນທາງບວກ, ແລະນີ້ຫມາຍເຖິງການທີ່ດີກວ່າສະຫວັດດີການຂອງຊຸມຊົນໃນໄລຍະຍາວ.","","ບໍ່ພຽງແຕ່ມັນເປັນສິ່ງສໍາຄັນເອກະສານວິທະຍາສາດແລະປົກປັກຮັກສາພາສາໃກ້ຈະສູນພັນ, ແຕ່ຈາກ standpoint ການສຶກສາ, ພາສາມໍລະດົກຫນຶ່ງຮຽນແມ່ນສະຫນັບສະຫນູນສໍາລັບຊຸມຊົນທີ່ຕ້ອງການທີ່ຈະອະນຸລັກແລະສະເຫຼີມສະຫຼອງເອກະລັກວັດທະນະທໍາຂອງເຂົາເຈົ້າເປັນ, ທ້ອງຖິ່ນເຊັ່ນດຽວກັນກັບລະດັບສາກົນ. ຮູ້ຈັກປະມານຫນຶ່ງຂອງຕົ້ນກໍາເນີດມາພາສາແລະວັດທະນະທໍາມີຄວາມສໍາຄັນ, ຜົນກະທົບຕໍ່ສຸຂະພາບໃນທາງບວກ, ແລະນີ້ຫມາຍເຖິງການທີ່ດີກວ່າສະຫວັດດີການຂອງຊຸມຊົນໃນໄລຍະຍາວ.","FALSE","Bukan sahaja ia penting untuk dokumen saintifik dan memelihara bahasa terancam, tetapi dari sudut pendidikan, bahasa warisan satu pembelajaran adalah rangsangan bagi masyarakat yang ingin memulihara dan meraikan identiti budaya mereka, di pasaran tempatan dan antarabangsa. Mengetahui tentang asal-usul bahasa dan budaya seseorang mempunyai, kesan kesihatan yang positif yang ketara, dan ini diterjemahkan kepada lebih baik kesejahteraan masyarakat dalam jangka panjang.","Mendokumen bahasa terancam secara saintifik dan memeliharanya memang penting. Dari sudut pendidikan pula, mempelajari bahasa warisan merupakan suatu perangsang bagi para masyarakat yang ingin memulihara dan meraikan identiti budaya mereka, baik secara tempatan mahupun antarabangsa. Mengetahui tentang asal-usul bahasa dan budaya sendiri mempunyai kesan kesihatan positif yang ketara, dan ini dapat diterjemahkan kepada kesejahteraan masyarakat yang lebih baik pada jangka panjang.","Mendokumen bahasa terancam secara saintifik dan memeliharanya memang penting. Dari sudut pendidikan pula, mempelajari bahasa warisan merupakan suatu perangsang bagi para masyarakat yang ingin memulihara dan meraikan identiti budaya mereka, baik secara tempatan mahupun antarabangsa. Mengetahui tentang asal-usul bahasa dan budaya sendiri mempunyai kesan kesihatan positif yang ketara, dan ini dapat diterjemahkan kepada kesejahteraan masyarakat yang lebih baik pada jangka panjang.","TRUE","Hindi lamang mahalaga na siyentipikong dokumento at mapanatili ang mga endangered na wika, ngunit mula sa isang pang-edukasyon na pananaw, ang pag-aaral ng wikang pamana ay isang tulong para sa mga komunidad na nagnanais na mag-imbak at ipagdiwang ang kanilang kultural na pagkakakilanlan, lokal at internasyonal. Ang kaalaman tungkol sa linguistic at kultural na pinagmulan ng isa ay may makabuluhang, positibong epekto sa kalusugan, at isinasalin ito sa mas mahusay na kagalingan ng komunidad sa pangmatagalan.","","Hindi lamang mahalaga na siyentipikong dokumento at mapanatili ang mga endangered na wika, ngunit mula sa isang pang-edukasyon na pananaw, ang pag-aaral ng wikang pamana ay isang tulong para sa mga komunidad na nagnanais na mag-imbak at ipagdiwang ang kanilang kultural na pagkakakilanlan, lokal at internasyonal. Ang kaalaman tungkol sa linguistic at kultural na pinagmulan ng isa ay may makabuluhang, positibong epekto sa kalusugan, at isinasalin ito sa mas mahusay na kagalingan ng komunidad sa pangmatagalan.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"What is Living Tongues Institute for Endangered Languages?","","","about","what_is_LT","about.what_is_LT","¿Qué es la Vida Instituto de Lenguas para las lenguas en peligro?","¿Qué es el Living Tongues Institute for Endangered Languages?","¿Qué es el Living Tongues Institute for Endangered Languages?","TRUE","O que está vivendo Instituto Tongues para Línguas Ameaçadas?","O que é Living Institute for Endagered Languages? ","O que é Living Institute for Endagered Languages? ","TRUE","Qu'est-ce que la vie Institut Tongues pour les langues en voie de disparition?","Que fait l'Institut Living Tongues?","Que fait l'Institut Living Tongues?","TRUE","מהו מכון לשונות חיים עבור שפות בסכנת הכחדה?","מהו מכון לשונות חיים עבור שפות בסכנת הכחדה (Living Tongues Institue for Endangered Languages)?","מהו מכון לשונות חיים עבור שפות בסכנת הכחדה (Living Tongues Institue for Endangered Languages)?","TRUE","ما هو معهد المعيشة الألسنة عن اللغات المهددة بالانقراض؟","ماهو معهد ليفنغ تانغز للغات المهددة بالانقراض؟","ماهو معهد ليفنغ تانغز للغات المهددة بالانقراض؟","FALSE","लुप्तप्राय भाषाओं के लिए लिविंग जीभ संस्थान क्या है?"," लुप्तप्राय भाषाओं के लिए लिविंग टंग्स संस्था क्या करती है?"," लुप्तप्राय भाषाओं के लिए लिविंग टंग्स संस्था क्या करती है?","TRUE","লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউট কী?","","লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউট কী?","FALSE","ବିରଳ ଭାଷା ପାଇଁ Living ଭାଷା ପ୍ରତିଷ୍ଠାନ କଣ?","","ବିରଳ ଭାଷା ପାଇଁ Living ଭାଷା ପ୍ରତିଷ୍ଠାନ କଣ?","FALSE","","FALSE","Что такое Living Tongues Институт вымирающих языков?","Что такое Институт поддержки исчезающих языков Living Tongues?","Что такое Институт поддержки исчезающих языков Living Tongues?","TRUE","什么是濒危语言振兴协会?","","什么是濒危语言振兴协会?","FALSE","Mene ne Living Harsuna Institute for miyagun Harsuna?","","Mene ne Living Harsuna Institute for miyagun Harsuna?","FALSE","Apa Living Tongues Institute for Endangered Languages?","Apa itu Living Tongues Institute for Endangered Languages?","Apa itu Living Tongues Institute for Endangered Languages?","TRUE","Living Tongues Taasisi ya hatarini Lugha ni nini?","Je! Taasisi ya Living Tongues inayoshughulika na lugha zilizo hatarini kutoweka ni nini?","Je! Taasisi ya Living Tongues inayoshughulika na lugha zilizo hatarini kutoweka ni nini?","TRUE","የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም ምንድን ነው?","","የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም ምንድን ነው?","FALSE","Living Lưỡi Viện Ngôn ngữ nguy cơ tuyệt chủng là gì?","","Living Lưỡi Viện Ngôn ngữ nguy cơ tuyệt chủng là gì?","FALSE","ลิฟวิ่งลิ้นสถาบันภาษาที่ใกล้สูญพันธุ์คืออะไร?","","ลิฟวิ่งลิ้นสถาบันภาษาที่ใกล้สูญพันธุ์คืออะไร?","FALSE","វិទ្យាស្ថានអណ្តាតការរស់នៅសម្រាប់សត្វព្រៃជិតផុតភាសាជាអ្វី?","","វិទ្យាស្ថានអណ្តាតការរស់នៅសម្រាប់សត្វព្រៃជិតផុតភាសាជាអ្វី?","FALSE","ດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາແມ່ນຫຍັງ?","","ດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາແມ່ນຫຍັງ?","FALSE","Apa yang Living Tongues Institut Endangered Languages?","Apakah Institut Living Tongues bagi Bahasa Terancam?","Apakah Institut Living Tongues bagi Bahasa Terancam?","TRUE","Ano ang buhay na mga wika Institute para sa mga endangered na wika?","","Ano ang buhay na mga wika Institute para sa mga endangered na wika?","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Living Tongues Institute for Endangered Languages is a leading research organization dedicated to documenting endangered languages. Founded by linguist Dr. Gregory D. S. Anderson, Living Tongues Institute is a non-profit research institute based in Salem, Oregon, with remote researchers and collaborators located around the globe.","","","about","leading_research","about.leading_research","Living Tongues Institute for Endangered Languages ​​es una organización líder de investigación dedicado a la documentación de lenguas en peligro de extinción. Fundada por el lingüista Dr. Gregory D. S. Anderson, Living Tongues Institute es un instituto de investigación sin fines de lucro con sede en Salem, Oregon, con investigadores y colaboradores remotos ubicados en todo el mundo.","El instituto Living Tongues es una organización de investigación de renombre mundial dedicada a la documentación de las lenguas en peligro. Fundada por el lingüista Dr. Gregory D. S. Anderson, Living Tongues es un instituto de investigación sin fines de lucro con sede en Salem, Oregon, con investigadores y colaboradores remotos ubicados alrededor del mundo.","El instituto Living Tongues es una organización de investigación de renombre mundial dedicada a la documentación de las lenguas en peligro. Fundada por el lingüista Dr. Gregory D. S. Anderson, Living Tongues es un instituto de investigación sin fines de lucro con sede en Salem, Oregon, con investigadores y colaboradores remotos ubicados alrededor del mundo.","TRUE","Viver Institute Tongues para Línguas Ameaçadas é uma organização líder de pesquisa dedicado a documentar línguas ameaçadas de extinção. Fundada pelo lingüista Dr. Gregory D. S. Anderson, Vida Tongues Institute é um instituto de pesquisa sem fins lucrativos com sede em Salem, Oregon, com pesquisadores remotos e colaboradores localizados em todo o globo.","Living Institute for Endagered Languages é uma instituição de pesquisa líder na investigação que se dedica à documentação de línguas em perigo de extinção.","Living Institute for Endagered Languages é uma instituição de pesquisa líder na investigação que se dedica à documentação de línguas em perigo de extinção.","TRUE","Living Institut Tongues pour les langues en danger est une organisation de recherche dédié à la documentation des langues en danger. Fondé par le Dr linguiste Gregory D. S. Anderson, Institut de vie est un Tongues institut de recherche à but non lucratif basée à Salem, Oregon, avec des chercheurs et des collaborateurs distants situés dans le monde entier.","Le Living Tongues Institute for Endangered Languages est un organisme de recherche de premier plan qui se consacre à la documentation des langues en voie de disparition. Fondé par le linguiste Dr Gregory D. S. Anderson, le Living Tongues Institute est une organisation à but non lucratif basé à Salem, Oregon, avec des chercheurs et des collaborateurs à distance situés dans le monde entier.","Le Living Tongues Institute for Endangered Languages est un organisme de recherche de premier plan qui se consacre à la documentation des langues en voie de disparition. Fondé par le linguiste Dr Gregory D. S. Anderson, le Living Tongues Institute est une organisation à but non lucratif basé à Salem, Oregon, avec des chercheurs et des collaborateurs à distance situés dans le monde entier.","TRUE","חיים לשונות מכון השפות בסכנת הכחדה הוא ארגון מחקר מוביל מוקדש לתיעוד שפה בסכנת הכחדה. נוסד על ידי בלשן ד""ר גרגורי ד ס אנדרסון, מכון לשונות חיים הוא מכון מחקר ללא כוונת רווח שבסיסו סאלם, אורגון, עם חוקרים ומשתפי פעולה מרחוק הממוקמים ברחבי הגלובוס.","מכון לשונות חיים עבור שפות בסכנת הכחדה (Living Tongues Institute for Endangered Languages) הוא ארגון מחקר מוביל, המוקדש לתיעוד שפות בסכנת הכחדה. המכון, אשר נוסד על ידי ד״ר גרגורי ד. ס. אנדרסון, הינו ארגון מחקר ללא מטרת רווח. המכון מבוסס בסיילם, אורגון (ארצות הברית), ומונה חוקרים ומתנדבים מסביב לעולם.","מכון לשונות חיים עבור שפות בסכנת הכחדה (Living Tongues Institute for Endangered Languages) הוא ארגון מחקר מוביל, המוקדש לתיעוד שפות בסכנת הכחדה. המכון, אשר נוסד על ידי ד״ר גרגורי ד. ס. אנדרסון, הינו ארגון מחקר ללא מטרת רווח. המכון מבוסס בסיילם, אורגון (ארצות הברית), ומונה חוקרים ומתנדבים מסביב לעולם.","TRUE","معهد المعيشة الألسنة لغات المهددة هي منظمة بحثية رائدة مخصصة لتوثيق اللغات المهددة بالانقراض. أسسها اللغوي الدكتور غريغوري D. S. أندرسون، معهد اللغات الحية هو معهد أبحاث غير ربحية مقرها في مدينة سالم بولاية أوريغون، مع الباحثين عن بعد والمتعاونين تقع في جميع أنحاء العالم.","إن معهد ليفنغ تانغز للغات المهددة بالانقاراض هو منظمة بحثية رائدة ومكرسة لتوثيق اللغات المهددة بالانقراض. وهو معهد أبحاث غير ربحي أُسس على يد كل من د. غريغوري آندرسون ود. ديفيد هاريسون في مدينة سالم في ولاية أوريغون، وينتسب للمعهد باحثون ومساهمون عن بعد من شتى أنحاء العالم.","إن معهد ليفنغ تانغز للغات المهددة بالانقاراض هو منظمة بحثية رائدة ومكرسة لتوثيق اللغات المهددة بالانقراض. وهو معهد أبحاث غير ربحي أُسس على يد كل من د. غريغوري آندرسون ود. ديفيد هاريسون في مدينة سالم في ولاية أوريغون، وينتسب للمعهد باحثون ومساهمون عن بعد من شتى أنحاء العالم.","FALSE","लुप्तप्राय भाषाओं के लिए लिविंग जीभ संस्थान एक अग्रणी अनुसंधान लुप्तप्राय भाषाओं का दस्तावेजीकरण करने के लिए समर्पित संगठन है। भाषाविद् डॉ ग्रेगरी डी एस एंडरसन द्वारा स्थापित, लिविंग जीभ संस्थान एक गैर लाभ अनुसंधान सलेम, ओरेगन में आधारित संस्थान, दूरस्थ शोधकर्ताओं और विश्व भर में स्थित सहयोगियों के साथ है।","लुप्तप्राय भाषाओं को संरक्षित करने के लिए लिविंग टंग्स संस्थान एक अग्रणी और समर्पितअनुसंधान संगठन है। भाषाविद डॉ. ग्रेगोरी डी. एस. एंडरसन द्वारा स्थापित लिविंग टंग्स संस्थान एक गैर-लाभकारी संस्था है जो सयुंक्त राज्य अमेरिका के ओरेगन प्रान्त के सेलम शहर में है और जिसके सुदूर शोधकर्ता और सहयोगी विश्व भर में शोधरत हैं।","लुप्तप्राय भाषाओं को संरक्षित करने के लिए लिविंग टंग्स संस्थान एक अग्रणी और समर्पितअनुसंधान संगठन है। भाषाविद डॉ. ग्रेगोरी डी. एस. एंडरसन द्वारा स्थापित लिविंग टंग्स संस्थान एक गैर-लाभकारी संस्था है जो सयुंक्त राज्य अमेरिका के ओरेगन प्रान्त के सेलम शहर में है और जिसके सुदूर शोधकर्ता और सहयोगी विश्व भर में शोधरत हैं।","TRUE","লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউট একটি নেতৃস্থানীয় গবেষণা বিপন্ন ভাষায় দলিল নিবেদিত সংস্থা। ভাষাবিজ্ঞানী ড গ্রেগরি ডি এস অ্যান্ডারসন দ্বারা প্রতিষ্ঠিত লিভিং মুখের ইনস্টিটিউট একটি অলাভজনক গবেষণা সালেম, অরেগন ভিত্তিক ইনস্টিটিউট, দূরবর্তী গবেষক এবং প্রায় সারা বিশ্ব অবস্থিত সহযোগীদের সাথে।","","লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউট একটি নেতৃস্থানীয় গবেষণা বিপন্ন ভাষায় দলিল নিবেদিত সংস্থা। ভাষাবিজ্ঞানী ড গ্রেগরি ডি এস অ্যান্ডারসন দ্বারা প্রতিষ্ঠিত লিভিং মুখের ইনস্টিটিউট একটি অলাভজনক গবেষণা সালেম, অরেগন ভিত্তিক ইনস্টিটিউট, দূরবর্তী গবেষক এবং প্রায় সারা বিশ্ব অবস্থিত সহযোগীদের সাথে।","FALSE","ବିରଳ ଭାଷା documenting ନ୍ଯସ୍ତ ଏକ ଅଗ୍ରଣୀ ଗବେଷଣା ସଂସ୍ଥା ଅଟେ ବିରଳ ଭାଷା ପାଇଁ ଜୀବିତ ଭାଷା ପ୍ରତିଷ୍ଠାନ। ଭାଷା ପଣ୍ଡିତ ଡଃ Gregory D. S. Anderson ପ୍ରତିଷ୍ଠାତା, Living ଭାଷା ପ୍ରତିଷ୍ଠାନ Salem, Oregon ରେ ଆଧାରିତ ଏକ ଅଣ-ଲାଭ ଗବେଷଣା ପ୍ରତିଷ୍ଠାନ, ବିଶ୍ଵରେ ଅବସ୍ଥିତ ସୁଦୂର researchers ଏବଂ ସହକର୍ମୀ ସହିତ ଅଛି।","","ବିରଳ ଭାଷା documenting ନ୍ଯସ୍ତ ଏକ ଅଗ୍ରଣୀ ଗବେଷଣା ସଂସ୍ଥା ଅଟେ ବିରଳ ଭାଷା ପାଇଁ ଜୀବିତ ଭାଷା ପ୍ରତିଷ୍ଠାନ। ଭାଷା ପଣ୍ଡିତ ଡଃ Gregory D. S. Anderson ପ୍ରତିଷ୍ଠାତା, Living ଭାଷା ପ୍ରତିଷ୍ଠାନ Salem, Oregon ରେ ଆଧାରିତ ଏକ ଅଣ-ଲାଭ ଗବେଷଣା ପ୍ରତିଷ୍ଠାନ, ବିଶ୍ଵରେ ଅବସ୍ଥିତ ସୁଦୂର researchers ଏବଂ ସହକର୍ମୀ ସହିତ ଅଛି।","FALSE","","FALSE","Living Tongues Институт вымирающих языков является ведущей научной организации, посвященное документирования исчезающих языков. Основанный лингвист доктор Грегори Д. С. Андерсон, Living Tongues Институт является научно-исследовательским институтом некоммерческого основанным в городе Салем, штат Орегон, с удаленными исследователями и сотрудниками, расположенных по всему земному шару.","Институт поддержки исчезающих языков Living Tongues является ведущей научной организацией, которая занимается документацией угрожаемых языков. Основанный лингвистом, доктором Грегори Д. С. Андерсоном, Институт Living Tongues - это некоммерческая научно-исследовательская организация, расположенная в г. Салем, штат Орегон, с удаленными исследователями и сотрудниками, расположенными по всему земному шару.","Институт поддержки исчезающих языков Living Tongues является ведущей научной организацией, которая занимается документацией угрожаемых языков. Основанный лингвистом, доктором Грегори Д. С. Андерсоном, Институт Living Tongues - это некоммерческая научно-исследовательская организация, расположенная в г. Салем, штат Орегон, с удаленными исследователями и сотрудниками, расположенными по всему земному шару.","TRUE","濒危语言振兴协会是一家领先的研究机构,致力于记录濒危语言。生活方言研究所由语言学家格雷戈里D. S.安德森博士创立,是一个非营利性研究机构总部设在塞勒姆,俄勒冈州,与位于全球各地的远程研究人员和合作者。","","濒危语言振兴协会是一家领先的研究机构,致力于记录濒危语言。生活方言研究所由语言学家格雷戈里D. S.安德森博士创立,是一个非营利性研究机构总部设在塞勒姆,俄勒冈州,与位于全球各地的远程研究人员和合作者。","FALSE","Living Harsuna Cibiyar miyagun Harsunan ne a manyan bincike kungiyar sadaukar domin tattara bayanai miyagun harsuna. Kafa ta masanin ilimin harsuna Dr. Gregory D. S. Anderson, Living Harsuna Institute ne ba riba bincike institute tushen a Salem, Oregon, da m masu bincike da kuma hadin gwiwar dake ko'ina cikin duniya.","","Living Harsuna Cibiyar miyagun Harsunan ne a manyan bincike kungiyar sadaukar domin tattara bayanai miyagun harsuna. Kafa ta masanin ilimin harsuna Dr. Gregory D. S. Anderson, Living Harsuna Institute ne ba riba bincike institute tushen a Salem, Oregon, da m masu bincike da kuma hadin gwiwar dake ko'ina cikin duniya.","FALSE","Hidup Tongues Institute for Endangered Languages ​​adalah organisasi penelitian terkemuka yang didedikasikan untuk mendokumentasikan bahasa terancam punah. Didirikan oleh ahli bahasa Dr Gregory D. S. Anderson, Living Tongues Institute adalah sebuah lembaga penelitian non-profit yang berbasis di Salem, Oregon, dengan peneliti terpencil dan kolaborator terletak di seluruh dunia.","Living Tongue Institute for Endangered Language adalah lembaga riset terkemuka yang didedikasikan untuk mendokumentasikan bahasa yang terancam punah. Living Tongue Institut yang didirikan oleh Gregory D.S. Anderson, seorang ahli bahasa, merupakan sebuah lembaga penelitian nirlaba yang berpusat di kota Salem, Oregon, Amerika Serikat, dengan peneliti dan kolaborator yang berjauhan satu sama lain dan berdomisili di berbagai tempat di seluruh dunia.","Living Tongue Institute for Endangered Language adalah lembaga riset terkemuka yang didedikasikan untuk mendokumentasikan bahasa yang terancam punah. Living Tongue Institut yang didirikan oleh Gregory D.S. Anderson, seorang ahli bahasa, merupakan sebuah lembaga penelitian nirlaba yang berpusat di kota Salem, Oregon, Amerika Serikat, dengan peneliti dan kolaborator yang berjauhan satu sama lain dan berdomisili di berbagai tempat di seluruh dunia.","TRUE","Living Tongues Taasisi ya hatarini Lugha utafiti kuongoza shirika wakfu kwa kuandika lugha hatarini. Ilianzishwa na mwanaisimu Dr. Gregory D. S. Anderson, Living Tongues Institute ni yasiyo ya faida ya taasisi ya utafiti msingi katika Salem, Oregon, pamoja na watafiti mbali na washirika iko kote duniani.","Taasisi ya Living Tongues ya Lugha zilizo hatarini kutoweka ni shirika linaloongoza kwa utafiti lililojitolea kuweka kumbukumbu za lugha zilizo hatarini. Lilianzishwa na mtaalam wa lugha Dkt. Gregory D. S. Anderson na Living Tongues ni taasisi ya utafiti isiyo ya faida iliyoko Salem, Oregon, na ina watafiti na washirika wa mbali walioko kote ulimwenguni.","Taasisi ya Living Tongues ya Lugha zilizo hatarini kutoweka ni shirika linaloongoza kwa utafiti lililojitolea kuweka kumbukumbu za lugha zilizo hatarini. Lilianzishwa na mtaalam wa lugha Dkt. Gregory D. S. Anderson na Living Tongues ni taasisi ya utafiti isiyo ya faida iliyoko Salem, Oregon, na ina watafiti na washirika wa mbali walioko kote ulimwenguni.","TRUE","የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም አደጋ ቋንቋዎች በሰነድ የወሰኑ አንድ ታዋቂ የምርምር ድርጅት ነው. የቋንቋ ዶክተር ግሪጎሪ ዲ ኤስ አንደርሰን በ የተመሰረተው ሊቪንግ ተቋም በዓለም ዙሪያ የሚገኙ የርቀት ተመራማሪዎች እና ተባባሪዎች ጋር ሳሌም, ኦሪገን የተመሠረተ ለትርፍ ምርምር ተቋም ነው.","","የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም አደጋ ቋንቋዎች በሰነድ የወሰኑ አንድ ታዋቂ የምርምር ድርጅት ነው. የቋንቋ ዶክተር ግሪጎሪ ዲ ኤስ አንደርሰን በ የተመሰረተው ሊቪንግ ተቋም በዓለም ዙሪያ የሚገኙ የርቀት ተመራማሪዎች እና ተባባሪዎች ጋር ሳሌም, ኦሪገን የተመሠረተ ለትርፍ ምርምር ተቋም ነው.","FALSE","Living Lưỡi Viện Ngôn ngữ nguy cơ tuyệt chủng là một tổ chức nghiên cứu hàng đầu dành riêng cho tài liệu ngôn ngữ đang bị đe dọa. Được thành lập bởi nhà ngôn ngữ học Tiến sĩ Gregory D. S. Anderson, Living Lưỡi Viện là một viện nghiên cứu phi lợi nhuận có trụ sở tại Salem, Oregon, với các nhà nghiên cứu từ xa và cộng tác viên nằm trên toàn cầu.","","Living Lưỡi Viện Ngôn ngữ nguy cơ tuyệt chủng là một tổ chức nghiên cứu hàng đầu dành riêng cho tài liệu ngôn ngữ đang bị đe dọa. Được thành lập bởi nhà ngôn ngữ học Tiến sĩ Gregory D. S. Anderson, Living Lưỡi Viện là một viện nghiên cứu phi lợi nhuận có trụ sở tại Salem, Oregon, với các nhà nghiên cứu từ xa và cộng tác viên nằm trên toàn cầu.","FALSE","Living ลิ้นสถาบันภาษาที่ใกล้สูญพันธุ์เป็นองค์กรวิจัยชั้นนำที่ทุ่มเทให้กับการจัดเก็บเอกสารภาษาที่ใกล้สูญพันธุ์ ก่อตั้งขึ้นโดยนักภาษาศาสตร์ดร. เกรกอรีดีเอสแอนเดอ, การใช้ชีวิตลิ้นสถาบันเป็นสถาบันการวิจัยที่ไม่แสวงหากำไรที่อยู่ในเซเลมโอเรกอนกับนักวิจัยระยะไกลและการทำงานร่วมกันอยู่ทั่วโลก","","Living ลิ้นสถาบันภาษาที่ใกล้สูญพันธุ์เป็นองค์กรวิจัยชั้นนำที่ทุ่มเทให้กับการจัดเก็บเอกสารภาษาที่ใกล้สูญพันธุ์ ก่อตั้งขึ้นโดยนักภาษาศาสตร์ดร. เกรกอรีดีเอสแอนเดอ, การใช้ชีวิตลิ้นสถาบันเป็นสถาบันการวิจัยที่ไม่แสวงหากำไรที่อยู่ในเซเลมโอเรกอนกับนักวิจัยระยะไกลและการทำงานร่วมกันอยู่ทั่วโลก","FALSE","វិទ្យាស្ថានអណ្តាតការរស់នៅសម្រាប់សត្វព្រៃជិតផុតភាសាគឺជាអង្គការស្រាវជ្រាវនាំមុខគេឧទ្ទិសដល់ការចងក្រងឯកសារភាសាដែលជិតផុតពូជ។ បង្កើតឡើងដោយលោកបណ្ឌិតលោក Gregory ឃផ្នែកភាសារបស់ S. លោក Anderson, វិទ្យាស្ថានអណ្តាតការរស់នៅគឺជាវិទ្យាស្ថានស្រាវជ្រាវមិនរកប្រាក់ចំណេញមានមូលដ្ឋាននៅក្នុងក្រុងសាឡឹម, រដ្ឋ Oregon ជាមួយក្រុមអ្នកស្រាវជ្រាវពីចម្ងាយនិងអ្នកសហការដែលមានទីតាំងស្ថិតនៅជុំវិញពិភពលោក។","","វិទ្យាស្ថានអណ្តាតការរស់នៅសម្រាប់សត្វព្រៃជិតផុតភាសាគឺជាអង្គការស្រាវជ្រាវនាំមុខគេឧទ្ទិសដល់ការចងក្រងឯកសារភាសាដែលជិតផុតពូជ។ បង្កើតឡើងដោយលោកបណ្ឌិតលោក Gregory ឃផ្នែកភាសារបស់ S. លោក Anderson, វិទ្យាស្ថានអណ្តាតការរស់នៅគឺជាវិទ្យាស្ថានស្រាវជ្រាវមិនរកប្រាក់ចំណេញមានមូលដ្ឋាននៅក្នុងក្រុងសាឡឹម, រដ្ឋ Oregon ជាមួយក្រុមអ្នកស្រាវជ្រាវពីចម្ងាយនិងអ្នកសហការដែលមានទីតាំងស្ថិតនៅជុំវិញពិភពលោក។","FALSE","ດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາເປັນອົງການຈັດຕັ້ງຄົ້ນຄ້ວານໍາອຸທິດຕົນເພື່ອບັນທຶກຂໍ້ມູນພາສາໃກ້ຈະສູນພັນ. ສ້າງຕັ້ງຂຶ້ນໂດຍນັກພາສາສາດດຣ Gregory D. S Anderson, ດໍາລົງຊີວິດພາສາສະຖາບັນເປັນສະຖາບັນຄົ້ນຄ້ວາທີ່ບໍ່ຫວັງຜົນກໍາໄລຢູ່ໃນ Salem, Oregon, ມີຄົ້ນຄ້ວາຈາກໄລຍະໄກແລະການຮ່ວມມືຢູ່ໃນທົ່ວໂລກ.","","ດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາເປັນອົງການຈັດຕັ້ງຄົ້ນຄ້ວານໍາອຸທິດຕົນເພື່ອບັນທຶກຂໍ້ມູນພາສາໃກ້ຈະສູນພັນ. ສ້າງຕັ້ງຂຶ້ນໂດຍນັກພາສາສາດດຣ Gregory D. S Anderson, ດໍາລົງຊີວິດພາສາສະຖາບັນເປັນສະຖາບັນຄົ້ນຄ້ວາທີ່ບໍ່ຫວັງຜົນກໍາໄລຢູ່ໃນ Salem, Oregon, ມີຄົ້ນຄ້ວາຈາກໄລຍະໄກແລະການຮ່ວມມືຢູ່ໃນທົ່ວໂລກ.","FALSE","Living Tongues Institut Terancam Bahasa adalah sebuah organisasi penyelidikan terkemuka khusus untuk mendokumentasikan bahasa terancam. Diasaskan oleh ahli bahasa Dr. Gregory D. S. Anderson, Living Tongues Institute ialah institut penyelidikan bukan keuntungan yang berpangkalan di Salem, Oregon, dengan penyelidik jauh dan rakan usaha sama yang terletak di sekitar dunia.","Institut Living Tongues bagi Bahasa Terancam ialah sebuah organisasi penyelidikan terkemuka khusus untuk mendokumenkan bahasa-bahasa terancam. Institut Living Tongues diasaskan oleh Dr. Gregory D. S. Anderson, seorang ahli bahasa. Ia merupakan sebuah institut penyelidikan bukan bermotifkan untung yang berpangkalan di Salem, Oregon, dengan penyelidik dan rakan usaha sama jarak jauh yang terletak di seluruh dunia.","Institut Living Tongues bagi Bahasa Terancam ialah sebuah organisasi penyelidikan terkemuka khusus untuk mendokumenkan bahasa-bahasa terancam. Institut Living Tongues diasaskan oleh Dr. Gregory D. S. Anderson, seorang ahli bahasa. Ia merupakan sebuah institut penyelidikan bukan bermotifkan untung yang berpangkalan di Salem, Oregon, dengan penyelidik dan rakan usaha sama jarak jauh yang terletak di seluruh dunia.","TRUE","Ang buhay na wika Institute para sa mga endangered na wika ay isang nangungunang organisasyong pananaliksik na nakatuon sa pagdodokumento ng mga endangered na wika. Itinatag ng lingguwista na si Dr. Gregory D. S. Anderson, ang Living Tongues Institute ay isang non-profit research institute na nakabase sa Salem, Oregon, na may mga remote na mananaliksik at mga collaborator na matatagpuan sa buong mundo.","","Ang buhay na wika Institute para sa mga endangered na wika ay isang nangungunang organisasyong pananaliksik na nakatuon sa pagdodokumento ng mga endangered na wika. Itinatag ng lingguwista na si Dr. Gregory D. S. Anderson, ang Living Tongues Institute ay isang non-profit research institute na nakabase sa Salem, Oregon, na may mga remote na mananaliksik at mga collaborator na matatagpuan sa buong mundo.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"With nearly two decades of fieldwork experience, researchers at Living Tongues Institute for Endangered Languages have the skills and methods in place to help communities document, protect, and promote their languages.","","","about","two_decades_experience","about.two_decades_experience","Con casi dos décadas de experiencia en el trabajo de campo, los investigadores del Instituto de estar Lenguas para las lenguas en peligro tienen las habilidades y métodos en el lugar para ayudar a documentar las comunidades, proteger y promover sus lenguas.","Con casi dos décadas de experiencia en el trabajo de campo, los investigadores del Instituto Living Tongues cuentan con los conocimientos y métodos necesarios para ayudar a las comunidades a documentar, proteger y promover sus idiomas.","Con casi dos décadas de experiencia en el trabajo de campo, los investigadores del Instituto Living Tongues cuentan con los conocimientos y métodos necesarios para ayudar a las comunidades a documentar, proteger y promover sus idiomas.","TRUE","Com quase duas décadas de experiência de campo, pesquisadores da Vivo Instituto Tongues para Línguas Ameaçadas tem as habilidades e métodos no lugar para ajudar a documentar comunidades, proteger e promover as suas línguas.","Com quase duas décadas de experiência no trabalho de campo, os investigadores do Living Institute for Endagered Languages tem competências e métodos actuais para ajudar as comunidades a documentar, proteger e promover as suas línguas.","Com quase duas décadas de experiência no trabalho de campo, os investigadores do Living Institute for Endagered Languages tem competências e métodos actuais para ajudar as comunidades a documentar, proteger e promover as suas línguas.","TRUE","Avec près de deux décennies d'expérience de travail sur le terrain, les chercheurs de l'Institut de vie Tongues pour les langues en voie de disparition ont les compétences et les méthodes en place pour aider les communautés document, protéger et promouvoir leurs langues.","Avec près de deux décennies d'expérience sur le terrain, les chercheurs l'Institut Living Tongues ont les compétences et les méthodes en place pour aider les communautés à documenter, protéger et promouvoir leurs langues.","Avec près de deux décennies d'expérience sur le terrain, les chercheurs l'Institut Living Tongues ont les compétences et les méthodes en place pour aider les communautés à documenter, protéger et promouvoir leurs langues.","TRUE","עם כמעט שני עשורים של ניסיון עבודת שטח, חוקרי חיים לשונות מכון שפות בסכנת הכחדה יש ​​את הכישורים ושיטות במקום למסמך קהילות עזרה, להגן, ולקדם בשפות שלהם.","עם כמעט שני עשורים של ניסיון בשטח, לחוקרי המכון ללשונות חיים יש את הכישורים והכלים הדרושים כדי לסייע לקהילות בתיעוד, שימור, והפצת השפות שלהן.","עם כמעט שני עשורים של ניסיון בשטח, לחוקרי המכון ללשונות חיים יש את הכישורים והכלים הדרושים כדי לסייע לקהילות בתיעוד, שימור, והפצת השפות שלהן.","TRUE","مع ما يقرب من عقدين من الخبرة الميدانية والباحثين في معهد المعيشة الألسنة لغات المهددة لديهم المهارات والأساليب المعمول بها لمساعدة المجتمعات وثيقة، وحماية، وتعزيز لغاتهم.","إن محصلة عقدين من العمل الميداني أعطتنا المهارات والطرق اللازمة لمساعدة المجتمعات على توثيق وحفظ وتطوير لغاتهم. حيث يجري فريقنا البحثي أعمالاً وثائقية لغوية ميدانية، وينشرون أبحاثاً علمية ويحضرون مؤتمرات أكاديمية. كما نقيم ورش عمل رقمية تدريبية لدعم الناشطين اللغويين والتعاون مع متحدثي اللغات المهددة لتعريفهم بكيفية إنشاء نسختهم الخاصة من القواميس الناطقة على شبكة الإنترنت. وبالإضافة إلى ذلك، فإننا نزيد الوعي باللغات المهددة وندعم جهود إحياء اللغات في المجتمعات العديدة التي نعمل فيها. ","إن محصلة عقدين من العمل الميداني أعطتنا المهارات والطرق اللازمة لمساعدة المجتمعات على توثيق وحفظ وتطوير لغاتهم. حيث يجري فريقنا البحثي أعمالاً وثائقية لغوية ميدانية، وينشرون أبحاثاً علمية ويحضرون مؤتمرات أكاديمية. كما نقيم ورش عمل رقمية تدريبية لدعم الناشطين اللغويين والتعاون مع متحدثي اللغات المهددة لتعريفهم بكيفية إنشاء نسختهم الخاصة من القواميس الناطقة على شبكة الإنترنت. وبالإضافة إلى ذلك، فإننا نزيد الوعي باللغات المهددة وندعم جهود إحياء اللغات في المجتمعات العديدة التي نعمل فيها. ","FALSE","फ़ील्डवर्क अनुभव के लगभग दो दशकों के साथ, लुप्तप्राय भाषाओं के लिए लिविंग जीभ संस्थान में शोधकर्ताओं मदद समुदायों दस्तावेज़, की सुरक्षा के लिए कौशल और विधियों है, और उनकी भाषाओं को बढ़ावा देने के।","लगभग दो दशकों के भाषाक्षेत्र में कार्य अनुभव से, लिविंग टंग्स संस्था के शोधकर्ताओं के पास वह योग्यता और प्रणाली है जिससे वे किसी भी समुदाय के भाषा को लिपिबद्ध, संरक्षित और प्रोत्साहित कर सकते हैं।","लगभग दो दशकों के भाषाक्षेत्र में कार्य अनुभव से, लिविंग टंग्स संस्था के शोधकर्ताओं के पास वह योग्यता और प्रणाली है जिससे वे किसी भी समुदाय के भाषा को लिपिबद्ध, संरक्षित और प्रोत्साहित कर सकते हैं।","TRUE","fieldwork অভিজ্ঞতার প্রায় দুই দশক ধরে সঙ্গে, লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউটে গবেষক সাহায্যের সম্প্রদায়ের দস্তাবেজ, রক্ষা করার জন্য জায়গায় দক্ষতা এবং পদ্ধতি আছে, এবং তাদের ভাষায় উন্নীত করা।","","fieldwork অভিজ্ঞতার প্রায় দুই দশক ধরে সঙ্গে, লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউটে গবেষক সাহায্যের সম্প্রদায়ের দস্তাবেজ, রক্ষা করার জন্য জায়গায় দক্ষতা এবং পদ্ধতি আছে, এবং তাদের ভাষায় উন্নীত করা।","FALSE","fieldwork ଅଭିଜ୍ଞତାର ପାଖାପାଖି ଦୁଇ ଦଶନ୍ଧି ସହିତ, ସହାୟତା ସମ୍ପ୍ରଦାୟଗୁଡିକ ଡକ୍ୟୁମେଣ୍ଟ, ସୁରକ୍ଷିତ କରିବା ସ୍ଥାନରେ ଦକ୍ଷତା ଏବଂ ପଦ୍ଧତି ଅଛି, ଏବଂ ସେମାନଙ୍କର ଭାଷା ପ୍ରତିଷ୍ଠିତ ବିରଳ ଭାଷା ପାଇଁ Living ଭାଷା ପ୍ରତିଷ୍ଠାନ ରେ researchers।","","fieldwork ଅଭିଜ୍ଞତାର ପାଖାପାଖି ଦୁଇ ଦଶନ୍ଧି ସହିତ, ସହାୟତା ସମ୍ପ୍ରଦାୟଗୁଡିକ ଡକ୍ୟୁମେଣ୍ଟ, ସୁରକ୍ଷିତ କରିବା ସ୍ଥାନରେ ଦକ୍ଷତା ଏବଂ ପଦ୍ଧତି ଅଛି, ଏବଂ ସେମାନଙ୍କର ଭାଷା ପ୍ରତିଷ୍ଠିତ ବିରଳ ଭାଷା ପାଇଁ Living ଭାଷା ପ୍ରତିଷ୍ଠାନ ରେ researchers।","FALSE","","FALSE","С почти два десятилетия опыта работы на местах, исследователи жизни косноязычия Института исчезающих языков имеют навыки и методы в месте, чтобы помочь сообществам документ, защищать и продвигать свои языки.","За почти два десятилетия полевых исследований, учёные Института Living Tongues накопили богатый опыт и разработали методики, которые помогают сообществам документировать, защищать и продвигать свои языки.","За почти два десятилетия полевых исследований, учёные Института Living Tongues накопили богатый опыт и разработали методики, которые помогают сообществам документировать, защищать и продвигать свои языки.","TRUE","凭借近二十年的经验,实地考察,研究人员在濒危语言振兴协会拥有的技能和方法到位,以帮助社区文档,保护和促进他们的语言。","","凭借近二十年的经验,实地考察,研究人员在濒危语言振兴协会拥有的技能和方法到位,以帮助社区文档,保护和促进他们的语言。","FALSE","Tare da kusan biyu shekarun da suka gabata na fieldwork kwarewa, masu bincike, a Living Harsuna Institute for miyagun Harsuna suna da basira da kuma hanyoyin da wuri don taimakon al'umma daftarin aiki, kare, da kuma gabatar da su harsuna.","","Tare da kusan biyu shekarun da suka gabata na fieldwork kwarewa, masu bincike, a Living Harsuna Institute for miyagun Harsuna suna da basira da kuma hanyoyin da wuri don taimakon al'umma daftarin aiki, kare, da kuma gabatar da su harsuna.","FALSE","Dengan hampir dua dekade pengalaman kerja lapangan, para peneliti di Living Tongues Institute for Endangered Languages ​​memiliki keterampilan dan metode di tempat untuk bantuan dokumen masyarakat, melindungi, dan mempromosikan bahasa mereka.","Dengan hampir dua dekade pengalaman kerja riset lapangan, para peneliti pada Living Tongue Institute for Endangered Languages mempunyai keterampilan dan metode yang dapat langsung diterapkan untuk menolong komunitas-komunitas bahasa mendokumentasikan, melindungi, dan mempromosikan bahasa-bahasa mereka.","Dengan hampir dua dekade pengalaman kerja riset lapangan, para peneliti pada Living Tongue Institute for Endangered Languages mempunyai keterampilan dan metode yang dapat langsung diterapkan untuk menolong komunitas-komunitas bahasa mendokumentasikan, melindungi, dan mempromosikan bahasa-bahasa mereka.","FALSE","Kwa karibu miongo miwili ya uzoefu ziara maalumu, watafiti katika Living Tongues Taasisi ya hatarini Lugha ujuzi na mbinu katika nafasi ya kusaidia jamii hati, kulinda, na kukuza lugha yao.","Kwa uzoefu wa kazi za uwandani wa karibu miongo miwili, watafiti wa Taasisi ya Living Tongues ya Lugha Zilizo Hatarini wana ujuzi na mbinu za kuzisaidia jamii kuhifadhi, kulinda, na kukuza lugha zao.","Kwa uzoefu wa kazi za uwandani wa karibu miongo miwili, watafiti wa Taasisi ya Living Tongues ya Lugha Zilizo Hatarini wana ujuzi na mbinu za kuzisaidia jamii kuhifadhi, kulinda, na kukuza lugha zao.","TRUE","የመስክ ሥራ ልምድ የሚጠጉ ሁለት አስርት ጋር, የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም ተመራማሪዎች ለመጠበቅ እንዲያግዝ ማህበረሰቦች ሰነድ, ወደ ቦታ ውስጥ ያለውን ችሎታ እና ዘዴዎችን, እና ያላቸውን ቋንቋዎች ለማስፋፋት.","","የመስክ ሥራ ልምድ የሚጠጉ ሁለት አስርት ጋር, የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም ተመራማሪዎች ለመጠበቅ እንዲያግዝ ማህበረሰቦች ሰነድ, ወደ ቦታ ውስጥ ያለውን ችሎታ እና ዘዴዎችን, እና ያላቸውን ቋንቋዎች ለማስፋፋት.","FALSE","Với gần hai thập kỷ kinh nghiệm thực địa, các nhà nghiên cứu tại Viện Living Lưỡi cho nguy cơ tuyệt chủng Ngôn ngữ có kỹ năng và phương pháp thực hiện để giúp đỡ cộng đồng tài liệu, bảo vệ và phát huy ngôn ngữ của họ.","","Với gần hai thập kỷ kinh nghiệm thực địa, các nhà nghiên cứu tại Viện Living Lưỡi cho nguy cơ tuyệt chủng Ngôn ngữ có kỹ năng và phương pháp thực hiện để giúp đỡ cộng đồng tài liệu, bảo vệ và phát huy ngôn ngữ của họ.","FALSE","มีเกือบสองทศวรรษของประสบการณ์ภาคสนามนักวิจัยที่นั่งเล่นลิ้นสถาบันภาษาที่ใกล้สูญพันธุ์มีทักษะและวิธีการในสถานที่ที่จะช่วยเหลือเอกสารชุมชนป้องกันและส่งเสริมภาษาของพวกเขา","","มีเกือบสองทศวรรษของประสบการณ์ภาคสนามนักวิจัยที่นั่งเล่นลิ้นสถาบันภาษาที่ใกล้สูญพันธุ์มีทักษะและวิธีการในสถานที่ที่จะช่วยเหลือเอกสารชุมชนป้องกันและส่งเสริมภาษาของพวกเขา","FALSE","ជាមួយនឹងការជិតពីរទសវត្សនៃបទពិសោធការងារចុះផ្ទាល់, ក្រុមអ្នកស្រាវជ្រាវនៅវិទ្យាស្ថានភាសាសម្រាប់សត្វព្រៃជិតផុតភាសាការរស់នៅមានជំនាញនិងវិធីសាស្រ្តក្នុងកន្លែងដើម្បីជំនួយឯកសារសហគមន៍ការពារនិងលើកកម្ពស់ភាសារបស់ពួកគេ។","","ជាមួយនឹងការជិតពីរទសវត្សនៃបទពិសោធការងារចុះផ្ទាល់, ក្រុមអ្នកស្រាវជ្រាវនៅវិទ្យាស្ថានភាសាសម្រាប់សត្វព្រៃជិតផុតភាសាការរស់នៅមានជំនាញនិងវិធីសាស្រ្តក្នុងកន្លែងដើម្បីជំនួយឯកសារសហគមន៍ការពារនិងលើកកម្ពស់ភាសារបស់ពួកគេ។","FALSE","ມີເກືອບສອງທົດສະວັດຂອງປະສົບການວຽກພາກສະຫນາມ, ຄົ້ນຄ້ວາຢູ່ໃນດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາມີຄວາມສາມາດແລະວິທີການໃນສະຖານທີ່ທີ່ຈະຊ່ວຍເຫຼືອເອກະສານຊຸມຊົນ, ປ້ອງກັນແລະສົ່ງເສີມພາສາຂອງເຂົາເຈົ້າ.","","ມີເກືອບສອງທົດສະວັດຂອງປະສົບການວຽກພາກສະຫນາມ, ຄົ້ນຄ້ວາຢູ່ໃນດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາມີຄວາມສາມາດແລະວິທີການໃນສະຖານທີ່ທີ່ຈະຊ່ວຍເຫຼືອເອກະສານຊຸມຊົນ, ປ້ອງກັນແລະສົ່ງເສີມພາສາຂອງເຂົາເຈົ້າ.","FALSE","Dengan hampir dua dekad pengalaman kerja lapangan, penyelidik di Living Tongues Institut Terancam Bahasa yang mempunyai kemahiran dan kaedah sedia ada untuk membantu dokumen masyarakat, melindungi, dan menggalakkan bahasa mereka.","Dengan pengalaman hampir dua dekad dalam kerja lapangan, para penyelidik Institut Living Tongues bagi Bahasa Terancam mempunyai kemahiran dan kaedah yang sedia ada bagi membantu masyarakat mendokumen, melindungi dan mempromosikan bahasa mereka.","Dengan pengalaman hampir dua dekad dalam kerja lapangan, para penyelidik Institut Living Tongues bagi Bahasa Terancam mempunyai kemahiran dan kaedah yang sedia ada bagi membantu masyarakat mendokumen, melindungi dan mempromosikan bahasa mereka.","TRUE","Sa halos dalawang dekada ng karanasan sa fieldwork, ang mga mananaliksik sa buhay na wika Institute para sa mga endangered na wika ay may mga kasanayan at pamamaraan sa lugar upang matulungan ang mga komunidad na dokumento, protektahan, at itaguyod ang kanilang mga wika.","","Sa halos dalawang dekada ng karanasan sa fieldwork, ang mga mananaliksik sa buhay na wika Institute para sa mga endangered na wika ay may mga kasanayan at pamamaraan sa lugar upang matulungan ang mga komunidad na dokumento, protektahan, at itaguyod ang kanilang mga wika.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Help Us Launch More Living Dictionaries","","","about","help_us_launch_more","about.help_us_launch_more","Ayudarnos a lanzar más diccionarios Living","Ayúdenos a lanzar más Diccionarios Vivos","Ayúdenos a lanzar más Diccionarios Vivos","TRUE","Help Us Lançamento Dicionários Mais Viver","Ajude-nos a lançar mais Dicionários Vivos","Ajude-nos a lançar mais Dicionários Vivos","TRUE","Cela nous permettra d'en savoir plus Living Dictionnaires","Aidez-nous à lancer plus de dictionnaires vivants","Aidez-nous à lancer plus de dictionnaires vivants","TRUE","עזרת קשר הפעלה נוספת Living מילונים","עזרו לנו להשיק מילונים חיים","עזרו לנו להשיק מילונים חיים","TRUE","ساعدونا في إطلاق أكثر المعيشة قواميس","ساعدنا في إطلاق نسخ أكثر من توكنغ دكشنريز","ساعدنا في إطلاق نسخ أكثر من توكنغ دكشنريز","FALSE","सहायता हमारे लॉन्च अधिक शब्दकोश रहने का","हमें और अधिक भाषाओं में लिविंग शब्दकोश बनाने में मदद करें।","हमें और अधिक भाषाओं में लिविंग शब्दकोश बनाने में मदद करें।","TRUE","সাহায্য আমাদের লঞ্চ আরো অভিধানের বাস","","সাহায্য আমাদের লঞ্চ আরো অভিধানের বাস","FALSE","ସହାୟତା ଆମକୁ ଉନ୍ମୋଚନ ଅଧିକ ଅବିଧାନଗୁଡ଼ିକ Living","","ସହାୟତା ଆମକୁ ଉନ୍ମୋଚନ ଅଧିକ ଅବିଧାନଗୁଡ଼ିକ Living","FALSE","","FALSE","Помогите нам Launch Больше Жизнь Словари","Помогите нам создать больше Живых Словарей","Помогите нам создать больше Живых Словарей","TRUE","帮助我们推出更多的活字典","","帮助我们推出更多的活字典","FALSE","Taimako Mu Launch More Rayuwa Dictionaries","","Taimako Mu Launch More Rayuwa Dictionaries","FALSE","Bantuan Kami Launch Lebih Hidup Kamus","Bantu Kami Meluncurkan Lebih Banyak Lagi Kamus Hidup","Bantu Kami Meluncurkan Lebih Banyak Lagi Kamus Hidup","TRUE","Msaada Nasi Uzinduzi Zaidi Hai Kamusi","Tusaidie Kuzindua Kamusi Hai Nyingi Zaidi","Tusaidie Kuzindua Kamusi Hai Nyingi Zaidi","TRUE","እገዛ ከእኛ አስጀምር ተጨማሪ መዝገበ መኖር","","እገዛ ከእኛ አስጀምር ተጨማሪ መዝገበ መኖር","FALSE","Trợ giúp hệ Launch More Sống Từ điển","","Trợ giúp hệ Launch More Sống Từ điển","FALSE","ช่วยให้เราเปิดตัวอื่น ๆ ที่อาศัยอยู่พจนานุกรม","","ช่วยให้เราเปิดตัวอื่น ๆ ที่อาศัยอยู่พจนานุกรม","FALSE","ជួយយើងសម្ពោធបន្ថែមរស់នៅវចនានុក្រម","","ជួយយើងសម្ពោធបន្ថែមរស់នៅវចនានុក្រម","FALSE","ການຊ່ວຍເຫຼືອຂອງພວກເຮົາເປີດເພີ່ມເຕີມທີ່ອາໃສຢູ່ Dictionaries","","ການຊ່ວຍເຫຼືອຂອງພວກເຮົາເປີດເພີ່ມເຕີມທີ່ອາໃສຢູ່ Dictionaries","FALSE","Bantu Kami Pelancaran Lebih Hidup Dictionaries","Bantu Kami Melancarkan Lebih Banyak Kamus Hidup","Bantu Kami Melancarkan Lebih Banyak Kamus Hidup","TRUE","Tulungan kaming maglunsad ng higit pang mga dictionaries sa buhay","","Tulungan kaming maglunsad ng higit pang mga dictionaries sa buhay","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"With your help, we can continue to improve our software and make it available for any community that wishes to create their own Living Dictionary. Donate today and make an impact!","","","about","with_your_help","about.with_your_help","Con su ayuda, podemos seguir mejorando nuestro software y hacer que esté disponible para cualquier comunidad que desea crear su propio diccionario de estar. Dona hoy y hacer un impacto!","Con su ayuda, podemos seguir mejorando nuestro software y ponerlo a disposición de cualquier comunidad que desee crear su propio Diccionario Vivo. Por favor, haga una donación hoy.","Con su ayuda, podemos seguir mejorando nuestro software y ponerlo a disposición de cualquier comunidad que desee crear su propio Diccionario Vivo. Por favor, haga una donación hoy.","TRUE","Com a sua ajuda, podemos continuar a melhorar nosso software e torná-lo disponível para qualquer comunidade que deseja criar o seu próprio dicionário Vivo. Doe hoje e fazer um impacto!","Com a sua ajuda poderemos continuar a melhorar o nosso software e torná-lo disponível para qualquer comunidade que pretenda criar o seu Dicionário Vivo. Doe hoje e tenha um impacto!","Com a sua ajuda poderemos continuar a melhorar o nosso software e torná-lo disponível para qualquer comunidade que pretenda criar o seu Dicionário Vivo. Doe hoje e tenha um impacto!","TRUE","Avec votre aide, nous pouvons continuer à améliorer notre logiciel et le rendre disponible pour toute communauté qui souhaite créer leur propre dictionnaire vivant. Faites un don aujourd'hui et avoir un impact!","Avec votre aide, nous pouvons continuer à améliorer notre logiciel et le rendre disponible pour toute communauté qui souhaite créer son propre dictionnaire vivant. Faites un don aujourd'hui.","Avec votre aide, nous pouvons continuer à améliorer notre logiciel et le rendre disponible pour toute communauté qui souhaite créer son propre dictionnaire vivant. Faites un don aujourd'hui.","TRUE","בעזרתכם, נוכל להמשיך ולשפר את התוכנה שלנו ולהפוך אותו לזמין לכל קהילה שרוצה ליצור מילון החי משלהם. תרום היום ולהשפיע!","בזכותכם נוכל להמשיך לפתח את התוכנה שלנו ולאפשר לכל קהילה שברצונה ליצור מילון עבור שפתה. תרמו היום והשפיעו!","בזכותכם נוכל להמשיך לפתח את התוכנה שלנו ולאפשר לכל קהילה שברצונה ליצור מילון עבור שפתה. תרמו היום והשפיעו!","TRUE","بمساعدتكم، يمكننا الاستمرار في تحسين برنامجنا وجعلها متاحة لأي مجتمع يرغب في إنشاء الخاصة بهم المعيشة قاموس. تبرع اليوم ويكون لها تأثير!","بمساعدتكم، سيكون بإمكاننا الاستمرار في تحسين تطبيقنا وجعله متاحاً لكل شخص أو مجموعة ترغب في إنشاء نسختها الخاصة من القواميس الناطقة لمجتمعها اللغوي. إن هدفنا إطلاق 100 نسخة من القواميس الناطقة سنوياً على مدار الثلاثين عاماً القادمة (أجل، بالفعل، 3000 قاموس). إن هدفنا بعيد المدى هو إتاحة القواميس الناطقة على شبكة الإنترنت لكل لغة من أكثر من 3000 لغة مهددة في العالم بحلول عام 2050م. تبرعوا الآن لكي تحدثوا الفرق.","بمساعدتكم، سيكون بإمكاننا الاستمرار في تحسين تطبيقنا وجعله متاحاً لكل شخص أو مجموعة ترغب في إنشاء نسختها الخاصة من القواميس الناطقة لمجتمعها اللغوي. إن هدفنا إطلاق 100 نسخة من القواميس الناطقة سنوياً على مدار الثلاثين عاماً القادمة (أجل، بالفعل، 3000 قاموس). إن هدفنا بعيد المدى هو إتاحة القواميس الناطقة على شبكة الإنترنت لكل لغة من أكثر من 3000 لغة مهددة في العالم بحلول عام 2050م. تبرعوا الآن لكي تحدثوا الفرق.","FALSE","आपकी मदद से हम अपने सॉफ्टवेयर में सुधार लाने और यह किसी भी समुदाय के लिए अपने स्वयं के रहने शब्दकोश बनाने के लिए चाहता है कि के लिए उपलब्ध बनाने के लिए जारी रख सकते हैं। आज दान करें और प्रभाव बनाने!","आपकी मदद से हमलोग अपने सॉफ्टवेयर को और अधिक उन्नत बना सकते हैं और जो समुदाय अपने भाषा में लिविंग शब्दकोश बनाने की इच्छा रखते हैं उनके लिए उपलब्ध करा सकते हैं। आज ही योगदान करें और प्रभाव डालें !","आपकी मदद से हमलोग अपने सॉफ्टवेयर को और अधिक उन्नत बना सकते हैं और जो समुदाय अपने भाषा में लिविंग शब्दकोश बनाने की इच्छा रखते हैं उनके लिए उपलब्ध करा सकते हैं। आज ही योगदान करें और प्रभाव डालें !","TRUE","আপনার সাহায্য পেলে, আমরা আমাদের সফ্টওয়্যার উন্নতি করতে এবং সেগুলিকে কোন সম্প্রদায় তাদের নিজস্ব লিভিং অভিধান তৈরি শুভেচ্ছা যে উপলব্ধ করার জন্য আমরা চালিয়ে যেতে পারেন। আজ দান এবং প্রভাব তৈরি করতে!","","আপনার সাহায্য পেলে, আমরা আমাদের সফ্টওয়্যার উন্নতি করতে এবং সেগুলিকে কোন সম্প্রদায় তাদের নিজস্ব লিভিং অভিধান তৈরি শুভেচ্ছা যে উপলব্ধ করার জন্য আমরা চালিয়ে যেতে পারেন। আজ দান এবং প্রভাব তৈরি করতে!","FALSE","ଆପଣଙ୍କର ସହାୟତା ସହିତ, ଆମେ ଆମର ସଫ୍ଟୱେୟାର ଉନ୍ନତି ଏବଂ ଏହା କୌଣସି ସମ୍ପ୍ରଦାୟ ନିଜର Living Dictionary ସୃଷ୍ଟି ଇଚ୍ଛା ଯାହା ପାଇଁ ଉପଲବ୍ଧ କରିବା ରଖିପାରିବେ। ଆଜି ଦାନ ଓ ଏକ ପ୍ରଭାବ ତିଆରି କରନ୍ତୁ!","","ଆପଣଙ୍କର ସହାୟତା ସହିତ, ଆମେ ଆମର ସଫ୍ଟୱେୟାର ଉନ୍ନତି ଏବଂ ଏହା କୌଣସି ସମ୍ପ୍ରଦାୟ ନିଜର Living Dictionary ସୃଷ୍ଟି ଇଚ୍ଛା ଯାହା ପାଇଁ ଉପଲବ୍ଧ କରିବା ରଖିପାରିବେ। ଆଜି ଦାନ ଓ ଏକ ପ୍ରଭାବ ତିଆରି କରନ୍ତୁ!","FALSE","","FALSE","С вашей помощью, мы можем продолжать совершенствовать наше программное обеспечение и сделать его доступным для любого сообщества, которое хочет создать свой собственный Живой словарь. Окажите влияние!","С вашей помощью мы улучшим наше программное обеспечение и сделаем его доступным для любого сообщества, которое пожелает создать свой собственный Живой Словарь. Поддержите нас и внесите свой вклад!","С вашей помощью мы улучшим наше программное обеспечение и сделаем его доступным для любого сообщества, которое пожелает создать свой собственный Живой Словарь. Поддержите нас и внесите свой вклад!","TRUE","有了您的帮助,我们可以继续改善我们的软件,并使其可用于任何希望创造自己的生活字典任何团体。捐赠今天产生影响!","","有了您的帮助,我们可以继续改善我们的软件,并使其可用于任何希望创造自己的生活字典任何团体。捐赠今天产生影响!","FALSE","Tare da taimakon ku, za mu iya ci gaba da inganta mu software da kuma yin shi samuwa ga wani al'umma cewa yanã son ya haifar da nasu Living Dictionary. Ba da kyauta yau kuma yi tasiri!","","Tare da taimakon ku, za mu iya ci gaba da inganta mu software da kuma yin shi samuwa ga wani al'umma cewa yanã son ya haifar da nasu Living Dictionary. Ba da kyauta yau kuma yi tasiri!","FALSE","Dengan bantuan Anda, kami dapat terus meningkatkan perangkat lunak kami dan membuatnya tersedia untuk setiap masyarakat yang ingin membuat Living kamus mereka sendiri. Donasi hari ini dan membuat dampak!","Dengan bantuan anda, kami dapat terus meningkatkan kualitas perangkat lunak kami dan membuatnya tersedia bagi setiap komunitas bahasa apapun atau masyakarat luas yang ingin membuat Kamus Hidup mereka sendiri. Berdonasilah hari ini dan berdampak!","Dengan bantuan anda, kami dapat terus meningkatkan kualitas perangkat lunak kami dan membuatnya tersedia bagi setiap komunitas bahasa apapun atau masyakarat luas yang ingin membuat Kamus Hidup mereka sendiri. Berdonasilah hari ini dan berdampak!","TRUE","Kwa msaada wako, tunaweza kuendelea kuboresha programu yetu na kuwezesha kupatikana kwa jumuiya yoyote yenye nia ya kujenga Hai yao kamusi. Changia leo na kuwa na athari!","Kwa msaada wako, tunaweza kuendelea kuboresha programu yetu na kuifanya ipatikane kwa jamii yoyote inayopenda kuunda Kamusi Hai. Changia leo ili ulete mabadiliko!","Kwa msaada wako, tunaweza kuendelea kuboresha programu yetu na kuifanya ipatikane kwa jamii yoyote inayopenda kuunda Kamusi Hai. Changia leo ili ulete mabadiliko!","TRUE","በእርስዎ እገዛ አማካኝነት, እኛ ያለንን ሶፍትዌር ለማሻሻል እና የራሳቸውን ሕያው መዝገበ ለመፍጠር የሚፈልግ ማንኛውም ማህበረሰብ እንዲገኝ ማድረግ መቀጠል ይችላሉ. ዛሬ ለግስ እና ተፅዕኖ ለማድረግ!","","በእርስዎ እገዛ አማካኝነት, እኛ ያለንን ሶፍትዌር ለማሻሻል እና የራሳቸውን ሕያው መዝገበ ለመፍጠር የሚፈልግ ማንኛውም ማህበረሰብ እንዲገኝ ማድረግ መቀጠል ይችላሉ. ዛሬ ለግስ እና ተፅዕኖ ለማድረግ!","FALSE","Với sự giúp đỡ của bạn, chúng tôi có thể tiếp tục cải thiện phần mềm của chúng tôi và làm cho nó có sẵn cho bất kỳ cộng đồng có nhu cầu tạo từ điển sống của riêng mình. Tặng hôm nay và thực hiện một tác động!","","Với sự giúp đỡ của bạn, chúng tôi có thể tiếp tục cải thiện phần mềm của chúng tôi và làm cho nó có sẵn cho bất kỳ cộng đồng có nhu cầu tạo từ điển sống của riêng mình. Tặng hôm nay và thực hiện một tác động!","FALSE","ด้วยความช่วยเหลือของคุณเราสามารถดำเนินการปรับปรุงซอฟแวร์ของเราและทำให้มันใช้ได้สำหรับชุมชนใดที่ประสงค์จะสร้างพจนานุกรมของตัวเองใช้ชีวิต บริจาควันนี้และทำให้มีผลกระทบ!","","ด้วยความช่วยเหลือของคุณเราสามารถดำเนินการปรับปรุงซอฟแวร์ของเราและทำให้มันใช้ได้สำหรับชุมชนใดที่ประสงค์จะสร้างพจนานุกรมของตัวเองใช้ชีวิต บริจาควันนี้และทำให้มีผลกระทบ!","FALSE","ដោយមានជំនួយរបស់អ្នក, យើងអាចបន្តធ្វើឱ្យប្រសើរឡើងកម្មវិធីរបស់យើងនិងធ្វើឱ្យវាអាចប្រើបានសម្រាប់សហគមន៍ដែលមានបំណងដើម្បីបង្កើតវចនានុក្រមការរស់នៅផ្ទាល់របស់ពួកគេណាមួយឡើយ។ បរិច្ចាកនាពេលបច្ចុប្បន្ននេះនិងធ្វើឱ្យមានផលប៉ះពាល់មួយ!","","ដោយមានជំនួយរបស់អ្នក, យើងអាចបន្តធ្វើឱ្យប្រសើរឡើងកម្មវិធីរបស់យើងនិងធ្វើឱ្យវាអាចប្រើបានសម្រាប់សហគមន៍ដែលមានបំណងដើម្បីបង្កើតវចនានុក្រមការរស់នៅផ្ទាល់របស់ពួកគេណាមួយឡើយ។ បរិច្ចាកនាពេលបច្ចុប្បន្ននេះនិងធ្វើឱ្យមានផលប៉ះពាល់មួយ!","FALSE","ດ້ວຍຄວາມຊ່ອຍເຫລືອຂອງທ່ານ, ພວກເຮົາສາມາດສືບຕໍ່ໃນການປັບປຸງຊອບແວຂອງພວກເຮົາແລະເຮັດໃຫ້ມັນສາມາດໃຊ້ໄດ້ສໍາລັບຊຸມຊົນທີ່ຕ້ອງການທີ່ຈະສ້າງ Dictionary ດໍາລົງຊີວິດຂອງເຂົາເຈົ້າເອງ. ບໍລິຈາກໃນມື້ນີ້ແລະເຮັດໃຫ້ຜົນກະທົບເປັນ!","","ດ້ວຍຄວາມຊ່ອຍເຫລືອຂອງທ່ານ, ພວກເຮົາສາມາດສືບຕໍ່ໃນການປັບປຸງຊອບແວຂອງພວກເຮົາແລະເຮັດໃຫ້ມັນສາມາດໃຊ້ໄດ້ສໍາລັບຊຸມຊົນທີ່ຕ້ອງການທີ່ຈະສ້າງ Dictionary ດໍາລົງຊີວິດຂອງເຂົາເຈົ້າເອງ. ບໍລິຈາກໃນມື້ນີ້ແລະເຮັດໃຫ້ຜົນກະທົບເປັນ!","FALSE","Dengan bantuan anda, kami boleh terus meningkatkan perisian kami dan membuat ia boleh didapati untuk mana-mana komuniti yang ingin mewujudkan Kamus Living mereka sendiri. Menderma hari ini dan membuat kesan!","Dengan bantuan anda, kami dapat terus memperbaiki perisian kami dan membuatnya tersedia kepada mana-mana masyarakat yang ingin mencipta Kamus Hidup mereka sendiri. Derma dan buat kesan sekarang!","Dengan bantuan anda, kami dapat terus memperbaiki perisian kami dan membuatnya tersedia kepada mana-mana masyarakat yang ingin mencipta Kamus Hidup mereka sendiri. Derma dan buat kesan sekarang!","TRUE","Sa iyong tulong, maaari naming patuloy na mapabuti ang aming software at gawin itong magagamit para sa anumang komunidad na nais upang lumikha ng kanilang sariling mga diksyunaryo ng buhay. Mag-donate ngayon at gumawa ng isang epekto!","","Sa iyong tulong, maaari naming patuloy na mapabuti ang aming software at gawin itong magagamit para sa anumang komunidad na nais upang lumikha ng kanilang sariling mga diksyunaryo ng buhay. Mag-donate ngayon at gumawa ng isang epekto!","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Account Settings","","","account","account_settings","account.account_settings","Configuraciones de la cuenta","Configuración","Configuración","TRUE","Configurações da conta","Definições da conta","Definições da conta","TRUE","Paramètres du compte","Paramètres","Paramètres","TRUE","הגדרות חשבון","","הגדרות חשבון","TRUE","إعدادت الحساب","إعدادات الحساب","إعدادات الحساب","FALSE","अकाउंट सेटिंग","अकाउंट सेटिंग","अकाउंट सेटिंग","TRUE","অ্যাকাউন্ট সেটিংস","","অ্যাকাউন্ট সেটিংস","FALSE","ଖାତା ସେଟିଂ","","ଖାତା ସେଟିଂ","FALSE","","FALSE","Настройки учетной записи","Настройки учетной записи","Настройки учетной записи","TRUE","帐号设定","","帐号设定","FALSE","account Saituna","","account Saituna","FALSE","Pengaturan akun","Pengaturan Akun","Pengaturan Akun","TRUE","Mipangilio ya akaunti","Mipangilio ya Akaunti","Mipangilio ya Akaunti","TRUE","መለያ ማደራጃ","","መለያ ማደራጃ","FALSE","Cài đặt tài khoản","","Cài đặt tài khoản","FALSE","การตั้งค่าบัญชี","","การตั้งค่าบัญชี","FALSE","ការកំណត់​គណនី","","ការកំណត់​គណនី","FALSE","ຕັ້ງ​ຄ່າ​ບັນ​ຊີ","","ຕັ້ງ​ຄ່າ​ບັນ​ຊີ","FALSE","Tetapan akaun","Tetapan Akaun","Tetapan Akaun","TRUE","Mga setting ng account.","","Mga setting ng account.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Log Out","","","account","log_out","account.log_out","Cerrar sesión","Cerrar sesión","Cerrar sesión","TRUE","Sair","Sair","Sair","TRUE","Se déconnecter","Se déconnecter","Se déconnecter","TRUE","להתנתק","","להתנתק","TRUE","تسجيل خروج","تسجيل الخروج","تسجيل الخروج","FALSE","लॉग आउट","लॉग आउट","लॉग आउट","TRUE","প্রস্থান","","প্রস্থান","FALSE","ପ୍ରସ୍ଥାନ କର","","ପ୍ରସ୍ଥାନ କର","FALSE","","FALSE","Выйти","","Выйти","TRUE","登出","","登出","FALSE","log Out","","log Out","FALSE","Keluar","Keluar","Keluar","TRUE","Log Out","Toka","Toka","TRUE","ውጣ","","ውጣ","FALSE","Đăng xuất","","Đăng xuất","FALSE","ออกจากระบบ","","ออกจากระบบ","FALSE","ចាកចេញ","","ចាកចេញ","FALSE","ອອກ​ຈາກ​ລະ​ບົບ","","ອອກ​ຈາກ​ລະ​ບົບ","FALSE","Log keluar","Log Keluar","Log Keluar","TRUE","Mag-log out","","Mag-log out","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Then you will tap to stop recording","","","audio","tapToStopRecording","audio.tapToStopRecording","A continuación, se le toque para detener la grabación","Luego presione para terminar de grabar","Luego presione para terminar de grabar","TRUE","Então você vai tocar para parar a gravação","Então, você poderá clicar para parar a gravação","Então, você poderá clicar para parar a gravação","TRUE","Ensuite, vous appuyez sur pour arrêter l'enregistrement","Ensuite, taper pour arrêter l'enregistrement","Ensuite, taper pour arrêter l'enregistrement","TRUE","לאחר מכן תוכלו להקיש כדי לעצור את ההקלטה","","לאחר מכן תוכלו להקיש כדי לעצור את ההקלטה","TRUE","فإنك سوف الاستفادة لإيقاف التسجيل","ثم ستنقر لإيقاف التسجيل","ثم ستنقر لإيقاف التسجيل","FALSE","तो फिर तुम रिकॉर्डिंग बंद करने का दोहन होगा","रिकॉर्डिंग रोकने के लिए दबाएं","रिकॉर्डिंग रोकने के लिए दबाएं","TRUE","তারপর আপনি রেকর্ডিং বন্ধ করতে আলতো চাপুন হবে","","তারপর আপনি রেকর্ডিং বন্ধ করতে আলতো চাপুন হবে","FALSE","ତାପରେ ଆପଣ ରେକର୍ଡିଂ ବନ୍ଦ କରିବା tap କରିବା","","ତାପରେ ଆପଣ ରେକର୍ଡିଂ ବନ୍ଦ କରିବା tap କରିବା","FALSE","","FALSE","Тогда вы будете нажать, чтобы остановить запись","Затем коснитесь, чтобы остановить запись","Затем коснитесь, чтобы остановить запись","TRUE","然后你会点击停止录制","","然后你会点击停止录制","FALSE","Sa'an nan za ku matsa zuwa tsayar da rikodi","","Sa'an nan za ku matsa zuwa tsayar da rikodi","FALSE","Kemudian Anda akan tekan untuk menghentikan perekaman","Selanjutnya Anda akan mengetuk untuk berhenti merekam","Selanjutnya Anda akan mengetuk untuk berhenti merekam","TRUE","Basi bomba na kuacha kurekodi","Kisha utabonyeza ili kuacha kurekodi","Kisha utabonyeza ili kuacha kurekodi","TRUE","ከዚያም መቅዳት ለማቆም መታ ይሆናል","","ከዚያም መቅዳት ለማቆም መታ ይሆናል","FALSE","Sau đó, bạn sẽ bấm để ngừng quay","","Sau đó, bạn sẽ bấm để ngừng quay","FALSE","แล้วคุณจะแตะเพื่อหยุดการบันทึก","","แล้วคุณจะแตะเพื่อหยุดการบันทึก","FALSE","បន្ទាប់មកអ្នកនឹងទាញយកប្រយោជន៍ដើម្បីបញ្ឈប់ការថត","","បន្ទាប់មកអ្នកនឹងទាញយកប្រយោជន៍ដើម្បីបញ្ឈប់ការថត","FALSE","ຫຼັງຈາກນັ້ນທ່ານຈະແຕະເພື່ອຢຸດການບັນທຶກ","","ຫຼັງຈາກນັ້ນທ່ານຈະແຕະເພື່ອຢຸດການບັນທຶກ","FALSE","Maka anda akan menggunakan untuk menghentikan rakaman","Seterusnya anda akan ketik untuk berhenti merakam","Seterusnya anda akan ketik untuk berhenti merakam","TRUE","Pagkatapos ay i-tap ka upang ihinto ang pag-record","","Pagkatapos ay i-tap ka upang ihinto ang pag-record","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Select Speaker","","","audio","select_speaker","audio.select_speaker","Seleccionar altavoz","Elegir el orador","Elegir el orador","TRUE","Select Speaker","Seleccionar o falante","Seleccionar o falante","TRUE","Sélectionnez Président","Choisir le locuteur","Choisir le locuteur","TRUE","בחירת רמקול","בחירות דובר/ת","בחירות דובר/ת","TRUE","حدد رئيس","اختر متحدثاً","اختر متحدثاً","FALSE","अध्यक्ष का चयन","वक्ता का चयन करें","वक्ता का चयन करें","TRUE","স্পিকার নির্বাচন","","স্পিকার নির্বাচন","FALSE","ଚୟନ ବକ୍ତା","","ଚୟନ ବକ୍ତା","FALSE","","FALSE","Выберите Speaker","Выберите информанта","Выберите информанта","TRUE","选择音箱","","选择音箱","FALSE","Zabi majalisa","","Zabi majalisa","FALSE","Pilih Speaker","Pilih Penutur","Pilih Penutur","TRUE","Chagua Spika","Chagua Spika","Chagua Spika","TRUE","ይምረጡ የተናጋሪ","","ይምረጡ የተናጋሪ","FALSE","Chọn loa","","Chọn loa","FALSE","เลือกลำโพง","","เลือกลำโพง","FALSE","ជ្រើសវាគ្មិន","","ជ្រើសវាគ្មិន","FALSE","ເລືອກລໍາໂພງ","","ເລືອກລໍາໂພງ","FALSE","Pilih Speaker","Pilih Penutur","Pilih Penutur","TRUE","Piliin ang Tagapagsalita","","Piliin ang Tagapagsalita","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Learn More","","","audio","learn_more","audio.learn_more","Aprende más","Aprender más","Aprender más","TRUE","Saber mais","Aprender mais","Aprender mais","TRUE","Apprendre encore plus","En savoir plus","En savoir plus","TRUE","למד עוד","עוד מידע","עוד מידע","FALSE","أعرف أكثر","","أعرف أكثر","FALSE","और अधिक जानें","और अधिक जानें","और अधिक जानें","TRUE","আরও জানুন","","আরও জানুন","FALSE","ଅଧିକ ସିଖନ୍ତୁ","","ଅଧିକ ସିଖନ୍ତୁ","FALSE","","FALSE","Учить больше","Узнать больше","Узнать больше","TRUE","学到更多","","学到更多","FALSE","koyi More","","koyi More","FALSE","Belajarlah lagi","Pelajari Lagi","Pelajari Lagi","TRUE","Jifunze zaidi","Jifunze zaidi","Jifunze zaidi","TRUE","ተጨማሪ እወቅ","","ተጨማሪ እወቅ","FALSE","Learn More","","Learn More","FALSE","เรียนรู้เพิ่มเติม","","เรียนรู้เพิ่มเติม","FALSE","ស្វែង​យល់​បន្ថែម","","ស្វែង​យល់​បន្ថែម","FALSE","ຮຽນຮູ້ເພີ່ມເຕີມ","","ຮຽນຮູ້ເພີ່ມເຕີມ","FALSE","Ketahui Lebih Lanjut","Ketahui Lebih Lanjut","Ketahui Lebih Lanjut","TRUE","Matuto nang higit pa","","Matuto nang higit pa","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Prepare to Record with Microphone","","","audio","prepare_to_record","audio.prepare_to_record","Prepare la grabación con micrófono","Prepárese para grabar con el micrófono","Prepárese para grabar con el micrófono","TRUE","Prepare-se para Gravar com Microfone","Preparar para gravar com um microfone","Preparar para gravar com um microfone","TRUE","Préparez l'enregistrement avec microphone","Préparez-vous à enregistrer avec le microphone","Préparez-vous à enregistrer avec le microphone","TRUE","כן כדי להקליט עם מיקרופון","הכינו את המיקרופון להקלטה","הכינו את המיקרופון להקלטה","FALSE","الاستعداد لسجل مع ميكروفون","","الاستعداد لسجل مع ميكروفون","FALSE","माइक्रोफोन के साथ रिकॉर्ड करने के लिए तैयार","माइक्रोफोन के साथ रिकॉर्ड करने के लिए तैयार हो जायें","माइक्रोफोन के साथ रिकॉर्ड करने के लिए तैयार हो जायें","TRUE","মাইক্রোফোন সঙ্গে রেকর্ড করতে প্রস্তুত","","মাইক্রোফোন সঙ্গে রেকর্ড করতে প্রস্তুত","FALSE","ମାଇକ୍ରୋଫୋନ୍ରେ ରେକର୍ଡ କୁ ପ୍ରସ୍ତୁତ","","ମାଇକ୍ରୋଫୋନ୍ରେ ରେକର୍ଡ କୁ ପ୍ରସ୍ତୁତ","FALSE","","FALSE","Подготовка к записи с микрофоном","Подготовка к записи с микрофоном","Подготовка к записи с микрофоном","TRUE","准备记录与麦克风","","准备记录与麦克风","FALSE","Yi wa littãfinsa da Makirifo","","Yi wa littãfinsa da Makirifo","FALSE","Bersiaplah untuk Rekam dengan Mikrofon","Bersiaplah untuk Merekam dengan Mikrofon","Bersiaplah untuk Merekam dengan Mikrofon","TRUE","Jiandae Record na Microphone","Jiandae kurekodi kwa kinasa sauti","Jiandae kurekodi kwa kinasa sauti","TRUE","የማይክሮፎን ጋር ለመቅረጽ ይዘጋጁ","","የማይክሮፎን ጋር ለመቅረጽ ይዘጋጁ","FALSE","Chuẩn bị để ghi với Microphone","","Chuẩn bị để ghi với Microphone","FALSE","เตรียมที่จะบันทึกพร้อมไมโครโฟน","","เตรียมที่จะบันทึกพร้อมไมโครโฟน","FALSE","រៀបចំដើម្បីកត់ត្រាដោយមានមីក្រូហ្វូន","","រៀបចំដើម្បីកត់ត្រាដោយមានមីក្រូហ្វូន","FALSE","ການກຽມຕົວກ່ອນການບັນທຶກທີ່ມີໄມໂຄໂຟນ","","ການກຽມຕົວກ່ອນການບັນທຶກທີ່ມີໄມໂຄໂຟນ","FALSE","Bersedia untuk Rekod dengan mikrofon","Bersedia untuk Rakam dengan Mikrofon","Bersedia untuk Rakam dengan Mikrofon","TRUE","Maghanda upang mag-record ng mikropono.","","Maghanda upang mag-record ng mikropono.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tap to Record","","","audio","tap_to_record","audio.tap_to_record","Toque al Registro","Presione para grabar","Presione para grabar","TRUE","Tap para Gravar","Clica para gravar","Clica para gravar","TRUE","Touchez pour enregistrement","Tapez pour enregistrer","Tapez pour enregistrer","TRUE","הקש כדי להקליט","להתחיל הקלטה הקישו כאן","להתחיל הקלטה הקישו כאן","TRUE","الحنفية إلى سجل","","الحنفية إلى سجل","FALSE","रिकॉर्ड करने के लिए टैप","रिकॉर्ड करने के लिए दबाएं","रिकॉर्ड करने के लिए दबाएं","TRUE","রেকর্ড করতে আলতো চাপুন","","রেকর্ড করতে আলতো চাপুন","FALSE","ରେକର୍ଡ କୁ TAP","","ରେକର୍ଡ କୁ TAP","FALSE","","FALSE","Нажмите для записи","Нажмите для записи","Нажмите для записи","TRUE","轻按记录","","轻按记录","FALSE","Matsa don Record","","Matsa don Record","FALSE","Tap untuk Rekam","Ketuk untuk Merekam","Ketuk untuk Merekam","TRUE","Gonga ili Record","Bonyeza urekodi","Bonyeza urekodi","TRUE","ሪኮርድ ሁለቴ","","ሪኮርድ ሁለቴ","FALSE","Bấm để ghi","","Bấm để ghi","FALSE","แตะเพื่อบันทึก","","แตะเพื่อบันทึก","FALSE","ប៉ះទៅនឹងកំណត់ត្រា","","ប៉ះទៅនឹងកំណត់ត្រា","FALSE","ແຕະເພື່ອບັນທຶກ","","ແຕະເພື່ອບັນທຶກ","FALSE","Ketik untuk Rekod","Ketik untuk Rakam","Ketik untuk Rakam","TRUE","Tapikin upang i-record","","Tapikin upang i-record","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Stop Recording","","","audio","stop_recording","audio.stop_recording","Para de grabar","Terminar la grabación","Terminar la grabación","TRUE","Pare de gravar","Parar a Gravação","Parar a Gravação","TRUE","Arrête d'enregistrer","Arrêter l'enregistrement","Arrêter l'enregistrement","TRUE","הפסק להקליט","הפסקת הקלטה","הפסקת הקלטה","TRUE","إيقاف التسجيل","","إيقاف التسجيل","FALSE","रिकॉर्डिंग बंद करें","रिकॉर्डिंग रोकें","रिकॉर्डिंग रोकें","TRUE","স্টপ রেকর্ডিং","","স্টপ রেকর্ডিং","FALSE","ସ୍ଥଗିତ ରେକର୍ଡିଂ","","ସ୍ଥଗିତ ରେକର୍ଡିଂ","FALSE","","FALSE","Остановить запись","Остановить запись","Остановить запись","TRUE","停止录制","","停止录制","FALSE","Tsaida Recording","","Tsaida Recording","FALSE","Stop Recording","Berhenti Merekam","Berhenti Merekam","TRUE","Stop Recording","Acha kurekodi","Acha kurekodi","TRUE","መቅዳት አቁም","መቅዳት ያቁሙ","መቅዳት ያቁሙ","TRUE","stop Recording","","stop Recording","FALSE","หยุดการบันทึก","","หยุดการบันทึก","FALSE","បញ្ឈប់ការកត់ត្រា","","បញ្ឈប់ការកត់ត្រា","FALSE","ຢຸດການບັນທຶກ","","ຢຸດການບັນທຶກ","FALSE","Stop Recording","Berhenti Merakam","Berhenti Merakam","TRUE","Itigil ang pag-record","","Itigil ang pag-record","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Listen","","","audio","listen","audio.listen","Escucha","Escuchar","Escuchar","TRUE","Ouço","Ouvir","Ouvir","TRUE","Ecoutez","Écouter","Écouter","TRUE","להקשיב","","להקשיב","TRUE","استمع","","استمع","FALSE","बात सुनो","ध्वनि को सुनें","ध्वनि को सुनें","TRUE","শোনা","","শোনা","FALSE","ଶୁଣିବା","","ଶୁଣିବା","FALSE","","FALSE","Слушать","","Слушать","TRUE","听","","听","FALSE","Saurari","","Saurari","FALSE","Mendengarkan","Mendengarkan","Mendengarkan","TRUE","kusikiliza","Sikiliza","Sikiliza","TRUE","ያዳምጡ","","ያዳምጡ","FALSE","Nghe","","Nghe","FALSE","ฟัง","","ฟัง","FALSE","សូមស្តាប់","","សូមស្តាប់","FALSE","ຟັງ","","ຟັງ","FALSE","mendengar","Dengar","Dengar","TRUE","Makinig","","Makinig","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Add Audio","","","audio","add_audio","audio.add_audio","Añadir audio","Agregar audio","Agregar audio","TRUE","Adicionar áudio","Anexar Audio","Anexar Audio","TRUE","Ajouter Audio","Ajouter de l'audio","Ajouter de l'audio","TRUE","הוספת אודיו","הוספת קטע שמע (אודיו)","הוספת קטע שמע (אודיו)","TRUE","إضافة الصوت","","إضافة الصوت","FALSE","ऑडियो जोड़ें","ऑडियो डालें","ऑडियो डालें","TRUE","অডিও যোগ করুন","","অডিও যোগ করুন","FALSE","ଅଡିଓ ଯୋଡନ୍ତୁ","","ଅଡିଓ ଯୋଡନ୍ତୁ","FALSE","","FALSE","Добавить аудио","","Добавить аудио","TRUE","添加音频","","添加音频","FALSE","Add Audio","","Add Audio","FALSE","Add Audio","Tambahkan Audio","Tambahkan Audio","TRUE","Kuongeza Audio","Ongeza faili la sauti","Ongeza faili la sauti","TRUE","ኦዲዮ አክል","","ኦዲዮ አክል","FALSE","Add Audio","","Add Audio","FALSE","การเพิ่มเสียง","","การเพิ่มเสียง","FALSE","បន្ថែមអូឌីយ៉ូ","","បន្ថែមអូឌីយ៉ូ","FALSE","ຕື່ມການສຽງ","","ຕື່ມການສຽງ","FALSE","menambah Audio","Tambah Audio","Tambah Audio","TRUE","Magdagdag ng audio","","Magdagdag ng audio","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Permission to access your microphone was denied. If you previously clicked 'No', please reload and click 'Yes' when your browser asks for permission to use your microphone.","","","audio","undo_permission_denied_explanation","audio.undo_permission_denied_explanation","El permiso para acceder al micrófono fue denegada. Si antes de hacer clic en 'No', por favor, vuelva a cargar y haga clic en 'Sí' cuando su navegador le pide permiso para utilizar el micrófono.","El permiso para acceder a su micrófono fue denegado. Si ha hecho clic en 'No', vuelva a cargar la página web y haga clic en 'Sí' cuando su navegador le pida permiso para utilizar el micrófono.","El permiso para acceder a su micrófono fue denegado. Si ha hecho clic en 'No', vuelva a cargar la página web y haga clic en 'Sí' cuando su navegador le pida permiso para utilizar el micrófono.","TRUE","Permissão para acessar seu microfone foi negado. Se você já clicou 'Não', por favor, recarregar e clicar em 'Sim' quando o navegador pede permissão para usar seu microfone.","A permissão para aceder ao microfone foi negada. Se já clicou em 'Não', recarregue e clique em 'Sim' quando o seu navegador pedir permissão para usar o microfone.","A permissão para aceder ao microfone foi negada. Se já clicou em 'Não', recarregue e clique em 'Sim' quando o seu navegador pedir permissão para usar o microfone.","TRUE","L'autorisation d'accéder à votre microphone a été refusé. Si vous avez déjà cliqué sur « Non », s'il vous plaît recharger et cliquez sur « Oui » lorsque votre navigateur vous demande la permission d'utiliser votre micro.","L'autorisation d'accéder à votre microphone a été refusée. Si vous avez cliqué sur ""Non"" précédemment, veuillez recharger le navigateur et cliquer sur ""Oui” lorsqu'on vous demande l'autorisation d'utiliser votre microphone.","L'autorisation d'accéder à votre microphone a été refusée. Si vous avez cliqué sur ""Non"" précédemment, veuillez recharger le navigateur et cliquer sur ""Oui” lorsqu'on vous demande l'autorisation d'utiliser votre microphone.","TRUE","רשות לגשת למיקרופון שלך נדחתה. אם לחצת בעבר ""לא"" טען מחדש ולחץ על ""כן"" כאשר הדפדפן מבקש רשות להשתמש במיקרופון.","רשות הגישה למיקרופון נדחתה. אם לחצתם ״לא״ טענו מחדש את העמוד ולחצו ״כן״ כדי לאשר את הגישה למיקרופון.","רשות הגישה למיקרופון נדחתה. אם לחצתם ״לא״ טענו מחדש את העמוד ולחצו ״כן״ כדי לאשר את הגישה למיקרופון.","TRUE","تم رفض الإذن للوصول إلى الميكروفون. إذا نقرت سابقا 'لا'، يرجى تحميل وانقر على ""نعم"" عندما يطلب المتصفح الخاص بك للحصول على إذن لاستخدام الميكروفون.","","تم رفض الإذن للوصول إلى الميكروفون. إذا نقرت سابقا 'لا'، يرجى تحميل وانقر على ""نعم"" عندما يطلب المتصفح الخاص بك للحصول على إذن لاستخدام الميكروفون.","FALSE","अपना माइक्रोफ़ोन एक्सेस करने की अनुमति नहीं दी गई थी। यदि आप पहले क्लिक किया है 'नहीं', पुनः लोड और क्लिक करें 'हां' का आपके ब्राउज़र आपके माइक्रोफ़ोन का उपयोग करने की अनुमति के लिए पूछता है।","माइक्रोफोन प्रयोग करने का अनुमति नहीं दिया गया। अगर आपने 'नहीं' दबाया है तो कृपया पुनः लोड करें और जब आपका ब्राउज़र माइक्रोफोन उपयोग करने की अनुमति मांगे तो 'हाँ' विकल्प का चयन करें ।","माइक्रोफोन प्रयोग करने का अनुमति नहीं दिया गया। अगर आपने 'नहीं' दबाया है तो कृपया पुनः लोड करें और जब आपका ब्राउज़र माइक्रोफोन उपयोग करने की अनुमति मांगे तो 'हाँ' विकल्प का चयन करें ।","TRUE","আপনার মাইক্রোফোন অ্যাক্সেস করতে অনুমতি অস্বীকার করা হয়েছিল। আপনি পূর্বে ক্লিক যদি 'না', পুনরায় লোড করুন এবং ক্লিক করুন 'হ্যাঁ' যখন আপনার ব্রাউজার আপনার মাইক্রোফোন ব্যবহার করার অনুমতি জন্য অনুরোধ।","","আপনার মাইক্রোফোন অ্যাক্সেস করতে অনুমতি অস্বীকার করা হয়েছিল। আপনি পূর্বে ক্লিক যদি 'না', পুনরায় লোড করুন এবং ক্লিক করুন 'হ্যাঁ' যখন আপনার ব্রাউজার আপনার মাইক্রোফোন ব্যবহার করার অনুমতি জন্য অনুরোধ।","FALSE","ଆପଣଙ୍କର ମାଇକ୍ରୋଫୋନ ପ୍ରବେଶ କରିବାକୁ ଅନୁମତି ପ୍ରତ୍ୟାଖିତ ଥିଲା। ଆପଣ ପୂର୍ବରୁ 'କୌଣସି' କ୍ଲିକ୍, ଦୟାକରି ପୁନଃଲୋଡ୍ କରନ୍ତୁ ଏବଂ ଆପଣଙ୍କର ବ୍ରାଉଜର୍ ଆପଣଙ୍କର ମାଇକ୍ରୋଫୋନ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ପଚାରେ 'ହଁ' ଯେତେବେଳେ।","","ଆପଣଙ୍କର ମାଇକ୍ରୋଫୋନ ପ୍ରବେଶ କରିବାକୁ ଅନୁମତି ପ୍ରତ୍ୟାଖିତ ଥିଲା। ଆପଣ ପୂର୍ବରୁ 'କୌଣସି' କ୍ଲିକ୍, ଦୟାକରି ପୁନଃଲୋଡ୍ କରନ୍ତୁ ଏବଂ ଆପଣଙ୍କର ବ୍ରାଉଜର୍ ଆପଣଙ୍କର ମାଇକ୍ରୋଫୋନ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ପଚାରେ 'ହଁ' ଯେତେବେଳେ।","FALSE","","FALSE","Разрешение на доступ к микрофону запрещено. Если ранее нажал «Нет», пожалуйста, загрузите и нажмите кнопку «Да», когда ваш браузер запрашивает разрешение на использование микрофона.","Доступ к микрофону запрещен. Если ранее Вы нажали «Нет», пожалуйста, перезагрузитесь и нажмите «Да», когда Ваш браузер запросит разрешение на использование микрофона.","Доступ к микрофону запрещен. Если ранее Вы нажали «Нет», пожалуйста, перезагрузитесь и нажмите «Да», когда Ваш браузер запросит разрешение на использование микрофона.","TRUE","访问您的麦克风被拒绝。如果您以前单击“否”,请重新加载,然后点击“是”时,您的浏览器请求使用麦克风的权限。","","访问您的麦克风被拒绝。如果您以前单击“否”,请重新加载,然后点击“是”时,您的浏览器请求使用麦克风的权限。","FALSE","Izni domin samun Reno aka hana. Idan ka a baya ya danna 'A'a', don Allah Reload da kuma danna 'a' a lokacin da browser tambaya ga izinin amfani da Reno.","","Izni domin samun Reno aka hana. Idan ka a baya ya danna 'A'a', don Allah Reload da kuma danna 'a' a lokacin da browser tambaya ga izinin amfani da Reno.","FALSE","Izin untuk mengakses mikrofon Anda ditolak. Jika sebelumnya Anda mengklik 'Tidak', silakan kembali dan klik 'Yes' saat browser Anda meminta izin untuk menggunakan mikrofon Anda.","Izin untuk mengakses mikrofon Anda ditolak. Jika sebelumnya Anda mengklik 'Tidak', silakan kembali dan klik 'Ya' saat peramban anda meminta izin untuk menggunakan mikrofon Anda.","Izin untuk mengakses mikrofon Anda ditolak. Jika sebelumnya Anda mengklik 'Tidak', silakan kembali dan klik 'Ya' saat peramban anda meminta izin untuk menggunakan mikrofon Anda.","TRUE","Ruhusa ya kufikia maikrofoni yako yalikataliwa. Kama hapo awali clicked 'No', tafadhali pakia tena na bonyeza 'Ndiyo' wakati browser yako anauliza ruhusa ya kutumia maikrofoni yako.","Ruhusa ya kutumia maikrofoni yako ilinyimwa. Ikiwa hapo awali ulibofya ""Hapana"", tafadhali anza tena na ubonyeze ""Ndio"" wakati kisakuzi chako kinaomba ruhusa ya kutumia maikrofoni yako.","Ruhusa ya kutumia maikrofoni yako ilinyimwa. Ikiwa hapo awali ulibofya ""Hapana"", tafadhali anza tena na ubonyeze ""Ndio"" wakati kisakuzi chako kinaomba ruhusa ya kutumia maikrofoni yako.","TRUE","ማይክሮፎንዎን ለመድረስ ፍቃድ ተከልክሏል. ከዚህ ቀደም 'አይ' ጠቅ ከሆነ, ዳግም ይጫኑ እና ጠቅ ያድርጉ 'አዎ' አሳሽዎ ማይክሮፎንዎን ለመጠቀም ፈቃድ ይጠይቃል ጊዜ.","","ማይክሮፎንዎን ለመድረስ ፍቃድ ተከልክሏል. ከዚህ ቀደም 'አይ' ጠቅ ከሆነ, ዳግም ይጫኑ እና ጠቅ ያድርጉ 'አዎ' አሳሽዎ ማይክሮፎንዎን ለመጠቀም ፈቃድ ይጠይቃል ጊዜ.","FALSE","Quyền truy cập microphone của bạn đã bị từ chối. Nếu trước đây bạn nhấp vào 'Không', vui lòng tải lại và nhấp vào 'Có' khi trình duyệt của bạn yêu cầu cho phép sử dụng microphone của bạn.","","Quyền truy cập microphone của bạn đã bị từ chối. Nếu trước đây bạn nhấp vào 'Không', vui lòng tải lại và nhấp vào 'Có' khi trình duyệt của bạn yêu cầu cho phép sử dụng microphone của bạn.","FALSE","สิทธิ์ในการเข้าถึงไมโครโฟนของคุณถูกปฏิเสธ หากคุณคลิกก่อนหน้านี้ 'ไม่' โปรดโหลดและคลิกที่ 'ใช่' เมื่อเบราว์เซอร์จะขออนุญาตที่จะใช้ไมโครโฟนของคุณ","","สิทธิ์ในการเข้าถึงไมโครโฟนของคุณถูกปฏิเสธ หากคุณคลิกก่อนหน้านี้ 'ไม่' โปรดโหลดและคลิกที่ 'ใช่' เมื่อเบราว์เซอร์จะขออนุญาตที่จะใช้ไมโครโฟนของคุณ","FALSE","សិទ្ធិចូលដំណើរការម៉ៃក្រូហ្វូនរបស់អ្នកត្រូវបានបដិសេធ។ ប្រសិនបើអ្នកចុចពីមុន 'ទេ', សូមផ្ទុកឡើងវិញហើយចុច 'បាទ' នៅពេលដែលកម្មវិធីរុករករបស់អ្នកសុំការអនុញ្ញាតឱ្យប្រើមីក្រូហ្វូនរបស់អ្នក។","","សិទ្ធិចូលដំណើរការម៉ៃក្រូហ្វូនរបស់អ្នកត្រូវបានបដិសេធ។ ប្រសិនបើអ្នកចុចពីមុន 'ទេ', សូមផ្ទុកឡើងវិញហើយចុច 'បាទ' នៅពេលដែលកម្មវិធីរុករករបស់អ្នកសុំការអនុញ្ញាតឱ្យប្រើមីក្រូហ្វូនរបស់អ្នក។","FALSE","ການອະນຸຍາດໃນການເຂົ້າເຖິງ microphone ຂອງທ່ານຖືກປະຕິເສດ. ຖ້າຫາກວ່າທ່ານຄລິກໃສ່ໃນເມື່ອກ່ອນ ""ບໍ່ແມ່ນ"", ກະລຸນາໂຫຼດແລະໃຫ້ຄລິກໃສ່ 'ແມ່ນ' ໃນເວລາທີ່ຕົວທ່ອງເວັບຂອງທ່ານສໍາລັບການຂໍອະນຸຍາດໃຫ້ນໍາໃຊ້ microphone ຂອງທ່ານ.","","ການອະນຸຍາດໃນການເຂົ້າເຖິງ microphone ຂອງທ່ານຖືກປະຕິເສດ. ຖ້າຫາກວ່າທ່ານຄລິກໃສ່ໃນເມື່ອກ່ອນ ""ບໍ່ແມ່ນ"", ກະລຸນາໂຫຼດແລະໃຫ້ຄລິກໃສ່ 'ແມ່ນ' ໃນເວລາທີ່ຕົວທ່ອງເວັບຂອງທ່ານສໍາລັບການຂໍອະນຸຍາດໃຫ້ນໍາໃຊ້ microphone ຂອງທ່ານ.","FALSE","Kebenaran untuk mengakses mikrofon anda ditolak. Jika sebelum ini anda klik 'Tidak', sila muat semula dan klik 'Ya' ketika pelayar anda meminta kebenaran untuk menggunakan mikrofon anda.","Kebenaran untuk mengakses mikrofon anda ditolak. Jika sebelum ini anda klik 'Tidak', sila muat semula dan klik 'Ya' ketika pelayar anda meminta kebenaran untuk menggunakan mikrofon anda.","Kebenaran untuk mengakses mikrofon anda ditolak. Jika sebelum ini anda klik 'Tidak', sila muat semula dan klik 'Ya' ketika pelayar anda meminta kebenaran untuk menggunakan mikrofon anda.","TRUE","Ang pahintulot na ma-access ang iyong mikropono ay tinanggihan. Kung nag-click ka nang 'Hindi', mangyaring i-reload at i-click ang 'Oo' kapag humingi ng pahintulot ang iyong browser na gamitin ang iyong mikropono.","","Ang pahintulot na ma-access ang iyong mikropono ay tinanggihan. Kung nag-click ka nang 'Hindi', mangyaring i-reload at i-click ang 'Oo' kapag humingi ng pahintulot ang iyong browser na gamitin ang iyong mikropono.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Reload","","","audio","reload","audio.reload","Recargar","Recargar","Recargar","TRUE","recarregar","Recarregar","Recarregar","TRUE","Recharger","Recharger","Recharger","TRUE","לִטעוֹן מִחָדָשׁ","טעינה מחדש","טעינה מחדש","TRUE","إعادة تحميل","","إعادة تحميل","FALSE","पुनः लोड करें","पुनः लोड करें","पुनः लोड करें","TRUE","পুনরায় লোড করুন","","পুনরায় লোড করুন","FALSE","ପୁନଃଲୋଡ୍","","ପୁନଃଲୋଡ୍","FALSE","","FALSE","Reload","Перезагрузка","Перезагрузка","TRUE","刷新","","刷新","FALSE","sake sakawa","","sake sakawa","FALSE","Reload","Memuat Ulang","Memuat Ulang","TRUE","Pakia upya","Pakia upya","Pakia upya","TRUE","ዳግም ጫን","","ዳግም ጫን","FALSE","Nạp lại","","Nạp lại","FALSE","โหลด","","โหลด","FALSE","ផ្ទុកឡើងវិញ","","ផ្ទុកឡើងវិញ","FALSE","Reload","","Reload","FALSE","Tambah nilai","Muat semula","Muat semula","TRUE","Reload","","Reload","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Edit Audio","","","audio","edit_audio","audio.edit_audio","Editar audio","Editar audio","Editar audio","TRUE","Editar Áudio","Editar Audio","Editar Audio","TRUE","Modifier Audio","Éditer l'audio","Éditer l'audio","TRUE","אודיו ערוך","עריכת קטע שמע (אודיו)","עריכת קטע שמע (אודיו)","TRUE","تحرير الصوت","","تحرير الصوت","FALSE","ऑडियो संपादित करें","ऑडियो संपादित करें","ऑडियो संपादित करें","TRUE","অডিও সম্পাদনা","","অডিও সম্পাদনা","FALSE","ଅଡିଓ ସମ୍ପାଦନ","","ଅଡିଓ ସମ୍ପାଦନ","FALSE","","FALSE","Редактирование аудио","","Редактирование аудио","TRUE","编辑音频","","编辑音频","FALSE","Shirya Audio","","Shirya Audio","FALSE","mengedit Audio","Menyunting Audion","Menyunting Audion","TRUE","Edit Audio","Hariri faili la sauti","Hariri faili la sauti","TRUE","አርትዕ ኦዲዮ","","አርትዕ ኦዲዮ","FALSE","chỉnh sửa âm thanh","","chỉnh sửa âm thanh","FALSE","แก้ไขเสียง","","แก้ไขเสียง","FALSE","កែសម្រួលអូឌីយ៉ូ","","កែសម្រួលអូឌីយ៉ូ","FALSE","ແກ້ໄຂສຽງ","","ແກ້ໄຂສຽງ","FALSE","Edit Audio","Edit Audio","Edit Audio","TRUE","I-edit ang Audio","","I-edit ang Audio","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Adjust Columns","","","column","adjust_columns","column.adjust_columns","ajustar Columnas","Ajustar columnas","Ajustar columnas","TRUE","ajustar Colunas","Ajustar as Colunas","Ajustar as Colunas","TRUE","ajuster les colonnes","Ajuster les colonnes","Ajuster les colonnes","TRUE","התאם עמודות","שינוי רוחב העמודות","שינוי רוחב העמודות","TRUE","ضبط الأعمدة","تعديل الصفوف","تعديل الصفوف","FALSE","कॉलम को समायोजित करें","कॉलम को व्यवस्थित करें","कॉलम को व्यवस्थित करें","TRUE","কলাম সমন্বয়","","কলাম সমন্বয়","FALSE","ସ୍ତମ୍ଭଗୁଡିକ ନିୟନ୍ତ୍ରଣ","","ସ୍ତମ୍ଭଗୁଡିକ ନିୟନ୍ତ୍ରଣ","FALSE","","FALSE","Настройка столбцов","","Настройка столбцов","TRUE","调整列","","调整列","FALSE","daidaita ginshikan","","daidaita ginshikan","FALSE","Sesuaikan Kolom","Menyesuaikan Kolom","Menyesuaikan Kolom","TRUE","kurekebisha nguzo","Rekebisha safu","Rekebisha safu","TRUE","አምዶች አስተካክል","አምዶቹን ያስተካክሉ","አምዶቹን ያስተካክሉ","TRUE","Điều chỉnh Cột","","Điều chỉnh Cột","FALSE","ปรับคอลัมน์","","ปรับคอลัมน์","FALSE","លៃតម្រូវជួរឈរ","","លៃតម្រូវជួរឈរ","FALSE","ປັບ Columns","","ປັບ Columns","FALSE","Laraskan Columns","Laraskan Lajur","Laraskan Lajur","TRUE","Ayusin ang mga haligi","","Ayusin ang mga haligi","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Width","","","column","width","column.width","Anchura","El ancho","El ancho","TRUE","Largura","Largura","Largura","TRUE","Largeur","Largeur","Largeur","TRUE","רוֹחַב","רוחב","רוחב","TRUE","عرض","العرض","العرض","FALSE","चौड़ाई","चौड़ाई","चौड़ाई","TRUE","প্রস্থ","","প্রস্থ","FALSE","ଚଉଡା","","ଚଉଡା","FALSE","","FALSE","Ширина","","Ширина","TRUE","宽度","","宽度","FALSE","nisa","","nisa","FALSE","Lebar","Lebar","Lebar","TRUE","upana","upana","upana","TRUE","ስፋት","ስፋት","ስፋት","TRUE","Chiều rộng","","Chiều rộng","FALSE","ความกว้าง","","ความกว้าง","FALSE","ទទឹង","","ទទឹង","FALSE","width","","width","FALSE","lebar","Lebar","Lebar","TRUE","Lapad","","Lapad","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Enter your message","","","contact","enter_message","contact.enter_message","Ingrese su mensaje","Escriba su mensaje","Escriba su mensaje","TRUE","Digite sua mensagem","Escreva a sua mensagem","Escreva a sua mensagem","TRUE","entrez votre message","Entrez votre message","Entrez votre message","TRUE","הזן את הודעתך","הזנת הודעה","הזנת הודעה","TRUE","أدخل رسالتك","","أدخل رسالتك","FALSE","अपना संदेश दर्ज करें","अपना संदेश दर्ज करें","अपना संदेश दर्ज करें","TRUE","আপনার মেসেজ লিখুন","","আপনার মেসেজ লিখুন","FALSE","ଆପଣଙ୍କର ବାର୍ତ୍ତା ପ୍ରବେଶ","","ଆପଣଙ୍କର ବାର୍ତ୍ତା ପ୍ରବେଶ","FALSE","","FALSE","Введите ваше сообщение","Введите Ваше сообщение","Введите Ваше сообщение","TRUE","输入您的信息","","输入您的信息","FALSE","Shigar da sako","","Shigar da sako","FALSE","Masukkan pesan Anda","Masukkan pesan anda","Masukkan pesan anda","TRUE","Andika ujumbe wako","Andika ujumbe wako","Andika ujumbe wako","TRUE","መልዕክትዎን ያስገቡ","መልዕክትዎን ያስገቡ","መልዕክትዎን ያስገቡ","TRUE","Nhập tin nhắn của bạn","","Nhập tin nhắn của bạn","FALSE","ป้อนข้อความของคุณ","","ป้อนข้อความของคุณ","FALSE","បញ្ចូលសាររបស់អ្នក","","បញ្ចូលសាររបស់អ្នក","FALSE","ກະລຸນາໃສ່ຂໍ້ຄວາມຂອງທ່ານ","","ກະລຸນາໃສ່ຂໍ້ຄວາມຂອງທ່ານ","FALSE","Masukkan mesej anda","Masukkan mesej anda","Masukkan mesej anda","TRUE","Ipasok ang iyong mensahe","","Ipasok ang iyong mensahe","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Your Email Address","","","contact","your_email_address","contact.your_email_address","Tu correo electrónico","Su correo electrónico","Su correo electrónico","TRUE","Seu endereço de email","Escreva o seu email","Escreva o seu email","TRUE","Votre adresse email","Votre adresse de courriel","Votre adresse de courriel","TRUE","כתובת המייל שלך","כתובת דוא״ל","כתובת דוא״ל","TRUE","عنوان بريدك الإلكتروني","","عنوان بريدك الإلكتروني","FALSE","आपका ईमेल पता","आपका ईमेल","आपका ईमेल","TRUE","আপনার ইমেইল ঠিকানা","","আপনার ইমেইল ঠিকানা","FALSE","ଆପଣଙ୍କର ଇମେଲ ଠିକଣା","","ଆପଣଙ୍କର ଇମେଲ ଠିକଣା","FALSE","","FALSE","Ваш адрес электронной почты","","Ваш адрес электронной почты","TRUE","您的电子邮件地址","","您的电子邮件地址","FALSE","Adireshin i-mel dinki","","Adireshin i-mel dinki","FALSE","Alamat email anda","Alamat Email Anda","Alamat Email Anda","TRUE","Barua pepe yako mitaani","Barua pepe yako","Barua pepe yako","TRUE","የእርስዎ ኢሜይል አድራሻ","የእርስዎ ኢሜይል አድራሻ","የእርስዎ ኢሜይል አድራሻ","TRUE","Địa chỉ email của bạn","","Địa chỉ email của bạn","FALSE","ที่อยู่อีเมล์ของคุณ","","ที่อยู่อีเมล์ของคุณ","FALSE","អាសយដ្ឋានអ៊ីមែលរបស់អ្នក","","អាសយដ្ឋានអ៊ីមែលរបស់អ្នក","FALSE","ທີ່​ຢູ່​ອີ​ເມວ​ຂອງ​ເຈົ້າ","","ທີ່​ຢູ່​ອີ​ເມວ​ຂອງ​ເຈົ້າ","FALSE","Alamat E-mel anda","Alamat E-mel Anda","Alamat E-mel Anda","TRUE","Ang iyong email address","","Ang iyong email address","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Email","","","contact","email","contact.email","Correo electrónico","Correo electrónico","Correo electrónico","TRUE","O email","Email","Email","TRUE","Email","Adresse de courriel","Adresse de courriel","TRUE","אימייל","דוא״ל","דוא״ל","TRUE","البريد الإلكتروني","","البريد الإلكتروني","FALSE","ईमेल","ईमेल","ईमेल","TRUE","ইমেইল","","ইমেইল","FALSE","ଇମେଲ୍","","ଇମେଲ୍","FALSE","","FALSE","Электронное письмо","","Электронное письмо","TRUE","电子邮件","","电子邮件","FALSE","email","","email","FALSE","Surel","Email","Email","TRUE","Barua pepe","Barua pepe ","Barua pepe ","TRUE","ኢሜይል","ኢሜይል","ኢሜይል","TRUE","E-mail","","E-mail","FALSE","อีเมล์","","อีเมล์","FALSE","អ៊ីម៉ែល","","អ៊ីម៉ែល","FALSE","Email","","Email","FALSE","e-mel","e-mel","e-mel","TRUE","Email","","Email","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Send Message","","","contact","send_message","contact.send_message","Enviar mensaje","Enviar el mensaje","Enviar el mensaje","TRUE","Enviar mensagem","Enviar Mensagem","Enviar Mensagem","TRUE","Envoyer le message","Envoyer le message","Envoyer le message","TRUE","לשלוח הודעה","","לשלוח הודעה","TRUE","إرسال رسالة","","إرسال رسالة","FALSE","मेसेज भेजें","संदेश भेजें","संदेश भेजें","TRUE","বার্তা পাঠান","","বার্তা পাঠান","FALSE","ବାର୍ତ୍ତା ପଠାନ୍ତୁ","","ବାର୍ତ୍ତା ପଠାନ୍ତୁ","FALSE","","FALSE","Отправить сообщение","","Отправить сообщение","TRUE","发信息","","发信息","FALSE","aika sako","","aika sako","FALSE","Mengirim pesan","Mengirim Pesan","Mengirim Pesan","TRUE","Tuma Ujumbe","Tuma ujumbe ","Tuma ujumbe ","TRUE","መልዕክት ላክ","መልዕክት ላክ","መልዕክት ላክ","TRUE","Gửi tin nhắn","","Gửi tin nhắn","FALSE","ส่งข้อความ","","ส่งข้อความ","FALSE","ផ្ញើ​សារ","","ផ្ញើ​សារ","FALSE","ສົ່ງ​ຂໍ້​ຄວາມ","","ສົ່ງ​ຂໍ້​ຄວາມ","FALSE","Menghantar mesej","Hantar Mesej","Hantar Mesej","TRUE","Magpadala ng Mensahe","","Magpadala ng Mensahe","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Message sent. We will reply as soon as we can.","","","contact","message_sent","contact.message_sent","Mensaje enviado. Le responderemos tan pronto como nos sea posible.","Mensaje enviado. Responderemos lo antes posible.","Mensaje enviado. Responderemos lo antes posible.","TRUE","Mensagem enviada. Nós responderemos o mais rapidamente possível.","Mensagem enviada. Nós responderemos o mais rápido possível.","Mensagem enviada. Nós responderemos o mais rápido possível.","TRUE","Message envoyé. Nous vous répondrons dès que possible.","Message envoyé. Nous vous répondrons sous peu.","Message envoyé. Nous vous répondrons sous peu.","TRUE","הודעה נשלחה. אנחנו נשיב בהקדם האפשרי.","ההודעה נשלחה. נענה בהקדם האפשרי. ","ההודעה נשלחה. נענה בהקדם האפשרי. ","TRUE","تم الارسال. سوف نقوم بالرد في أقرب وقت ممكن.","","تم الارسال. سوف نقوم بالرد في أقرب وقت ممكن.","FALSE","मैसेज बेजा गया। हम जितनी जल्दी हो हम कर सकते हैं उत्तर देगा।","संदेश चला गया। जल्द ही आपको संपर्क करेंगे।","संदेश चला गया। जल्द ही आपको संपर्क करेंगे।","TRUE","বার্তা পাঠানো. আমরা যত শীঘ্র সম্ভব উত্তর দিতে হবে।","","বার্তা পাঠানো. আমরা যত শীঘ্র সম্ভব উত্তর দিতে হবে।","FALSE","ବାର୍ତ୍ତା ପଠାଇଲେ। ଆମେ ଶୀଘ୍ର ସମ୍ଭବ ଆମେ ଉତ୍ତର କରିବ।","","ବାର୍ତ୍ତା ପଠାଇଲେ। ଆମେ ଶୀଘ୍ର ସମ୍ଭବ ଆମେ ଉତ୍ତର କରିବ।","FALSE","","FALSE","Сообщение отправлено. Мы ответим как только мы можем.","Сообщение отправлено. Мы ответим Вам, как только сможем.","Сообщение отправлено. Мы ответим Вам, как только сможем.","TRUE","邮件发送。我们将尽快进行答复。","","邮件发送。我们将尽快进行答复。","FALSE","Saƙon aika. Za mu amsa da zaran mun iya.","","Saƙon aika. Za mu amsa da zaran mun iya.","FALSE","Pesan terkirim. Kami akan membalas secepat kami bisa.","Pesan terkirim. Kami akan membalas pesan Anda secepat mungkin","Pesan terkirim. Kami akan membalas pesan Anda secepat mungkin","TRUE","Ujumbe umetumwa. Sisi jibu kwa haraka iwezekanavyo.","Ujumbe umetumwa. Tutajibu haraka iwezekanavyo.","Ujumbe umetumwa. Tutajibu haraka iwezekanavyo.","TRUE","መልዕክት ተልኳል. እኛም እንደ በቻልነው መጠን መልስ ይሆናል.","","መልዕክት ተልኳል. እኛም እንደ በቻልነው መጠን መልስ ይሆናል.","FALSE","Tin nhắn được gửi đi. Chúng tôi sẽ trả lời trong thời gian sớm nhất có thể.","","Tin nhắn được gửi đi. Chúng tôi sẽ trả lời trong thời gian sớm nhất có thể.","FALSE","ส่งข้อความ. เราจะตอบกลับโดยเร็วที่สุดเท่าที่เราสามารถทำได้","","ส่งข้อความ. เราจะตอบกลับโดยเร็วที่สุดเท่าที่เราสามารถทำได้","FALSE","សារផ្ញើ។ យើងនឹងឆ្លើយតបឱ្យបានឆាប់តាមដែលយើងអាចធ្វើបាន។","","សារផ្ញើ។ យើងនឹងឆ្លើយតបឱ្យបានឆាប់តាមដែលយើងអាចធ្វើបាន។","FALSE","ຂໍ້ຄວາມຖືກສົ່ງ. ພວກເຮົາຈະຕອບໃນທັນທີທີ່ພວກເຮົາສາມາດເຮັດໄດ້.","","ຂໍ້ຄວາມຖືກສົ່ງ. ພວກເຮົາຈະຕອບໃນທັນທີທີ່ພວກເຮົາສາມາດເຮັດໄດ້.","FALSE","Pesanan dihantar. Kami akan membalas secepat yang boleh.","Mesej dihantar. Kami akan membalas mesej anda dengan secepat mungkin.","Mesej dihantar. Kami akan membalas mesej anda dengan secepat mungkin.","TRUE","Ipinadala ang mensahe. Kami ay tumugon sa lalong madaling panahon.","","Ipinadala ang mensahe. Kami ay tumugon sa lalong madaling panahon.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"What is your question or comment?","","","contact","what_is_your_question","contact.what_is_your_question","¿Cuál es su pregunta o comentario?","¿Cuál es su pregunta o comentario?","¿Cuál es su pregunta o comentario?","TRUE","Qual é a sua pergunta ou comentário?","Qual é a sua pergunta ou comentário?","Qual é a sua pergunta ou comentário?","TRUE","Quelle est votre question ou un commentaire?","Quelle est votre question ou votre commentaire ?","Quelle est votre question ou votre commentaire ?","TRUE","מהי השאלה או ההערה שלך?","מהי השאלה או ההערה?","מהי השאלה או ההערה?","TRUE","ما هو سؤالك أو التعليق؟","","ما هو سؤالك أو التعليق؟","FALSE","अपने प्रश्न या टिप्पणी है?","आपका सवाल या टिप्पणी क्या है?","आपका सवाल या टिप्पणी क्या है?","TRUE","আপনার প্রশ্ন বা মন্তব্য কি?","","আপনার প্রশ্ন বা মন্তব্য কি?","FALSE","ଆପଣଙ୍କ ପ୍ରଶ୍ନ କିମ୍ବା ମନ୍ତବ୍ୟ କଣ?","","ଆପଣଙ୍କ ପ୍ରଶ୍ନ କିମ୍ବା ମନ୍ତବ୍ୟ କଣ?","FALSE","","FALSE","Что ваш вопрос или комментарий?","В чем заключается Ваш вопрос или комментарий?","В чем заключается Ваш вопрос или комментарий?","TRUE","什么是您的问题或评论?","","什么是您的问题或评论?","FALSE","Mene ne tambaya ko comment?","","Mene ne tambaya ko comment?","FALSE","Apa pertanyaan atau komentar?","Apa pertanyaan atau komentar anda?","Apa pertanyaan atau komentar anda?","TRUE","swali au maoni ni nini?","Je! Swali lako au maoni yako ni nini?","Je! Swali lako au maoni yako ni nini?","TRUE","የእርስዎ ጥያቄ ወይም አስተያየት ምንድን ነው?","የእርስዎ ጥያቄ ወይም አስተያየት ምንድን ነው?","የእርስዎ ጥያቄ ወይም አስተያየት ምንድን ነው?","TRUE","Câu hỏi hoặc nhận xét của bạn là gì?","","Câu hỏi hoặc nhận xét của bạn là gì?","FALSE","คำถามหรือความคิดเห็นของคุณคืออะไร?","","คำถามหรือความคิดเห็นของคุณคืออะไร?","FALSE","សំណួរឬមតិយោបល់របស់អ្នកគឺជាអ្វី?","","សំណួរឬមតិយោបល់របស់អ្នកគឺជាអ្វី?","FALSE","ຄໍາຖາມຫລືຂໍ້ຄິດເຫັນຂອງທ່ານແມ່ນຫຍັງ?","","ຄໍາຖາມຫລືຂໍ້ຄິດເຫັນຂອງທ່ານແມ່ນຫຍັງ?","FALSE","Apa soalan atau komen anda?","Apakah soalan atau komen anda?","Apakah soalan atau komen anda?","TRUE","Ano ang iyong tanong o komento?","","Ano ang iyong tanong o komento?","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Request to Add a Manager","","","contributors","request_to_add_manager","contributors.request_to_add_manager","Pide que se añada un gestor","Solicitud para añadir un gerente","Solicitud para añadir un gerente","TRUE","Pedido para adicionar um gerente","Pedido para adicionar um Gestor","Pedido para adicionar um Gestor","TRUE","Demande d'ajout d'un gestionnaire de","Demander d'ajouter un gérant","Demander d'ajouter un gérant","TRUE","בקשה להוספת מנהל","","בקשה להוספת מנהל","TRUE","طلب إضافة مدير","","طلب إضافة مدير","FALSE","एक प्रबंधक जोड़ने के लिए अनुरोध","प्रबंधक जोड़ने के लिए अनुरोध करें","प्रबंधक जोड़ने के लिए अनुरोध करें","TRUE","একটি ম্যানেজার যুক্ত করার অনুরোধ","","একটি ম্যানেজার যুক্ত করার অনুরোধ","FALSE","ଏକ ପରିଚାଳକ ଯୋଡନ୍ତୁ ଅନୁରୋଧ","","ଏକ ପରିଚାଳକ ଯୋଡନ୍ତୁ ଅନୁରୋଧ","FALSE","","FALSE","Запрос на добавление менеджера","","Запрос на добавление менеджера","TRUE","请求添加经理","","请求添加经理","FALSE","Tambayi zuwa Add a Manager","","Tambayi zuwa Add a Manager","FALSE","Meminta untuk Menambahkan Manajer","Meminta untuk Menambahkan Manajer","Meminta untuk Menambahkan Manajer","TRUE","Ombi Kuongeza Meneja","Omba kuongeza Msimamizi","Omba kuongeza Msimamizi","TRUE","አንድ አስተዳዳሪ አክል ወደ ይጠይቁ","","አንድ አስተዳዳሪ አክል ወደ ይጠይቁ","FALSE","Yêu cầu để Thêm một Giám đốc","","Yêu cầu để Thêm một Giám đốc","FALSE","ขอให้เพิ่มผู้จัดการ","","ขอให้เพิ่มผู้จัดการ","FALSE","ស្នើសុំដើម្បីបន្ថែមកម្មវិធីគ្រប់គ្រងមួយ","","ស្នើសុំដើម្បីបន្ថែមកម្មវិធីគ្រប់គ្រងមួយ","FALSE","ຮ້ອງຂໍໃຫ້ເພີ່ມການເປັນ","","ຮ້ອງຂໍໃຫ້ເພີ່ມການເປັນ","FALSE","Meminta untuk Tambah seorang Pengurus","Minta untuk Tambah Pengurus","Minta untuk Tambah Pengurus","TRUE","Humiling upang magdagdag ng isang tagapamahala","","Humiling upang magdagdag ng isang tagapamahala","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Request Access","","","contributors","request_access","contributors.request_access","Solicitar acceso","Solicitud de acceso","Solicitud de acceso","TRUE","Solicitar acesso","Pedido de Acesso","Pedido de Acesso","TRUE","Demande d'accès","Demande d'accès","Demande d'accès","TRUE","לבקש גישה","בקשה לגישה","בקשה לגישה","TRUE","طلب الدخول","","طلب الدخول","FALSE","पहुँचने का अनुरोध करें","प्रवेश करने की अनुमति मांगे","प्रवेश करने की अनुमति मांगे","TRUE","অনুরোধ এক্সেস","","অনুরোধ এক্সেস","FALSE","ଅନୁରୋଧ ପ୍ରବେଶାଧିକାର","","ଅନୁରୋଧ ପ୍ରବେଶାଧିକାର","FALSE","","FALSE","Запрос доступа","","Запрос доступа","TRUE","申请进入","","申请进入","FALSE","request Access","","request Access","FALSE","Permintaan Akses","Permintaan Akses","Permintaan Akses","TRUE","ombi Access","Omba idhini ya kuingia","Omba idhini ya kuingia","TRUE","መዳረሻ ጠይቅ","","መዳረሻ ጠይቅ","FALSE","Yêu cầu Truy cập","","Yêu cầu Truy cập","FALSE","ขอเข้าใช้","","ขอเข้าใช้","FALSE","ស្នើចូល","","ស្នើចូល","FALSE","ຂໍໃຊ້ບໍລິການເຂົ້າ","","ຂໍໃຊ້ບໍລິການເຂົ້າ","FALSE","permintaan akses","Minta Akses","Minta Akses","TRUE","Humiling ng access","","Humiling ng access","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"This Living Dictionary was produced at Living Tongues Institute for Endangered Languages under the direction of the following people:","","","contributors","ld_produced_by","contributors.ld_produced_by","Este diccionario de estar fue producida en el Instituto de Lenguas Vivas para los Idiomas en peligro de extinción bajo la dirección de las siguientes personas:","Este Diccionario Vivo fue producido en el Living Tongues Institute for Endangered Languages bajo la dirección de las siguientes personas:","Este Diccionario Vivo fue producido en el Living Tongues Institute for Endangered Languages bajo la dirección de las siguientes personas:","TRUE","Este dicionário vivo foi produzido em viver Instituto Tongues para Línguas Ameaçadas, sob a direção das seguintes pessoas:","Este Dicionário Vivo foi produzido no Living Tongues Institute for Endangered Languages sob a direcção das seguintes pessoas:","Este Dicionário Vivo foi produzido no Living Tongues Institute for Endangered Languages sob a direcção das seguintes pessoas:","TRUE","Ce Living Dictionary a été produit à Living Tongues Institute for Endangered Languages ​​sous la direction des personnes suivantes:","Ce dictionnaire vivant fut produit au Living Tongues Institute for Endangered Languages sous la direction des personnes suivantes:","Ce dictionnaire vivant fut produit au Living Tongues Institute for Endangered Languages sous la direction des personnes suivantes:","TRUE","חיים זה מילון הופק על חיים לשונות מכון שפות בסכנת הכחדה בניהולו של האנשים הבאים:","מילון חי זה הופק על-ידי מכון לשונות חיים עבור שפות בסכנת הכחדה ובהנהגתם של האנשים הבאים:","מילון חי זה הופק על-ידי מכון לשונות חיים עבור שפות בסכנת הכחדה ובהנהגתם של האנשים הבאים:","TRUE","وقد أنتج هذا قاموس المعيشة في معهد اللغات الحية للغات المهددة تحت إشراف الشعب التالية:","","وقد أنتج هذا قاموس المعيشة في معهد اللغات الحية للغات المهددة تحت إشراف الشعب التالية:","FALSE","यह लिविंग शब्दकोश निम्नलिखित लोगों के निर्देशन में लुप्तप्राय भाषाओं के लिए लिविंग जीभ संस्थान में तैयार की गई थी:","लिविंग शब्दकोश निम्नलिखित लोगों के निर्देशन में लुप्तप्राय भाषाओं के लिए लिविंग टंग्स संस्था ने निर्मित किया है:","लिविंग शब्दकोश निम्नलिखित लोगों के निर्देशन में लुप्तप्राय भाषाओं के लिए लिविंग टंग्स संस्था ने निर्मित किया है:","TRUE","তবে সেই জীবন্ত অভিধান অনুসরণ করছে এমন লোকদের নির্দেশনায় লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউটে উত্পাদিত হয়েছে:","","তবে সেই জীবন্ত অভিধান অনুসরণ করছে এমন লোকদের নির্দেশনায় লুপ্তপ্রায় ভাষাসমূহ জন্য লিভিং মুখের ইনস্টিটিউটে উত্পাদিত হয়েছে:","FALSE","ଏହି Living Dictionary ଅଧୀନରେ ନିମ୍ନଲିଖିତ ଲୋକଙ୍କ direction ବିରଳ ଭାଷା ପାଇଁ Living ଭାଷା ପ୍ରତିଷ୍ଠାନ ରେ ଉତ୍ପାଦିତ ହୋଇଥିଲା:","","ଏହି Living Dictionary ଅଧୀନରେ ନିମ୍ନଲିଖିତ ଲୋକଙ୍କ direction ବିରଳ ଭାଷା ପାଇଁ Living ଭାଷା ପ୍ରତିଷ୍ଠାନ ରେ ଉତ୍ପାଦିତ ହୋଇଥିଲା:","FALSE","","FALSE","Этот Живой словарь был произведен в жизни институт косноязычия для вымирающих языков под руководством следующих людей:","Данный Живой Словарь был создан в Институте поддержки исчезающих языков Living Tongues под руководством следующих людей:","Данный Живой Словарь был создан в Институте поддержки исчезающих языков Living Tongues под руководством следующих людей:","TRUE","这种生活字典在生活方言研究所对下列人员的指导下濒危语言产生:","","这种生活字典在生活方言研究所对下列人员的指导下濒危语言产生:","FALSE","Wannan Living Dictionary da aka samar a Living Harsuna Institute for miyagun Harsuna karkashin shugabanci na wadannan mutane:","","Wannan Living Dictionary da aka samar a Living Harsuna Institute for miyagun Harsuna karkashin shugabanci na wadannan mutane:","FALSE","Kamus Hidup ini diproduksi di Living Tongues Institute for Endangered Languages ​​di bawah arahan orang-orang berikut:","Kamus Hidup ini diproduksi di Living Tongue Institute for Endangered Languages di bawah arahan orang-orang berikut ini:","Kamus Hidup ini diproduksi di Living Tongue Institute for Endangered Languages di bawah arahan orang-orang berikut ini:","TRUE","Hii Hai kamusi ilikuwa zinazozalishwa katika Living Tongues Taasisi ya hatarini Lugha chini ya uongozi wa watu wafuatao:","Hii Kamusi Hai ilitengenezwa na Taasisi ya Living Tongues ya Lugha Zilizohatarini chini ya uongozi wa watu wafuatao:","Hii Kamusi Hai ilitengenezwa na Taasisi ya Living Tongues ya Lugha Zilizohatarini chini ya uongozi wa watu wafuatao:","TRUE","ይህ ሕያው መዝገበ የሚከተሉት ሰዎች አመራር ስር የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም ላይ ምርት ነበር:","","ይህ ሕያው መዝገበ የሚከተሉት ሰዎች አመራር ስር የተቃረቡ ቋንቋዎች ለ ሊቪንግ ተቋም ላይ ምርት ነበር:","FALSE","Từ điển sống này được sản xuất tại Viện Lưỡi Living cho nguy cơ tuyệt chủng Ngôn ngữ dưới sự chỉ đạo của những người sau đây:","","Từ điển sống này được sản xuất tại Viện Lưỡi Living cho nguy cơ tuyệt chủng Ngôn ngữ dưới sự chỉ đạo của những người sau đây:","FALSE","พจนานุกรม Living นี้ได้รับการผลิตที่ใช้ชีวิตลิ้นสถาบันเพื่อการใกล้สูญพันธุ์ภาษาภายใต้การดูแลของผู้คนต่อไปนี้:","","พจนานุกรม Living นี้ได้รับการผลิตที่ใช้ชีวิตลิ้นสถาบันเพื่อการใกล้สูญพันธุ์ภาษาภายใต้การดูแลของผู้คนต่อไปนี้:","FALSE","វចនានុក្រមការរស់នៅនេះត្រូវបានផលិតនៅវិទ្យាស្ថានភាសាសម្រាប់សត្វព្រៃជិតផុតភាសាការរស់នៅការដឹកនាំរបស់ប្រជាជនក្រោមការដូចខាងក្រោមនេះ:","","វចនានុក្រមការរស់នៅនេះត្រូវបានផលិតនៅវិទ្យាស្ថានភាសាសម្រាប់សត្វព្រៃជិតផុតភាសាការរស់នៅការដឹកនាំរបស់ប្រជាជនក្រោមការដូចខាងក្រោមនេះ:","FALSE","Dictionary ດໍາລົງຊີວິດນີ້ໄດ້ຜະລິດຢູ່ໃນດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາພາຍໃຕ້ການຊີ້ນໍາຂອງປະຊາຊົນຕໍ່ໄປນີ້ໄດ້:","","Dictionary ດໍາລົງຊີວິດນີ້ໄດ້ຜະລິດຢູ່ໃນດໍາລົງຊີວິດພາສາສະຖາບັນສໍາລັບການສູນພາສາພາຍໃຕ້ການຊີ້ນໍາຂອງປະຊາຊົນຕໍ່ໄປນີ້ໄດ້:","FALSE","Ini Kamus Living dihasilkan di Living Tongues Institut Terancam Bahasa yang di bawah arahan orang-orang berikut:","Living Dictionary ini dihasilkan di Institut Living Tongues bagi Bahasa Terancam di bawah arahan orang berikut:","Living Dictionary ini dihasilkan di Institut Living Tongues bagi Bahasa Terancam di bawah arahan orang berikut:","TRUE","Ang nabubuhay na diksyunaryo na ito ay ginawa sa buhay na mga wika na institute para sa mga endangered na wika sa ilalim ng direksyon ng mga sumusunod na tao:","","Ang nabubuhay na diksyunaryo na ito ay ginawa sa buhay na mga wika na institute para sa mga endangered na wika sa ilalim ng direksyon ng mga sumusunod na tao:","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Managers","","","contributors","managers","contributors.managers","Los gestores","Administradores","Administradores","TRUE","gestores","Gestores ","Gestores ","TRUE","Les gestionnaires","Les gérants","Les gérants","TRUE","מנהלים","","מנהלים","TRUE","مدراء","","مدراء","FALSE","प्रबंधक","प्रबंधक गण","प्रबंधक गण","TRUE","পরিচালকের","","পরিচালকের","FALSE","ପରିଚାଳକଗଣଙ୍କୁ","","ପରିଚାଳକଗଣଙ୍କୁ","FALSE","","FALSE","Менеджеры","","Менеджеры","TRUE","经理","","经理","FALSE","Managers","","Managers","FALSE","manajer","Pengelolah","Pengelolah","TRUE","Wasimamizi","Wasimamizi","Wasimamizi","TRUE","አስተዳዳሪዎች","አስተዳዳሪዎች","አስተዳዳሪዎች","TRUE","nhà quản lý","","nhà quản lý","FALSE","ผู้จัดการ","","ผู้จัดการ","FALSE","អ្នកចាត់ការទូទៅ","","អ្នកចាត់ការទូទៅ","FALSE","ຈັດ","","ຈັດ","FALSE","pengurus","Pengurus","Pengurus","TRUE","Mga Tagapamahala","","Mga Tagapamahala","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"speakers and any other collaborators","","","contributors","speakers_other_collaborators","contributors.speakers_other_collaborators","altavoces y otros colaboradores","hablantes y otros colaboradores","hablantes y otros colaboradores","TRUE","alto-falantes e quaisquer outros colaboradores","Falantes e outros colaboradores","Falantes e outros colaboradores","TRUE","haut-parleurs et d'autres collaborateurs","les locuteurs et tout autre collaborateur","les locuteurs et tout autre collaborateur","TRUE","רמקולים וכל משתפי פעולה אחרים","דוברים, מתנדבים, ומשתפי פעולה אחרים","דוברים, מתנדבים, ומשתפי פעולה אחרים","TRUE","مكبرات الصوت وأي المتعاونين الآخرين","","مكبرات الصوت وأي المتعاونين الآخرين","FALSE","वक्ताओं और किसी भी अन्य सहयोगियों","वक्ता और अन्य सहयोगी","वक्ता और अन्य सहयोगी","TRUE","স্পিকার এবং অন্য কোন সহযোগী","","স্পিকার এবং অন্য কোন সহযোগী","FALSE","ସ୍ପିକର ଏବଂ ଅନ୍ୟ କୌଣସି ସହକର୍ମୀ","","ସ୍ପିକର ଏବଂ ଅନ୍ୟ କୌଣସି ସହକର୍ମୀ","FALSE","","FALSE","колонки и любые другие сотрудники","информанты и любые другие помощники","информанты и любые другие помощники","TRUE","扬声器和任何其他合作者","","扬声器和任何其他合作者","FALSE","jawabai da kuma wani hadin gwiwar","","jawabai da kuma wani hadin gwiwar","FALSE","speaker dan setiap kolaborator lainnya","Penutur dan setiap kolaborator lainnya","Penutur dan setiap kolaborator lainnya","TRUE","wasemaji na washiriki nyingine yoyote","wazungumzaji na washirika wengine wowote","wazungumzaji na washirika wengine wowote","TRUE","ተናጋሪዎች እና ሌሎች ተባባሪዎች","ተናጋሪዎች እና ሌሎች ተባባሪዎች","ተናጋሪዎች እና ሌሎች ተባባሪዎች","TRUE","loa và bất kỳ cộng tác viên khác","","loa và bất kỳ cộng tác viên khác","FALSE","ลำโพงและผู้ร่วมงานอื่น ๆ","","ลำโพงและผู้ร่วมงานอื่น ๆ","FALSE","វាគ្មិននិងអ្នកសហការផ្សេងទៀតណាមួយ","","វាគ្មិននិងអ្នកសហការផ្សេងទៀតណាមួយ","FALSE","ລໍາໂພງແລະຜູ້ຮ່ວມມືອື່ນໆ","","ລໍາໂພງແລະຜູ້ຮ່ວມມືອື່ນໆ","FALSE","orang dan apa-apa usaha sama lain","Penutur dan para rakan usaha sama lain","Penutur dan para rakan usaha sama lain","TRUE","mga nagsasalita at iba pang mga tagatulong","","mga nagsasalita at iba pang mga tagatulong","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Living Dictionaries Team","","","contributors","LD_team","contributors.LD_team","Equipo de estar Diccionarios","El equipo detrás de los diccionarios vivos","El equipo detrás de los diccionarios vivos","TRUE","Viver Equipe Dicionários","Equipa do Living Dictionaries","Equipa do Living Dictionaries","TRUE","Living équipe Dictionnaires","L'équipe des dictionnaires vivants","L'équipe des dictionnaires vivants","TRUE","חי מילוני צוות","צוות מילונים חיים","צוות מילונים חיים","TRUE","فريق قواميس المعيشة","فريق عمل القواميس الحية","فريق عمل القواميس الحية","FALSE","लिविंग शब्दकोश टीम","लिविंग शब्दकोश दल","लिविंग शब्दकोश दल","TRUE","লিভিং অভিধানের টিম","","লিভিং অভিধানের টিম","FALSE","#VALUE!","","#VALUE!","FALSE","","FALSE","Жизнь Словари команды","Рабочая группа Живых Словарей","Рабочая группа Живых Словарей","TRUE","生活字典团队","","生活字典团队","FALSE","Living Dictionaries Team","","Living Dictionaries Team","FALSE","Tim Kamus Hidup","Tim Kamus Hidup","Tim Kamus Hidup","TRUE","Living Kamusi Team","Jopo la Kamusi Hai","Jopo la Kamusi Hai","TRUE","ሕያው መዝገበ ቡድን","","ሕያው መዝገበ ቡድን","FALSE","Từ điển Đội sống","","Từ điển Đội sống","FALSE","Living พจนานุกรมทีม","","Living พจนานุกรมทีม","FALSE","ក្រុមការរស់នៅវចនានុក្រម","","ក្រុមការរស់នៅវចនានុក្រម","FALSE","ດໍາລົງຊີວິດ Dictionaries Team","","ດໍາລົງຊີວິດ Dictionaries Team","FALSE","Living Dictionaries pasukan","Pasukan Living Dictionaries","Pasukan Living Dictionaries","TRUE","Living Dictionaries Team.","","Living Dictionaries Team.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Living Dictionary project founder","","","contributors","LD_founder","contributors.LD_founder","Diccionario de estar proyecto fundador","Fundador del proyecto Diccionarios Vivos","Fundador del proyecto Diccionarios Vivos","TRUE","Dicionário vida projeto fundador","Fundador do projecto Dicionário Vivo","Fundador do projecto Dicionário Vivo","TRUE","Dictionnaire vivant fondateur du projet","Fondateur des dictionnaires vivants","Fondateur des dictionnaires vivants","TRUE","מייסד פרויקט מגורים מילון","מייסד פרויקט מילונים חיים","מייסד פרויקט מילונים חיים","TRUE","المعيشة قاموس مؤسس المشروع","مؤسس مشروع القواميس الحية","مؤسس مشروع القواميس الحية","FALSE","लिविंग शब्दकोश परियोजना संस्थापक","लिविंग शब्दकोश परियोजना के संस्थापक","लिविंग शब्दकोश परियोजना के संस्थापक","TRUE","লিভিং অভিধান প্রকল্পের প্রতিষ্ঠাতা","","লিভিং অভিধান প্রকল্পের প্রতিষ্ঠাতা","FALSE","ଜୀବିତ Dictionary ପ୍ରକଳ୍ପ ପ୍ରତିଷ୍ଠାତା","","ଜୀବିତ Dictionary ପ୍ରକଳ୍ପ ପ୍ରତିଷ୍ଠାତା","FALSE","","FALSE","основатель проекта Living словарь","Создатель проекта Живого Словаря","Создатель проекта Живого Словаря","TRUE","生活词典项目的创始人","","生活词典项目的创始人","FALSE","Living aikin Dictionary kafa","","Living aikin Dictionary kafa","FALSE","pendiri proyek hidup Kamus","Pencetus proyek Kamus Hidup","Pencetus proyek Kamus Hidup","TRUE","Living kamusi mradi mwanzilishi","Mwanzilishi wa mradi wa Kamusi Hai","Mwanzilishi wa mradi wa Kamusi Hai","TRUE","ሕያው መዝገበ ፕሮጀክት መስራች","","ሕያው መዝገበ ፕሮጀክት መስራች","FALSE","Living điển sáng lập dự án","","Living điển sáng lập dự án","FALSE","Living พจนานุกรมผู้ก่อตั้งโครงการ","","Living พจนานุกรมผู้ก่อตั้งโครงการ","FALSE","ស្ថាបនិកគម្រោងវចនានុក្រមការរស់នៅ","","ស្ថាបនិកគម្រោងវចនានុក្រមការរស់នៅ","FALSE","ດໍາລົງຊີວິດ Dictionary ກໍ່ຕັ້ງໂຄງການ","","ດໍາລົງຊີວິດ Dictionary ກໍ່ຕັ້ງໂຄງການ","FALSE","Living Kamus pengasas projek","Pengasas projek Living Dictionary","Pengasas projek Living Dictionary","TRUE","Living Dictionary Project Founder.","","Living Dictionary Project Founder.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Project Coordinator and Content Editor","","","contributors","coordinator_editor","contributors.coordinator_editor","Coordinador del Proyecto y Editor de contenido","Coordinadora del proyecto y editora del contenido","Coordinadora del proyecto y editora del contenido","TRUE","Coordenador do Projeto e Editor de conteúdo","Coordenador do Projecto e Editor de Conteúdo","Coordenador do Projecto e Editor de Conteúdo","TRUE","Coordinateur du projet et éditeur de contenu","Coordinatrice de projet et rédactrice de contenu","Coordinatrice de projet et rédactrice de contenu","TRUE","רכזת עורך תוכן","רכזת ועורכת תוכן","רכזת ועורכת תוכן","TRUE","منسق المشروع ومحرر المحتوى","","منسق المشروع ومحرر المحتوى","FALSE","परियोजना समन्वयक और सामग्री संपादक","परियोजना समन्वयक और सामग्री संपादक","परियोजना समन्वयक और सामग्री संपादक","TRUE","প্রকল্প সমন্বয়কারী এবং সামগ্রী সম্পাদক","","প্রকল্প সমন্বয়কারী এবং সামগ্রী সম্পাদক","FALSE","ପ୍ରକଳ୍ପ ବେସ୍ ଏବଂ ବିଷୟବସ୍ତୁ ସମ୍ପାଦକ","","ପ୍ରକଳ୍ପ ବେସ୍ ଏବଂ ବିଷୟବସ୍ତୁ ସମ୍ପାଦକ","FALSE","","FALSE","Координатор проекта и редактор содержимого","Координатор проекта и контент-редактор","Координатор проекта и контент-редактор","TRUE","项目协调员和内容编辑器","","项目协调员和内容编辑器","FALSE","Project Coordinator da Content Edita","","Project Coordinator da Content Edita","FALSE","Koordinator Proyek dan Editor Konten","Koordinator Pelaksana Proyek dan Penyunting Konten","Koordinator Pelaksana Proyek dan Penyunting Konten","TRUE","Mratibu wa Mradi na Mhariri wa maudhui","Mratibu wa Mradi na Mhariri wa Maudhui","Mratibu wa Mradi na Mhariri wa Maudhui","TRUE","የፕሮጀክት አስተባባሪ እና የይዘት አርታዒ","","የፕሮጀክት አስተባባሪ እና የይዘት አርታዒ","FALSE","Điều phối viên dự án và nội dung Biên tập viên","","Điều phối viên dự án và nội dung Biên tập viên","FALSE","ผู้ประสานงานโครงการและบรรณาธิการเนื้อหา","","ผู้ประสานงานโครงการและบรรณาธิการเนื้อหา","FALSE","អ្នកសម្របសម្រួលគម្រោងនិងនិពន្ធមាតិកា","","អ្នកសម្របសម្រួលគម្រោងនិងនិពន្ធមាតិកា","FALSE","ຜູ້ປະສານງານໂຄງການແລະບັນນາທິການເນື້ອຫາ","","ຜູ້ປະສານງານໂຄງການແລະບັນນາທິການເນື້ອຫາ","FALSE","Penyelaras projek dan Editor kandungan","Penyelaras Projek dan Editor Kandungan","Penyelaras Projek dan Editor Kandungan","TRUE","Project Coordinator at Content Editor.","","Project Coordinator at Content Editor.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Web Developer and Interface Designer","","","contributors","developer_designer","contributors.developer_designer","Web Developer y diseñador de interfaz","Programador y diseñador de interfaz","Programador y diseñador de interfaz","TRUE","Web Developer e Designer de Interface","Idealizador do Web e Designer da Interface","Idealizador do Web e Designer da Interface","TRUE","Développeur Web et interface Designer","Développeur web et designer d'interface","Développeur web et designer d'interface","TRUE","מפתח אינטרנט מעצב הממשק","מפתח האתר ומעצב הממשק","מפתח האתר ומעצב הממשק","TRUE","مطور ويب واجهة مصمم","مطور مواقع ويب ومصمم واجهات","مطور مواقع ويب ومصمم واجهات","FALSE","वेब डेवलपर और इंटरफेस डिजाइनर","वेबसाइट विकसित करनेवाला और इंटरफ़ेस डिज़ाइनर","वेबसाइट विकसित करनेवाला और इंटरफ़ेस डिज़ाइनर","TRUE","ওয়েব ডেভেলপার এবং ইন্টারফেস ডিজাইনার","","ওয়েব ডেভেলপার এবং ইন্টারফেস ডিজাইনার","FALSE","ୱେବ୍ ଡେଭଲପର୍ ଏବଂ ଇଣ୍ଟରଫେସ୍ Designer","","ୱେବ୍ ଡେଭଲପର୍ ଏବଂ ଇଣ୍ଟରଫେସ୍ Designer","FALSE","","FALSE","Веб-разработчик и дизайнер интерфейсов","Веб-разработчик и дизайнер интерфейса","Веб-разработчик и дизайнер интерфейса","TRUE","Web开发和界面设计师","","Web开发和界面设计师","FALSE","Web Developer da kuma Interface Designer","","Web Developer da kuma Interface Designer","FALSE","Web Developer dan Interface Designer","Pengembang Web dan Desainer Antarmuka","Pengembang Web dan Desainer Antarmuka","TRUE","Mtandao Developer na Interface Mbuni","Mtengenezaji wa wavuti na Mbunifu wa Maingiliano kiolesura","Mtengenezaji wa wavuti na Mbunifu wa Maingiliano kiolesura","TRUE","የድር ገንቢ እና በይነገጽ ዲዛይነር","","የድር ገንቢ እና በይነገጽ ዲዛይነር","FALSE","Web Developer và giao diện thiết kế","","Web Developer và giao diện thiết kế","FALSE","นักพัฒนาเว็บและออกแบบอินเตอร์เฟซ","","นักพัฒนาเว็บและออกแบบอินเตอร์เฟซ","FALSE","រចនាគេហទំព័រនិងអភិវឌ្ឍន៍ចំណុចប្រទាក់","","រចនាគេហទំព័រនិងអភិវឌ្ឍន៍ចំណុចប្រទាក់","FALSE","ເວັບໄຊຕ໌ຜູ້ພັດທະນາແລະອອກແບບ Interface","","ເວັບໄຊຕ໌ຜູ້ພັດທະນາແລະອອກແບບ Interface","FALSE","Web Developer dan Antara Muka Designer","Pembangun Web dan Pereka Antaramuka","Pembangun Web dan Pereka Antaramuka","TRUE","Web Developer at Interface Designer.","","Web Developer at Interface Designer.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"All rights reserved. Do not distribute or reproduce without permission.","","","contributors","all_rights_reserved_permission","contributors.all_rights_reserved_permission","Todos los derechos reservados. No distribuir o reproducir sin permiso.","Todos los derechos reservados. No distribuir ni reproducir sin permiso.","Todos los derechos reservados. No distribuir ni reproducir sin permiso.","TRUE","Todos os direitos reservados. Não distribuir ou reproduzir sem permissão.","Todos os direitos reservados. Não distribuir ou reproduzir sem permissão.","Todos os direitos reservados. Não distribuir ou reproduzir sem permissão.","TRUE","Tous les droits sont réservés. Ne pas distribuer ou reproduire sans autorisation.","Tous les droit sont reservés. Ne pas distribuer ou reproduire sans autorisation.","Tous les droit sont reservés. Ne pas distribuer ou reproduire sans autorisation.","TRUE","כל הזכויות שמורות. אין להפיץ או לשכפל ללא רשות.","","כל הזכויות שמורות. אין להפיץ או לשכפל ללא רשות.","TRUE","كل الحقوق محفوظة. لا توزيع أو إعادة إنتاج من دون إذن.","جميع الحقوق محفوظة. المحتوى غير قابل للتوزيع أو إعادة النشر دون إذن ٍ مسبق من الناشر.","جميع الحقوق محفوظة. المحتوى غير قابل للتوزيع أو إعادة النشر دون إذن ٍ مسبق من الناشر.","FALSE","सभी अधिकार सुरक्षित। वितरित या अनुमति के बिना पुन: पेश न करें।","सर्वाधिकार सुरक्षित। बिना अनुमति के वितरित या पुनः पेश ना करें।","सर्वाधिकार सुरक्षित। बिना अनुमति के वितरित या पुनः पेश ना करें।","TRUE","সমস্ত অধিকার সংরক্ষিত. বিতরণ বা অনুমতি ছাড়া নকল করবেন না।","","সমস্ত অধিকার সংরক্ষিত. বিতরণ বা অনুমতি ছাড়া নকল করবেন না।","FALSE","ସମସ୍ତ ଅଧିକାର ସଂରକ୍ଷିତ। ବିତରଣ କିମ୍ବା ବିନା ଅନୁମତିରେ ପୁନଃଦାଖଲ ନାହିଁ।","","ସମସ୍ତ ଅଧିକାର ସଂରକ୍ଷିତ। ବିତରଣ କିମ୍ବା ବିନା ଅନୁମତିରେ ପୁନଃଦାଖଲ ନାହିଁ।","FALSE","","FALSE","Все права защищены. Не распространять или воспроизводить без разрешения.","","Все права защищены. Не распространять или воспроизводить без разрешения.","TRUE","版权所有。不要散布或擅自复制。","","版权所有。不要散布或擅自复制。","FALSE","An adana duk haƙƙoƙi. Kada raba ko haifa ba tare da izni.","","An adana duk haƙƙoƙi. Kada raba ko haifa ba tare da izni.","FALSE","Seluruh hak cipta. Jangan mendistribusikan atau memperbanyak tanpa izin.","Hak cipta dilindungi undang-undang. Dilarang mendisribusikan atau meniru sebagian atau seluruh konten dalam bentuk apa pun tanpa izin.","Hak cipta dilindungi undang-undang. Dilarang mendisribusikan atau meniru sebagian atau seluruh konten dalam bentuk apa pun tanpa izin.","TRUE","Haki zote zimehifadhiwa. Usisambaze au kuzaliana bila ruhusa.","Haki zote zimehifadhiwa. Usisambaze au kutoa nakala bila ruhusa.","Haki zote zimehifadhiwa. Usisambaze au kutoa nakala bila ruhusa.","TRUE","መብቱ በህግ የተጠበቀ ነው. ማሰራጨት ወይም ያለ ፈቃድ ማባዛት አይደለም.","መብቱ በህግ የተጠበቀ ነው. ማሰራጨት ወይም ያለ ፈቃድ ማባዛት አይደለም.","መብቱ በህግ የተጠበቀ ነው. ማሰራጨት ወይም ያለ ፈቃድ ማባዛት አይደለም.","TRUE","Đã đăng ký Bản quyền. Đừng phân phối hoặc sao chép mà không được phép.","","Đã đăng ký Bản quyền. Đừng phân phối hoặc sao chép mà không được phép.","FALSE","สงวนลิขสิทธิ์. ห้ามเผยแพร่หรือทำซ้ำโดยมิได้รับอนุญาต","","สงวนลิขสิทธิ์. ห้ามเผยแพร่หรือทำซ้ำโดยมิได้รับอนุญาต","FALSE","រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។ កុំចែកចាយឬ reproduce ដោយគ្មានការអនុញ្ញាត។","","រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។ កុំចែកចាយឬ reproduce ដោយគ្មានការអនុញ្ញាត។","FALSE","ສິດທິທັງຫມົດສະຫງວນ. ບໍ່ແຈກຢາຍຫຼືການແຜ່ພັນໂດຍບໍ່ມີການອະນຸຍາດ.","","ສິດທິທັງຫມົດສະຫງວນ. ບໍ່ແຈກຢາຍຫຼືການແຜ່ພັນໂດຍບໍ່ມີການອະນຸຍາດ.","FALSE","Hak cipta terpelihara. Jangan mengedar atau mengeluarkan semula tanpa kebenaran.","Hak cipta terpelihara. Dilarang mengedar atau membuat salinan tanpa kebenaran.","Hak cipta terpelihara. Dilarang mengedar atau membuat salinan tanpa kebenaran.","TRUE","Lahat ng karapatan ay nakalaan. Huwag ipamahagi o magparami nang walang pahintulot.","","Lahat ng karapatan ay nakalaan. Huwag ipamahagi o magparami nang walang pahintulot.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"How to Cite","","","contributors","how_to_cite_academics","contributors.how_to_cite_academics","Cómo citar","Cómo citar","Cómo citar","TRUE","Como citar","Como citar","Como citar","TRUE","Comment citer","Comment citer","Comment citer","TRUE","כיצד Cite","כיצד לצטט","כיצד לצטט","TRUE","كيفية سايت","كيفية الاقتباس","كيفية الاقتباس","FALSE","कैसे उद्धृत करने के लिए","कैसे उद्धृत करें?","कैसे उद्धृत करें?","TRUE","কিভাবে উদ্ধৃত করার জন্য","","কিভাবে উদ্ধৃত করার জন্য","FALSE","କିପରି ପ୍ରମାଣ ଯୋଡ଼ିବେ କରିବା","","କିପରି ପ୍ରମାଣ ଯୋଡ଼ିବେ କରିବା","FALSE","","FALSE","Как Cite","Как цитировать","Как цитировать","TRUE","如何引用","","如何引用","FALSE","Yadda za a buga","","Yadda za a buga","FALSE","Cara Cite","Bagaimana cara mengutip","Bagaimana cara mengutip","TRUE","Jinsi ya Taja","Jinsi ya kutaja","Jinsi ya kutaja","TRUE","እንዴት መጥቀሻ ወደ","","እንዴት መጥቀሻ ወደ","FALSE","Làm thế nào để Cite","","Làm thế nào để Cite","FALSE","วิธีการ Cite","","วิธีการ Cite","FALSE","តើធ្វើដូចម្តេចដើម្បីដកស្រង់","","តើធ្វើដូចម្តេចដើម្បីដកស្រង់","FALSE","ວິທີການອ້າງອີງ","","ວິທີການອ້າງອີງ","FALSE","Bagaimana untuk Cite","Cara Membuat Rujukan","Cara Membuat Rujukan","TRUE","Paano mag-cite","","Paano mag-cite","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Select Coordinates","","","create","select_coordinates","create.select_coordinates","Seleccione Coordenadas","Seleccione las coordenadas GPS","Seleccione las coordenadas GPS","TRUE","Select Coordenadas","Seleccione coordenadas","Seleccione coordenadas","TRUE","Sélectionnez Coordonnées","Sélectionnez les coordonnées","Sélectionnez les coordonnées","TRUE","קואורדינטות בחר","בחירת מיקום (קואורדינטות)","בחירת מיקום (קואורדינטות)","TRUE","اختر الاحداثيات","اختر التنسيقات","اختر التنسيقات","FALSE","निर्देशांक का चयन करें","निर्देशांकों का चयन करें","निर्देशांकों का चयन करें","TRUE","স্থানাঙ্ক নির্বাচন","","স্থানাঙ্ক নির্বাচন","FALSE","ଚୟନ ଦିଗବାରେଣି","","ଚୟନ ଦିଗବାରେଣି","FALSE","","FALSE","Выберите Координаты","Выберите координаты","Выберите координаты","TRUE","选择坐标","","选择坐标","FALSE","Zabi tsarawa","","Zabi tsarawa","FALSE","Pilih Koordinat","Pilih Koordinat","Pilih Koordinat","TRUE","Chagua kijiografia","Chagua mahali kijiografia","Chagua mahali kijiografia","TRUE","ይምረጡ ማቀነባበሪያዎች","","ይምረጡ ማቀነባበሪያዎች","FALSE","Chọn Tọa độ","","Chọn Tọa độ","FALSE","เลือกพิกัด","","เลือกพิกัด","FALSE","ជ្រើសកូអរដោណេ","","ជ្រើសកូអរដោណេ","FALSE","ເລືອກພິກັດ","","ເລືອກພິກັດ","FALSE","Pilih Koordinat","Pilih Koordinat","Pilih Koordinat","TRUE","Piliin ang mga coordinate","","Piliin ang mga coordinate","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Does the speech community allow this language to be online? Select 'OK' if they have given you permission.","","","create","speech_community_permission","create.speech_community_permission","¿La comunidad de habla este lenguaje permite a estar online? Seleccione 'OK' si le han dado permiso.","¿Permite la comunidad lingüística que este idioma esté en línea? Seleccione ""OK"" si tiene permiso.","¿Permite la comunidad lingüística que este idioma esté en línea? Seleccione ""OK"" si tiene permiso.","TRUE","Será que a comunidade de fala permitem essa linguagem para ser on-line? Selecione 'OK' se eles lhe deram permissão.","A comunidade de falantes permite que esta língua esteja online? Selecione ‘OK’ se lhe tiverem permitido.","A comunidade de falantes permite que esta língua esteja online? Selecione ‘OK’ se lhe tiverem permitido.","TRUE","Est-ce que la communauté de la parole permet cette langue d'être en ligne? Sélectionnez « OK » s'ils vous ont donné la permission.","La communauté linguistique permet-elle à cette langue d'être en ligne ? Sélectionnez ""OK” si vous avez la permission.","La communauté linguistique permet-elle à cette langue d'être en ligne ? Sélectionnez ""OK” si vous avez la permission.","TRUE","האם קהילת הדיבור לאפשר את השפה הזו כדי להיות באינטרנט? בחר ""אישור"" אם הם נתנו לך הרשאה.","האם הקהילה דוברת השפה מאשרת את קיומה באינטרנט (בממשק זה)? לחצו על ״כן״ (OK) אם ניתן אישור.","האם הקהילה דוברת השפה מאשרת את קיומה באינטרנט (בממשק זה)? לחצו על ״כן״ (OK) אם ניתן אישור.","FALSE","هل يسمح المجتمع خطاب هذه اللغة لتكون على الانترنت؟ حدد ""موافق"" إذا كانوا قد منحك الإذن.","","هل يسمح المجتمع خطاب هذه اللغة لتكون على الانترنت؟ حدد ""موافق"" إذا كانوا قد منحك الإذن.","FALSE","भाषण समुदाय इस भाषा ऑनलाइन होने की अनुमति है? 'ठीक है' का चयन करता है, तो वे आपको अनुमति दी हो।","क्या आपका समुदाय इस भाषा को ऑनलाइन होने की अनुमति देता है? अगर अनुमति है तो 'ठीक है' का चयन करें","क्या आपका समुदाय इस भाषा को ऑनलाइन होने की अनुमति देता है? अगर अनुमति है तो 'ठीक है' का चयन करें","TRUE","বক্তৃতা সম্প্রদায় এই ভাষা অনলাইনে থাকতে করার অনুমতি দেয় না? 'ওকে' নির্বাচন করুন যদি তারা আপনাকে অনুমতি দিয়েছেন।","","বক্তৃতা সম্প্রদায় এই ভাষা অনলাইনে থাকতে করার অনুমতি দেয় না? 'ওকে' নির্বাচন করুন যদি তারা আপনাকে অনুমতি দিয়েছেন।","FALSE","ବକ୍ତବ୍ୟ ସମ୍ପ୍ରଦାୟ ଏହି ଭାଷା ଅନଲାଇନ୍ ଅନୁମତି କରେ? ସେମାନେ ଆପଣ ଅନୁମତି ପ୍ରଦାନ କରିଛନ୍ତି ଯଦି 'ଓକେ ବଟନ୍' ଚୟନ କରନ୍ତୁ।","","ବକ୍ତବ୍ୟ ସମ୍ପ୍ରଦାୟ ଏହି ଭାଷା ଅନଲାଇନ୍ ଅନୁମତି କରେ? ସେମାନେ ଆପଣ ଅନୁମତି ପ୍ରଦାନ କରିଛନ୍ତି ଯଦି 'ଓକେ ବଟନ୍' ଚୟନ କରନ୍ତୁ।","FALSE","","FALSE","Допускает ли речь сообщество этого языка, чтобы быть в Интернете? Выберите «OK», если они дали вам разрешение.","Допускает ли данное языковое сообщество публикацию своего языка в Интернете? Выберите «OK», если Вам дано такое разрешение.","Допускает ли данное языковое сообщество публикацию своего языка в Интернете? Выберите «OK», если Вам дано такое разрешение.","TRUE","并讲话社会允许这种语言在线?如果他们给你的权限选择“OK”。","","并讲话社会允许这种语言在线?如果他们给你的权限选择“OK”。","FALSE","Shin magana al'umma damar wannan harshe ya zama online? Zabi 'OK' idan sun yi muku izni.","","Shin magana al'umma damar wannan harshe ya zama online? Zabi 'OK' idan sun yi muku izni.","FALSE","Apakah masyarakat penutur memungkinkan bahasa ini untuk online? Pilih 'OK' jika mereka telah memberikan izin.","Apakah komunitas bahasa membolehkan bahasa ini ","Apakah komunitas bahasa membolehkan bahasa ini ","TRUE","Je jamii hotuba kuruhusu lugha hii kuwa katika mtandao? Chagua 'Sawa' kama wao amekupa ruhusa.","Je! Jamii ya wazungumzaji wa hii lugha inaruhusu lugha hii kuwekwa mtandaoni? Chagua 'Sawa' ikiwa wamekupa ruhusa.","Je! Jamii ya wazungumzaji wa hii lugha inaruhusu lugha hii kuwekwa mtandaoni? Chagua 'Sawa' ikiwa wamekupa ruhusa.","TRUE","የንግግር ማህበረሰብ በዚህ ቋንቋ መስመር ላይ መሆን ያስችላቸዋል? እነሱ ለእናንተ ፈቃድ የተሰጠ ከሆነ 'እሺ' ይምረጡ.","","የንግግር ማህበረሰብ በዚህ ቋንቋ መስመር ላይ መሆን ያስችላቸዋል? እነሱ ለእናንተ ፈቃድ የተሰጠ ከሆነ 'እሺ' ይምረጡ.","FALSE","Liệu cộng đồng ngôn luận cho phép ngôn ngữ này để được trực tuyến? Chọn 'OK' nếu họ cho phép bạn.","","Liệu cộng đồng ngôn luận cho phép ngôn ngữ này để được trực tuyến? Chọn 'OK' nếu họ cho phép bạn.","FALSE","ไม่พูดชุมชนช่วยให้ภาษานี้จะออนไลน์ได้หรือไม่ เลือก 'ตกลง' ถ้าพวกเขาได้ให้คุณได้รับอนุญาต","","ไม่พูดชุมชนช่วยให้ภาษานี้จะออนไลน์ได้หรือไม่ เลือก 'ตกลง' ถ้าพวกเขาได้ให้คุณได้รับอนุญาต","FALSE","តើសហគមន៍និយាយនេះអនុញ្ញាតឱ្យភាសានេះឱ្យនៅលើបណ្ដាញ? ជ្រើស 'យល់ព្រម' ប្រសិនបើពួកគេបានផ្ដល់ឱ្យអ្នកអនុញ្ញាត។","","តើសហគមន៍និយាយនេះអនុញ្ញាតឱ្យភាសានេះឱ្យនៅលើបណ្ដាញ? ជ្រើស 'យល់ព្រម' ប្រសិនបើពួកគេបានផ្ដល់ឱ្យអ្នកអនុញ្ញាត។","FALSE","ບໍ່ຊຸມຊົນປາກເວົ້າ, ຂີດອະນຸຍາດໃຫ້ພາສານີ້ຈະອອນໄລນ໌? ເລືອກ 'OK' ຖ້າຫາກວ່າພວກເຂົາເຈົ້າໄດ້ໃຫ້ພວກທ່ານອະນຸຍາດ.","","ບໍ່ຊຸມຊົນປາກເວົ້າ, ຂີດອະນຸຍາດໃຫ້ພາສານີ້ຈະອອນໄລນ໌? ເລືອກ 'OK' ຖ້າຫາກວ່າພວກເຂົາເຈົ້າໄດ້ໃຫ້ພວກທ່ານອະນຸຍາດ.","FALSE","Adakah masyarakat ucapan membolehkan bahasa ini berada dalam talian? Pilih 'OK' jika mereka telah memberikan anda kebenaran.","Adakah masyarakat penutur membenarkan bahasa ini berada dalam talian? Pilih 'OK' jika mereka telah memberikan anda kebenaran.","Adakah masyarakat penutur membenarkan bahasa ini berada dalam talian? Pilih 'OK' jika mereka telah memberikan anda kebenaran.","TRUE","Pinapayagan ba ng komunidad ng pagsasalita ang wikang ito na maging online? Piliin ang 'OK' kung binigyan ka nila ng pahintulot.","","Pinapayagan ba ng komunidad ng pagsasalita ang wikang ito na maging online? Piliin ang 'OK' kung binigyan ka nila ng pahintulot.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Enter Alternate Name","","","create","enter_alternate_name","create.enter_alternate_name","Introducir nombre alternativo","Agregar un nombre alternativo","Agregar un nombre alternativo","TRUE","Digite nome alternativo","Insira nome alternativo","Insira nome alternativo","TRUE","Entrez Autre nom","Ajouter un nom alternatif","Ajouter un nom alternatif","TRUE","הזן שם חלופי","שם חלופי","שם חלופי","FALSE","أدخل اسم البديل","أدخل الاسم البديل","أدخل الاسم البديل","FALSE","दर्ज वैकल्पिक नाम","वैकल्पिक नाम दर्ज करें","वैकल्पिक नाम दर्ज करें","TRUE","লিখুন বিকল্প নাম","","লিখুন বিকল্প নাম","FALSE","ବୈକଳ୍ପିକ ନାମ ପ୍ରବିଷ୍ଟ","","ବୈକଳ୍ପିକ ନାମ ପ୍ରବିଷ୍ଟ","FALSE","","FALSE","Введите альтернативное имя","","Введите альтернативное имя","TRUE","输入备选名称","","输入备选名称","FALSE","Shigar da sunan a madadin","","Shigar da sunan a madadin","FALSE","Masukkan Alternatif Nama","Masukkan Alternatif Nama","Masukkan Alternatif Nama","TRUE","Ingiza Jina Mbadala","Ingiza Jina Mbadala","Ingiza Jina Mbadala","TRUE","ተለዋጭ ስም ያስገቡ","ተለዋጭ ስም ያስገቡ","ተለዋጭ ስም ያስገቡ","TRUE","Nhập Alternate Name","","Nhập Alternate Name","FALSE","ใส่ชื่อสำรอง","","ใส่ชื่อสำรอง","FALSE","បញ្ចូលឈ្មោះជំនួស","","បញ្ចូលឈ្មោះជំនួស","FALSE","ກະລຸນາໃສ່ສໍາຮອງຊື່","","ກະລຸນາໃສ່ສໍາຮອງຊື່","FALSE","Masukkan Nama Ganti","Masukkan Nama Lain","Masukkan Nama Lain","TRUE","Ipasok ang alternatibong pangalan","","Ipasok ang alternatibong pangalan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Choose at least 1 language to make the dictionary available in.","","","create","at_least_one_lang","create.at_least_one_lang","Elegir al menos 1 lenguaje para hacer que el diccionario está disponible en.","Elegir por lo menos un idioma en que este diccionario estará disponible.","Elegir por lo menos un idioma en que este diccionario estará disponible.","TRUE","Escolha pelo menos uma linguagem para fazer o dicionário disponível no.","Escolha pelo menos 1 língua através da qual pretende disponibilizar o dicionário.","Escolha pelo menos 1 língua através da qual pretende disponibilizar o dicionário.","TRUE","Choisissez au moins 1 langue pour rendre le dictionnaire disponible.","Choisissez au moins une langue dans laquelle ce dictionnaire sera disponible.","Choisissez au moins une langue dans laquelle ce dictionnaire sera disponible.","TRUE","בחר לפחות 1 שפת להפוך את המילון זמין.","אנא בחרו לפחות שפה אחת בה יהיה המילון זמין","אנא בחרו לפחות שפה אחת בה יהיה המילון זמין","TRUE","اختر 1 على الأقل لغة لجعل القاموس متاح في.","اختر لغة واحدة على الأقل لتفعيل القاموس","اختر لغة واحدة على الأقل لتفعيل القاموس","FALSE","कम से कम 1 भाषा चुनें शब्दकोश में उपलब्ध बनाने के लिए।","शब्दकोश बनाने के लिए उपलब्ध भाषाओं में से एक भाषा का चयन करें","शब्दकोश बनाने के लिए उपलब्ध भाषाओं में से एक भाषा का चयन करें","TRUE","অন্তত 1 ভাষা চয়ন করুন অভিধানে উপলব্ধ করতে।","","অন্তত 1 ভাষা চয়ন করুন অভিধানে উপলব্ধ করতে।","FALSE","ଅଭିଧାନରେ ଉପଲବ୍ଧ କରିବା ଅତିକମରେ 1 ଭାଷା ବାଛନ୍ତୁ।","","ଅଭିଧାନରେ ଉପଲବ୍ଧ କରିବା ଅତିକମରେ 1 ଭାଷା ବାଛନ୍ତୁ।","FALSE","","FALSE","Выберите по крайней мере, 1 язык, чтобы сделать словарь доступен в.","Выберите как минимум 1 язык, на котором будет доступен словарь.","Выберите как минимум 1 язык, на котором будет доступен словарь.","TRUE","至少选择1种语言,以使现有的字典。","","至少选择1种语言,以使现有的字典。","FALSE","Zabi akalla 1 harshen da ya sa ƙamus samuwa a.","","Zabi akalla 1 harshen da ya sa ƙamus samuwa a.","FALSE","Pilih minimal 1 bahasa untuk membuat kamus yang tersedia di.","Pilih minimal 1 bahasa untuk membuat kamus tersedia ","Pilih minimal 1 bahasa untuk membuat kamus tersedia ","TRUE","Chagua angalau 1 lugha kwa kufanya kamusi inapatikana katika.","Chagua walau lugha 1 ili kufanya kamusi hiyo ipatikane katika hiyo lugha.","Chagua walau lugha 1 ili kufanya kamusi hiyo ipatikane katika hiyo lugha.","TRUE","ውስጥ መዝገበ እንዲገኝ ለማድረግ ቢያንስ 1 ቋንቋ ምረጥ.","","ውስጥ መዝገበ እንዲገኝ ለማድረግ ቢያንስ 1 ቋንቋ ምረጥ.","FALSE","Chọn ít nhất 1 ngôn ngữ để làm cho từ điển có sẵn trong.","","Chọn ít nhất 1 ngôn ngữ để làm cho từ điển có sẵn trong.","FALSE","เลือกอย่างน้อย 1 ภาษาเพื่อให้สามารถใช้งานได้ในพจนานุกรม","","เลือกอย่างน้อย 1 ภาษาเพื่อให้สามารถใช้งานได้ในพจนานุกรม","FALSE","ជ្រើសយ៉ាងហោចណាស់ 1 ភាសាដើម្បីធ្វើឱ្យវចនានុក្រមដែលមាននៅក្នុង។","","ជ្រើសយ៉ាងហោចណាស់ 1 ភាសាដើម្បីធ្វើឱ្យវចនានុក្រមដែលមាននៅក្នុង។","FALSE","ເລືອກຢ່າງຫນ້ອຍ 1 ພາສາເພື່ອເຮັດໃຫ້ຈະນານຸກົມທີ່ມີຢູ່ໃນ.","","ເລືອກຢ່າງຫນ້ອຍ 1 ພາສາເພື່ອເຮັດໃຫ້ຈະນານຸກົມທີ່ມີຢູ່ໃນ.","FALSE","Pilih sekurang-kurangnya 1 bahasa untuk membuat kamus yang terdapat di.","Dalam bahasa apakah kamus ini diadakan? Pilih sekurang-kurangnya 1 bahasa.","Dalam bahasa apakah kamus ini diadakan? Pilih sekurang-kurangnya 1 bahasa.","TRUE","Pumili ng hindi bababa sa 1 wika upang gawing available ang diksyunaryo.","","Pumili ng hindi bababa sa 1 wika upang gawing available ang diksyunaryo.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Only letters and numbers allowed (no spaces or special characters)","","","create","only_letters_numbers","create.only_letters_numbers","Sólo letras y números permitidos (sin espacios ni caracteres especiales)","Sólo se permiten letras y números (sin espacios ni caracteres especiales).","Sólo se permiten letras y números (sin espacios ni caracteres especiales).","TRUE","Apenas letras e números permitidos (sem espaços ou caracteres especiais)","Permite-se apenas letras e números (sem espaços ou caracteres especiais)","Permite-se apenas letras e números (sem espaços ou caracteres especiais)","TRUE","Seules les lettres et les numéros autorisés (sans espaces ou caractères spéciaux)","Seules les lettres et les chiffres sont permis (pas d'espaces ni de caractères spéciaux)","Seules les lettres et les chiffres sont permis (pas d'espaces ni de caractères spéciaux)","TRUE","אותיות ומספרים בלבד המותרים (ללא רווחים או תווים מיוחדים)","אותיות וספרות בלבד (ללא רווחים וסימנים מיוחדים)","אותיות וספרות בלבד (ללא רווחים וסימנים מיוחדים)","TRUE","حروف وأرقام فقط سمح (بدون مسافات أو أحرف خاصة)","","حروف وأرقام فقط سمح (بدون مسافات أو أحرف خاصة)","FALSE","केवल अक्षर और अनुमति दी संख्या (कोई रिक्त स्थान या विशेष वर्ण)","केवल अक्षर और संख्या का इस्तेमाल करें (रिक्त स्थान या विशेष अक्षर का उपयोग न करें)","केवल अक्षर और संख्या का इस्तेमाल करें (रिक्त स्थान या विशेष अक्षर का उपयोग न करें)","TRUE","শুধু অক্ষর এবং অনুমতি সংখ্যা (কোন স্পেস বা বিশেষ অক্ষর)","","শুধু অক্ষর এবং অনুমতি সংখ্যা (কোন স্পেস বা বিশেষ অক্ষর)","FALSE","କେବଳ ଅକ୍ଷର ଏବଂ ଅନୁମତି ସଂଖ୍ୟା (କୌଣସି ଖାଲିସ୍ଥାନ କିମ୍ବା ବିଶେଷ ବର୍ଣ୍ଣ)","","କେବଳ ଅକ୍ଷର ଏବଂ ଅନୁମତି ସଂଖ୍ୟା (କୌଣସି ଖାଲିସ୍ଥାନ କିମ୍ବା ବିଶେଷ ବର୍ଣ୍ଣ)","FALSE","","FALSE","Только буквы и цифры разрешены (без пробелов или специальных символов)","Разрешены только буквы и цифры (без пробелов или специальных символов)","Разрешены только буквы и цифры (без пробелов или специальных символов)","TRUE","只有字母和允许号码(无空格或特殊字符)","","只有字母和允许号码(无空格或特殊字符)","FALSE","Kawai haruffa da lambobi yarda (babu fili ko haruffa na musamman)","","Kawai haruffa da lambobi yarda (babu fili ko haruffa na musamman)","FALSE","Hanya huruf dan angka diperbolehkan (tanpa spasi atau karakter khusus)","Hanya huruf dan angka yang diperbolehkan (tanpa spasi dan karakter khusus)","Hanya huruf dan angka yang diperbolehkan (tanpa spasi dan karakter khusus)","TRUE","herufi na nambari kuruhusiwa (hakuna nafasi au herufi maalum)","Herufi na namba tu ndizo zinazoruhusiwa (hakuna nafasi au herufi maalum)","Herufi na namba tu ndizo zinazoruhusiwa (hakuna nafasi au herufi maalum)","TRUE","ብቻ ፊደላትን እና ይፈቀዳል ቁጥሮች (ምንም ክፍተቶች ወይም ልዩ ቁምፊዎች)","","ብቻ ፊደላትን እና ይፈቀዳል ቁጥሮች (ምንም ክፍተቶች ወይም ልዩ ቁምፊዎች)","FALSE","Chỉ có chữ cái và số cho phép (không có khoảng trắng hoặc ký tự đặc biệt)","","Chỉ có chữ cái và số cho phép (không có khoảng trắng hoặc ký tự đặc biệt)","FALSE","ตัวอักษรและตัวเลขที่ได้รับอนุญาต (ไม่มีช่องว่างหรืออักขระพิเศษ)","","ตัวอักษรและตัวเลขที่ได้รับอนุญาต (ไม่มีช่องว่างหรืออักขระพิเศษ)","FALSE","តែអក្សរនិងលេខដែលបានអនុញ្ញាត (គ្មានចន្លោះឬតួអក្សរពិសេស)","","តែអក្សរនិងលេខដែលបានអនុញ្ញាត (គ្មានចន្លោះឬតួអក្សរពិសេស)","FALSE","ຕົວອັກສອນເທົ່ານັ້ນແລະຈໍານວນອະນຸຍາດ (ບໍ່ມີຊ່ອງຫວ່າງຫລືອັກສອນພິເສດ)","","ຕົວອັກສອນເທົ່ານັ້ນແລະຈໍານວນອະນຸຍາດ (ບໍ່ມີຊ່ອງຫວ່າງຫລືອັກສອນພິເສດ)","FALSE","Huruf dan nombor sahaja dibenarkan (tiada ruang atau aksara khas)","Hanya huruf dan nombor dibenarkan (tanpa jarak dan aksara khas)","Hanya huruf dan nombor dibenarkan (tanpa jarak dan aksara khas)","TRUE","Pinapayagan lamang ang mga titik at numero (walang mga puwang o mga espesyal na character)","","Pinapayagan lamang ang mga titik at numero (walang mga puwang o mga espesyal na character)","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Choose a different URL","","","create","choose_different_url","create.choose_different_url","Elija una URL diferente","Elegir una URL diferente","Elegir una URL diferente","TRUE","Escolha um URL diferente","Escolha uma URL diferente","Escolha uma URL diferente","TRUE","Choisissez une autre URL","Choisissez une URL différente","Choisissez une URL différente","TRUE","בחר URL שונה","בחירת כתובת URL שונה","בחירת כתובת URL שונה","TRUE","اختيار URL مختلفة","اختر عنوان URL مختلف","اختر عنوان URL مختلف","FALSE","एक अलग URL चुनें","अलग URL चुनें","अलग URL चुनें","TRUE","একটি পৃথক URL চয়ন করুন","","একটি পৃথক URL চয়ন করুন","FALSE","ଏକ ଭିନ୍ନ URL ଚୟନ","","ଏକ ଭିନ୍ନ URL ଚୟନ","FALSE","","FALSE","Выберите другой URL","","Выберите другой URL","TRUE","选择一个不同的URL","","选择一个不同的URL","FALSE","Zabi wani daban-daban URL","","Zabi wani daban-daban URL","FALSE","Pilih URL yang berbeda","Pilih URL yang berbeda","Pilih URL yang berbeda","TRUE","Chagua URL tofauti","Chagua URL tofauti","Chagua URL tofauti","TRUE","የተለየ ዩአርኤል ይምረጡ","","የተለየ ዩአርኤል ይምረጡ","FALSE","Chọn một URL khác","","Chọn một URL khác","FALSE","เลือก URL ที่แตกต่างกัน","","เลือก URL ที่แตกต่างกัน","FALSE","ជ្រើស URL ផ្សេង","","ជ្រើស URL ផ្សេង","FALSE","ເລືອກເວັບໄຊທີ່ແຕກຕ່າງກັນ","","ເລືອກເວັບໄຊທີ່ແຕກຕ່າງກັນ","FALSE","Pilih URL yang berbeza","Pilih URL yang berbeza","Pilih URL yang berbeza","TRUE","Pumili ng ibang URL","","Pumili ng ibang URL","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Language(s) you want to translate entries into","","","create","gloss_dictionary_clarification","create.gloss_dictionary_clarification","Idioma (s) que desea traducir en entradas","Idioma(s) en que desea traducir las entradas del diccionario","Idioma(s) en que desea traducir las entradas del diccionario","TRUE","Idioma (s) que deseja traduzir entradas em","Língua(s) na qual pretende traduzir as entradas","Língua(s) na qual pretende traduzir as entradas","TRUE","Langue (s) que vous voulez traduire les entrées en","Langue(s) dans laquelle/lesquelles vous souhaitez traduire les entrées de votre dictionnaire","Langue(s) dans laquelle/lesquelles vous souhaitez traduire les entrées de votre dictionnaire","TRUE","שפה (ים) שברצונך לתרגם ערכים לתוך","שפה/ות עבורה/ן תרצו לתרגם ערכים","שפה/ות עבורה/ן תרצו לתרגם ערכים","TRUE","اللغة (اللغات) التي تريد ترجمة الإدخالات في","","اللغة (اللغات) التي تريد ترجمة الإدخالات في","FALSE","भाषा (एं) आप में प्रविष्टियों अनुवाद करना चाहते हैं","जिस भाषा(ओं) में आप प्रविष्टियों को अनुवाद करना चाहते हैं","जिस भाषा(ओं) में आप प्रविष्टियों को अनुवाद करना चाहते हैं","TRUE","ভাষা (গুলি) আপনি মধ্যে এন্ট্রি অনুবাদ করতে চান","","ভাষা (গুলি) আপনি মধ্যে এন্ট্রি অনুবাদ করতে চান","FALSE","ଭାଷା (s) ଭିତରକୁ ପ୍ରବିଷ୍ଟ ଅନୁବାଦ କରିବାକୁ","","ଭାଷା (s) ଭିତରକୁ ପ୍ରବିଷ୍ଟ ଅନୁବାଦ କରିବାକୁ","FALSE","","FALSE","Язык (ы), которые вы хотите перевести записи в","Язык(и), на которые Вы хотите перевести словарные статьи","Язык(и), на которые Вы хотите перевести словарные статьи","TRUE","语言(S)你想输入翻译成","","语言(S)你想输入翻译成","FALSE","Harshe (s) kana so ka fassara shigarwar cikin","","Harshe (s) kana so ka fassara shigarwar cikin","FALSE","Bahasa (s) Anda ingin menerjemahkan masukan ke dalam","Bahasa yang anda ingin terjemahkan entrinya","Bahasa yang anda ingin terjemahkan entrinya","TRUE","Lugha (s) unataka kutafsiri entries katika","Utataka kutafsiri vidahizo kwenda lugha zipi","Utataka kutafsiri vidahizo kwenda lugha zipi","TRUE","ቋንቋ (ዎች) ወደ ግቤቶችን መተርጎም ይፈልጋሉ","","ቋንቋ (ዎች) ወደ ግቤቶችን መተርጎም ይፈልጋሉ","FALSE","Ngôn ngữ (s) bạn muốn dịch mục vào","","Ngôn ngữ (s) bạn muốn dịch mục vào","FALSE","ภาษา (s) ที่คุณต้องการแปลลงในรายการ","","ภาษา (s) ที่คุณต้องการแปลลงในรายการ","FALSE","ភាសា (s) ដែលអ្នកចង់បកប្រែធាតុចូលទៅក្នុង","","ភាសា (s) ដែលអ្នកចង់បកប្រែធាតុចូលទៅក្នុង","FALSE","ພາສາ (s) ທ່ານຕ້ອງການທີ່ຈະແປພາສາການອອກສຽງເຂົ້າໄປໃນ","","ພາສາ (s) ທ່ານຕ້ອງການທີ່ຈະແປພາສາການອອກສຽງເຂົ້າໄປໃນ","FALSE","Bahasa (s) anda ingin menterjemahkan penyertaan ke","Bahasa yang anda ingin menterjemahkan entri-entri kepada","Bahasa yang anda ingin menterjemahkan entri-entri kepada","TRUE","(Mga) wika na nais mong i-translate ang mga entry sa","","(Mga) wika na nais mong i-translate ang mga entry sa","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Create New Dictionary","","","create","create_new_dictionary","create.create_new_dictionary","Crear nuevo diccionario","Crear un nuevo diccionario","Crear un nuevo diccionario","TRUE","Criar Novo Dicionário","Criar um novo Dicionário","Criar um novo Dicionário","TRUE","Créer un nouveau dictionnaire","Créer un nouveau dictionnaire","Créer un nouveau dictionnaire","TRUE","צור חדש מילון","יצירת מילון חדש","יצירת מילון חדש","TRUE","إنشاء قاموس جديد","إنشاء قاموس جديد","إنشاء قاموس جديد","FALSE","न्यू शब्दकोश बनाएं","नया शब्दकोश बनायें","नया शब्दकोश बनायें","TRUE","নতুন অভিধান তৈরি করুন","","নতুন অভিধান তৈরি করুন","FALSE","ନୂତନ Dictionary ସୃଷ୍ଟି","","ନୂତନ Dictionary ସୃଷ୍ଟି","FALSE","","FALSE","Создать новый словарь","","Создать новый словарь","TRUE","创建新字典","","创建新字典","FALSE","Create New Dictionary","","Create New Dictionary","FALSE","Buat New Dictionary","Membuat Kamus Baru","Membuat Kamus Baru","TRUE","Kujenga New Dictionary","Tengeneza Kamusi Mpya","Tengeneza Kamusi Mpya","TRUE","አዲስ መዝገበ ፍጠር","","አዲስ መዝገበ ፍጠር","FALSE","Tạo từ điển mới","","Tạo từ điển mới","FALSE","สร้างพจนานุกรมใหม่","","สร้างพจนานุกรมใหม่","FALSE","បង្កើតវចនានុក្រមថ្មី","","បង្កើតវចនានុក្រមថ្មី","FALSE","ສ້າງ Dictionary ໃຫມ່","","ສ້າງ Dictionary ໃຫມ່","FALSE","Buat Kamus New","Cipta Kamus Baharu","Cipta Kamus Baharu","TRUE","Lumikha ng Bagong Diksyunaryo.","","Lumikha ng Bagong Diksyunaryo.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"This will be the name of the dictionary.","","","create","name_clarification","create.name_clarification","Este será el nombre del diccionario.","Este será el nombre del diccionario","Este será el nombre del diccionario","TRUE","Este será o nome do dicionário.","Este será o nome do Dicionário.","Este será o nome do Dicionário.","TRUE","Ce sera le nom du dictionnaire.","Ce sera le nom du dictionnaire","Ce sera le nom du dictionnaire","TRUE","זה יהיה השם של המילון.","","זה יהיה השם של המילון.","TRUE","وسيكون هذا هو اسم القاموس.","سيكون هذا اسم القاموس","سيكون هذا اسم القاموس","FALSE","इस शब्दकोश का नाम होगा।","इस शब्दकोश का नाम होगा","इस शब्दकोश का नाम होगा","TRUE","এই অভিধানের নাম হবে।","","এই অভিধানের নাম হবে।","FALSE","ଏହି ଅଭିଧାନରେ ନାମ ହେବ।","","ଏହି ଅଭିଧାନରେ ନାମ ହେବ।","FALSE","","FALSE","Это будет название словаря.","","Это будет название словаря.","TRUE","这将是字典的名称。","","这将是字典的名称。","FALSE","Wannan zai zama sunan da kamus.","","Wannan zai zama sunan da kamus.","FALSE","Ini akan menjadi nama dari kamus.","Ini akan menjadi nama dari kamus...","Ini akan menjadi nama dari kamus...","TRUE","Hili litakuwa jina la kamusi.","Hili litakuwa jina la kamusi.","Hili litakuwa jina la kamusi.","TRUE","ይህ መዝገበ ቃላት ስም ይሆናል.","","ይህ መዝገበ ቃላት ስም ይሆናል.","FALSE","Đây sẽ là tên của từ điển.","","Đây sẽ là tên của từ điển.","FALSE","นี้จะเป็นชื่อของพจนานุกรม","","นี้จะเป็นชื่อของพจนานุกรม","FALSE","នេះនឹងជាឈ្មោះរបស់វចនានុក្រមនេះ។","","នេះនឹងជាឈ្មោះរបស់វចនានុក្រមនេះ។","FALSE","ນີ້ຈະເປັນຊື່ຂອງຈະນານຸກົມໄດ້.","","ນີ້ຈະເປັນຊື່ຂອງຈະນານຸກົມໄດ້.","FALSE","Ini akan menjadi nama kamus.","Ini akan menjadi nama kamus.","Ini akan menjadi nama kamus.","TRUE","Ito ang pangalan ng diksyunaryo.","","Ito ang pangalan ng diksyunaryo.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Make dictionary available in...","","","create","gloss_dictionary_in","create.gloss_dictionary_in","Hacer diccionario in disponible ...","Hacer el diccionario disponible en ...","Hacer el diccionario disponible en ...","TRUE","Faça dicionário in disponível ...","Tornar o Dicionário disponível em...","Tornar o Dicionário disponível em...","TRUE","Faire le dictionnaire disponible en ...","Ce dictionnaire sera disponible en...","Ce dictionnaire sera disponible en...","TRUE","הפוך מילון זמין ...","שפות בהן המילון יהיה זמין","שפות בהן המילון יהיה זמין","TRUE","جعل القاموس في متاحا ...","إتاحة القاموس في...","إتاحة القاموس في...","FALSE","शब्दकोश उपलब्ध में करें ...","शब्दकोश को......में उपलब्ध करें","शब्दकोश को......में उपलब्ध करें","TRUE","অভিধান উপলব্ধ করুন ...","","অভিধান উপলব্ধ করুন ...","FALSE","ଅଭିଧାନରେ ଉପଲବ୍ଧ ରେ ପ୍ରସ୍ତୁତ କରନ୍ତୁ ...","","ଅଭିଧାନରେ ଉପଲବ୍ଧ ରେ ପ୍ରସ୍ତୁତ କରନ୍ତୁ ...","FALSE","","FALSE","Сделать словарь Доступен в ...","Сделать словарь доступным в ...","Сделать словарь доступным в ...","TRUE","让字典提供...","","让字典提供...","FALSE","Make kamus samuwa a ...","","Make kamus samuwa a ...","FALSE","Membuat kamus di tersedia ...","Membuat kamus tersedia....","Membuat kamus tersedia....","TRUE","Kufanya kamusi inapatikana katika ...","Fanya kamusi ipatikane kwa lugha...","Fanya kamusi ipatikane kwa lugha...","TRUE","መዝገበ ቃላት ይገኛል ላይ አድርግ ...","","መዝገበ ቃላት ይገኛል ላይ አድርግ ...","FALSE","Hãy từ điển trong có sẵn ...","","Hãy từ điển trong có sẵn ...","FALSE","ทำให้พจนานุกรมในที่มีอยู่ ...","","ทำให้พจนานุกรมในที่มีอยู่ ...","FALSE","ធ្វើឱ្យអាចប្រើវចនានុក្រម ... ​​នៅ","","ធ្វើឱ្យអាចប្រើវចនានុក្រម ... ​​នៅ","FALSE","ເຮັດໃຫ້ຈະນານຸກົມໃນທີ່ມີຢູ່ ...","","ເຮັດໃຫ້ຈະນານຸກົມໃນທີ່ມີຢູ່ ...","FALSE","Membuat kamus yang tersedia di ...","Membuat kamus tersedia dalam...","Membuat kamus tersedia dalam...","TRUE","Gumawa ng magagamit na diksyunaryo sa ...","","Gumawa ng magagamit na diksyunaryo sa ...","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Language(s)","","","create","languages","create.languages","Lengua (s)","Idioma(s)","Idioma(s)","FALSE","Línguas)","Língua(s)","Língua(s)","TRUE","Langue (s)","Langue(s)","Langue(s)","FALSE","שפה (ים)","שפה/שפות","שפה/שפות","TRUE","اللغات)","لغات","لغات","FALSE","भाषा (एं)","भाषा (यें)","भाषा (यें)","TRUE","ভাষা (গুলি)","","ভাষা (গুলি)","FALSE","ଭାଷା (ଗୁଡିକ)","","ଭାଷା (ଗୁଡିକ)","FALSE","","FALSE","Язык (ы)","Язык(и)","Язык(и)","TRUE","语言(S)","","语言(S)","FALSE","Harshe (s)","","Harshe (s)","FALSE","Bahasa)","Bahasa","Bahasa","TRUE","Lugha (s)","Lugha","Lugha","TRUE","ቋንቋ (ዎች)","ቋንቋ (ዎች)","ቋንቋ (ዎች)","TRUE","Ngôn ngữ (s)","","Ngôn ngữ (s)","FALSE","ภาษา (s)","","ภาษา (s)","FALSE","ភាសា (s បាន)","","ភាសា (s បាន)","FALSE","ພາສາ (s)","","ພາສາ (s)","FALSE","Bahasa (s)","Bahasa","Bahasa","TRUE","(Mga) wika","","(Mga) wika","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Where is this language spoken?","","","create","where_spoken","create.where_spoken","Donde se habla este idioma?","¿Dónde se habla este idioma?","¿Dónde se habla este idioma?","TRUE","Onde está essa língua falada?","Onde é que a Língua(s) é falada?","Onde é que a Língua(s) é falada?","TRUE","Où cette langue est parlée?","Où est parlée cette langue ?","Où est parlée cette langue ?","TRUE","איפה השפה הזו מדוברת?","היכן שפה זו מדוברת?","היכן שפה זו מדוברת?","TRUE","أين هي هذه اللغة المستخدمة؟","أين يتم التحدّث بهذه اللغة؟","أين يتم التحدّث بهذه اللغة؟","FALSE","जहां इस भाषा बोली जाती है?","ये भाषा कहाँ बोली जाती है?","ये भाषा कहाँ बोली जाती है?","TRUE","কোথায় এই ভাষা উচ্চারিত হয়?","","কোথায় এই ভাষা উচ্চারিত হয়?","FALSE","ଏହି ଭାଷା କେଉଁଠାରେ କଥା ଅଛି?","","ଏହି ଭାଷା କେଉଁଠାରେ କଥା ଅଛି?","FALSE","","FALSE","Где говорит этот язык?","Где говорят на этом языке?","Где говорят на этом языке?","TRUE","哪里是说这种语言?","","哪里是说这种语言?","FALSE","Ina wannan harshe ya faɗa?","","Ina wannan harshe ya faɗa?","FALSE","Dimana bahasa ini dituturkan?","Dimana bahasa ini dituturkan?","Dimana bahasa ini dituturkan?","TRUE","Wapi lugha hii amesema?","Hii lugha inazungumzwa wapi?","Hii lugha inazungumzwa wapi?","TRUE","ይህ ቋንቋ የት የሚነገር ነው?","","ይህ ቋንቋ የት የሚነገር ነው?","FALSE","Đâu là ngôn ngữ này nói?","","Đâu là ngôn ngữ này nói?","FALSE","อยู่ที่ไหนภาษานี้พูด?","","อยู่ที่ไหนภาษานี้พูด?","FALSE","ភាសានេះត្រូវបាននិយាយនៅកន្លែងណា?","","ភាសានេះត្រូវបាននិយាយនៅកន្លែងណា?","FALSE","ບ່ອນທີ່ພາສານີ້ເວົ້າ?","","ບ່ອນທີ່ພາສານີ້ເວົ້າ?","FALSE","Di mana bahasa ini dituturkan?","Dimanakah bahasa ini dituturkan?","Dimanakah bahasa ini dituturkan?","TRUE","Saan nagsasalita ang wikang ito?","","Saan nagsasalita ang wikang ito?","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Alternate Names","","","create","alternate_names","create.alternate_names","Nombres Alternativos","Nombres alternativos","Nombres alternativos","TRUE","Nomes alternativos","Nomes Alternativos ","Nomes Alternativos ","TRUE","Autres noms","Noms alternatifs de la langue","Noms alternatifs de la langue","TRUE","שמות חלופיים","","שמות חלופיים","TRUE","أسماء بديلة","أسماء بديلة","أسماء بديلة","FALSE","वैकल्पिक नाम","वैकल्पिक नाम","वैकल्पिक नाम","TRUE","বিকল্প নাম","","বিকল্প নাম","FALSE","ବୈକଳ୍ପିକ ନାମ","","ବୈକଳ୍ପିକ ନାମ","FALSE","","FALSE","Альтернативные названия","","Альтернативные названия","TRUE","替代名称","","替代名称","FALSE","Alternate Names","","Alternate Names","FALSE","Nama alternatif","Nama alternatif","Nama alternatif","TRUE","Majina Mbadala","Majina mbadala","Majina mbadala","TRUE","ተለዋጭ ስሞች","ተለዋጭ ስሞች","ተለዋጭ ስሞች","TRUE","Tên thay thế","","Tên thay thế","FALSE","ชื่ออื่น","","ชื่ออื่น","FALSE","ឈ្មោះជំនួស","","ឈ្មោះជំនួស","FALSE","Names ສໍາຮອງ","","Names ສໍາຮອງ","FALSE","Nama Ganti","Nama-nama Lain","Nama-nama Lain","TRUE","Mga alternatibong pangalan","","Mga alternatibong pangalan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Visible to Public","","","create","visible_to_public","create.visible_to_public","Visible a Público","Visible al público","Visible al público","TRUE","Visível para Pública","Visível para o Público","Visível para o Público","TRUE","Visible au public","Visible au public","Visible au public","TRUE","גלויות לציבור","מילון ציבורי","מילון ציבורי","TRUE","مرئية العامة","مرئية للعامة","مرئية للعامة","FALSE","उसे सार्वजनिक रूप से","सार्वजनिक रुप में दिखेगा ","सार्वजनिक रुप में दिखेगा ","TRUE","জনগনের কাছে দৃশ্যমান","","জনগনের কাছে দৃশ্যমান","FALSE","ଜନସାଧାରଣ ଦୃଶ୍ୟଲବ୍ଧ","","ଜନସାଧାରଣ ଦୃଶ୍ୟଲବ୍ଧ","FALSE","","FALSE","Видна общественности","Видно всем","Видно всем","TRUE","公开显示","","公开显示","FALSE","Bayyane ga Jama'a","","Bayyane ga Jama'a","FALSE","Terlihat Umum","Terlihat oleh umum","Terlihat oleh umum","TRUE","Inaonekana na umma","Inaonekana kwa umma","Inaonekana kwa umma","TRUE","በይፋ የሚታይ","በይፋ የሚታይ","በይፋ የሚታይ","TRUE","Hiển thị đối với Công","","Hiển thị đối với Công","FALSE","ปรากฏแก่สาธารณะ","","ปรากฏแก่สาธารณะ","FALSE","អាចមើលឃើញដល់សាធារណៈ","","អាចមើលឃើញដល់សាធារណៈ","FALSE","ມາດເບິ່ງເຫັນໄດ້ສາທາລະນະ","","ມາດເບິ່ງເຫັນໄດ້ສາທາລະນະ","FALSE","Kelihatan kepada Awam","Dapat Dilihat oleh Umum","Dapat Dilihat oleh Umum","TRUE","Nakikita sa publiko","","Nakikita sa publiko","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Requires Community Consent","","","create","req_com_consent","create.req_com_consent","Requiere el consentimiento de la Comunidad","Se requiere la aprobación de la comunidad","Se requiere la aprobación de la comunidad","TRUE","Requer Comunidade Consentimento","Requer Consentimento da Comunidade","Requer Consentimento da Comunidade","TRUE","Exige le consentement communautaire","Cela nécessite le consentement de la communauté","Cela nécessite le consentement de la communauté","TRUE","דורשת קהילת הסכמה","נדרשת הסכמה של הקהילה","נדרשת הסכמה של הקהילה","TRUE","يتطلب الجماعة الموافقة","تتطلب/ يتطلب موافقة المجتمع","تتطلب/ يتطلب موافقة المجتمع","FALSE","सामुदायिक सहमति की आवश्यकता","सामुदायिक सहमति की आवश्यकता","सामुदायिक सहमति की आवश्यकता","TRUE","কমিউনিটি কনসেন্ট প্রয়োজন","","কমিউনিটি কনসেন্ট প্রয়োজন","FALSE","ଆବଶ୍ୟକ ସମ୍ପ୍ରଦାୟ ସମ୍ମତି","","ଆବଶ୍ୟକ ସମ୍ପ୍ରଦାୟ ସମ୍ମତି","FALSE","","FALSE","Требуется сообщество Согласия","Требуется согласие сообщества","Требуется согласие сообщества","TRUE","需要社会各界的同意","","需要社会各界的同意","FALSE","Bukatar Community yarda","","Bukatar Community yarda","FALSE","Membutuhkan Komunitas Consent","Memerlukan Persetujuan Komunitas Bahasa","Memerlukan Persetujuan Komunitas Bahasa","TRUE","Inahitaji Community Ridhaa","Inahitaji Ridhaa ya Jamii","Inahitaji Ridhaa ya Jamii","TRUE","የማህበረሰብ ስምምነት ያስፈልገዋል","የማህበረሰብ ስምምነት ያስፈልገዋል","የማህበረሰብ ስምምነት ያስፈልገዋል","TRUE","Đòi hỏi cộng đồng Chấp thuận","","Đòi hỏi cộng đồng Chấp thuận","FALSE","ต้องได้รับความยินยอมชุมชน","","ต้องได้รับความยินยอมชุมชน","FALSE","តម្រូវឱ្យមានសហគមន៍យល់ព្រម","","តម្រូវឱ្យមានសហគមន៍យល់ព្រម","FALSE","ຮຽກຮ້ອງໃຫ້ຊຸມຊົນຍິນຍອມ","","ຮຽກຮ້ອງໃຫ້ຊຸມຊົນຍິນຍອມ","FALSE","Memerlukan Komuniti Persetujuan","Memerlukan Persetujuan Masyarakat","Memerlukan Persetujuan Masyarakat","TRUE","Ay nangangailangan ng pahintulot ng komunidad","","Ay nangangailangan ng pahintulot ng komunidad","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Create Dictionary","","","create","create_dictionary","create.create_dictionary","crear diccionario","Crear un diccionario","Crear un diccionario","TRUE","Criar Dicionário","Criar Dicionário","Criar Dicionário","TRUE","Créer Dictionnaire","Créer un dictionnaire","Créer un dictionnaire","TRUE","צור מילון","יצירת מילון","יצירת מילון","TRUE","إنشاء قاموس","إنشاء قاموس","إنشاء قاموس","FALSE","शब्दकोश बनाएं","शब्दकोश बनायें","शब्दकोश बनायें","TRUE","অভিধান তৈরি","","অভিধান তৈরি","FALSE","Dictionary ସୃଷ୍ଟି","","Dictionary ସୃଷ୍ଟି","FALSE","","FALSE","Создать словарь","","Создать словарь","TRUE","创建字典","","创建字典","FALSE","ƙirƙiri Dictionary","","ƙirƙiri Dictionary","FALSE","Buat Kamus","Membuat Kamus","Membuat Kamus","TRUE","kujenga Dictionary","Tengeneza Kamusi ","Tengeneza Kamusi ","TRUE","መዝገበ ፍጠር","መዝገበቃላት ይፍጠሩ","መዝገበቃላት ይፍጠሩ","TRUE","tạo từ điển","","tạo từ điển","FALSE","สร้างพจนานุกรม","","สร้างพจนานุกรม","FALSE","បង្កើតវចនានុក្រម","","បង្កើតវចនានុក្រម","FALSE","ສ້າງ Dictionary","","ສ້າງ Dictionary","FALSE","Buat Kamus","Cipta Kamus","Cipta Kamus","TRUE","Lumikha ng Diksyunaryo","","Lumikha ng Diksyunaryo","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Latitude","","","dictionary","latitude","dictionary.latitude","Latitud","Latitud","Latitud","TRUE","Latitude","Latitude","Latitude","TRUE","Latitude","Latitude","Latitude","TRUE","קו רוחב","","קו רוחב","TRUE","خط العرض","خط العرض","خط العرض","FALSE","अक्षांश","अक्षांश","अक्षांश","TRUE","অক্ষাংশ","","অক্ষাংশ","FALSE","ଅକ୍ଷାଂଶ","","ଅକ୍ଷାଂଶ","FALSE","","FALSE","широта","Широта","Широта","TRUE","纬度","","纬度","FALSE","Latitude","","Latitude","FALSE","Garis Lintang","Garis Lintang","Garis Lintang","TRUE","Latitude","Latitudo","Latitudo","TRUE","አግዳሚ መሥመር","አግዳሚ መሥመር","አግዳሚ መሥመር","TRUE","vĩ độ","","vĩ độ","FALSE","ละติจูด","","ละติจูด","FALSE","រយៈទទឹង","","រយៈទទឹង","FALSE","ເສັ້ນຂະຫນານ","","ເສັ້ນຂະຫນານ","FALSE","Latitud","Latitud","Latitud","TRUE","Latitude.","","Latitude.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Longitude","","","dictionary","longitude","dictionary.longitude","Longitud","Longitud","Longitud","TRUE","Longitude","Longitude","Longitude","TRUE","Longitude","Longiture","Longiture","TRUE","קו אורך","","קו אורך","TRUE","خط الطول","خط الطول","خط الطول","FALSE","देशान्तर","देशान्तर","देशान्तर","TRUE","দ্রাঘিমা","","দ্রাঘিমা","FALSE","ଦ୍ରାଘିମା","","ଦ୍ରାଘିମା","FALSE","","FALSE","долгота","Долгота","Долгота","TRUE","经度","","经度","FALSE","longitude","","longitude","FALSE","Garis bujur","Garis Bujur","Garis Bujur","TRUE","Longitude","Longitudo","Longitudo","TRUE","አቆልቋይ መሥመር","አቆልቋይ መሥመር","አቆልቋይ መሥመር","TRUE","kinh độ","","kinh độ","FALSE","ลองจิจูด","","ลองจิจูด","FALSE","រយៈបណ្ដោយ","","រយៈបណ្ដោយ","FALSE","ເສັ້ນແວງ","","ເສັ້ນແວງ","FALSE","longitud","Longitud","Longitud","TRUE","Longitude.","","Longitude.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"No information yet","","","dictionary","no_info_yet","dictionary.no_info_yet","No hay información disponible","Todavía no hay información en esta sección.","Todavía no hay información en esta sección.","TRUE","Nenhuma informação ainda","Ainda sem nenhuma informação ","Ainda sem nenhuma informação ","TRUE","Pas d'informations","Il n'y a pas encore d'information dans cette section.","Il n'y a pas encore d'information dans cette section.","TRUE","עדיין אין מידע","מידע עדיין לא קיים","מידע עדיין לא קיים","TRUE","لا معلومات حتى الآن","لا تتوفر معلومات حتى الآن","لا تتوفر معلومات حتى الآن","FALSE","अभी तक कोई सूचना नहीं","अभी तक कोई सूचना नहीं","अभी तक कोई सूचना नहीं","TRUE","কোন তথ্য এখনো","","কোন তথ্য এখনো","FALSE","କୌଣସି ସୂଚନା ଏପର୍ଯ୍ୟନ୍ତ","","କୌଣସି ସୂଚନା ଏପର୍ଯ୍ୟନ୍ତ","FALSE","","FALSE","Нет информации пока","Информация пока отсутствует","Информация пока отсутствует","TRUE","还没有信息","","还没有信息","FALSE","Babu bayanai duk da haka","","Babu bayanai duk da haka","FALSE","Tidak ada informasi belum","Informasi belum tersedia","Informasi belum tersedia","TRUE","Hakuna taarifa bado","Hakuna taarifa kwa sasa","Hakuna taarifa kwa sasa","TRUE","እስካሁን ምንም መረጃ የለም","እስካሁን ምንም መረጃ የለም","እስካሁን ምንም መረጃ የለም","TRUE","Không có thông tin chưa","","Không có thông tin chưa","FALSE","ยังไม่มีข้อมูล","","ยังไม่มีข้อมูล","FALSE","គ្មានពនៅឡើយទេ","","គ្មានពនៅឡើយទេ","FALSE","ບໍ່ມີຂໍ້ມູນເທື່ອ","","ບໍ່ມີຂໍ້ມູນເທື່ອ","FALSE","Tidak ada maklumat lagi","Masih tiada maklumat","Masih tiada maklumat","TRUE","Walang impormasyon","","Walang impormasyon","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Name of Language","","","dictionary","name_of_language","dictionary.name_of_language","Nombre de la Lengua","Nombre del idioma","Nombre del idioma","TRUE","Nome do Idioma","Nome da Língua ","Nome da Língua ","TRUE","Nom de la langue","Nom de la langue","Nom de la langue","TRUE","שם שפה","שם השפה","שם השפה","TRUE","اسم اللغة","اسم اللغة","اسم اللغة","FALSE","भाषा का नाम","भाषा का नाम","भाषा का नाम","TRUE","ভাষা নাম","","ভাষা নাম","FALSE","ଭାଷା ନାମ","","ଭାଷା ନାମ","FALSE","","FALSE","Название языка","","Название языка","TRUE","语言的名称","","语言的名称","FALSE","Sunan Harshe","","Sunan Harshe","FALSE","Nama Bahasa","Nama Bahasa","Nama Bahasa","TRUE","Jina la lugha","Jina la lugha","Jina la lugha","TRUE","የቋንቋ ስም","የቋንቋ ስም","የቋንቋ ስም","TRUE","Tên của ngôn ngữ","","Tên của ngôn ngữ","FALSE","ชื่อของภาษา","","ชื่อของภาษา","FALSE","ឈ្មោះនៃភាសា","","ឈ្មោះនៃភាសា","FALSE","ຊື່ຂອງພາສາ","","ຊື່ຂອງພາສາ","FALSE","Nama Bahasa","Nama Bahasa","Nama Bahasa","TRUE","Pangalan ng wika","","Pangalan ng wika","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Location","","","dictionary","location","dictionary.location","Ubicación","Ubicación","Ubicación","TRUE","Localização","Local ","Local ","TRUE","Emplacement","Lieu","Lieu","TRUE","מקום","מיקום","מיקום","TRUE","موقعك","الموقع","الموقع","FALSE","स्थान","स्थान","स्थान","TRUE","অবস্থান","","অবস্থান","FALSE","ସ୍ଥାନ","","ସ୍ଥାନ","FALSE","","FALSE","Место расположения","Местонахождение","Местонахождение","TRUE","位置","","位置","FALSE","location","","location","FALSE","tempat","Tempat bahasa dituturkan","Tempat bahasa dituturkan","TRUE","eneo","Eneo","Eneo","TRUE","አካባቢ","አካባቢ","አካባቢ","TRUE","Vị trí","","Vị trí","FALSE","ที่ตั้ง","","ที่ตั้ง","FALSE","ទីតាំង","","ទីតាំង","FALSE","ສະຖານທີ່","","ສະຖານທີ່","FALSE","lokasi","Lokasi","Lokasi","TRUE","Lokasyon","","Lokasyon","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Terms of Use","","","dictionary","terms_of_use","dictionary.terms_of_use","Términos de Uso","Términos de uso","Términos de uso","TRUE","Termos de uso","Termos de Utilização ","Termos de Utilização ","TRUE","Conditions d'utilisation","Conditions d'utilisation","Conditions d'utilisation","TRUE","תנאי שימוש","","תנאי שימוש","TRUE","تعليمات الاستخدام","شروط الاستخدام","شروط الاستخدام","FALSE","उपयोग की शर्तें","उपयोग की शर्तें","उपयोग की शर्तें","TRUE","ব্যবহারের শর্তাবলী","","ব্যবহারের শর্তাবলী","FALSE","ବ୍ୟବହାର ସର୍ତ୍ତାବଳୀ","","ବ୍ୟବହାର ସର୍ତ୍ତାବଳୀ","FALSE","","FALSE","Условия эксплуатации","Условия использования","Условия использования","TRUE","使用条款","","使用条款","FALSE","Sharuddan Amfani","","Sharuddan Amfani","FALSE","Syarat Penggunaan","Syarat Penggunaan","Syarat Penggunaan","TRUE","Masharti ya matumizi","Masharti ya matumizi","Masharti ya matumizi","TRUE","የአጠቃቀም መመሪያ","የአጠቃቀም መመሪያ","የአጠቃቀም መመሪያ","TRUE","Quy định sử dụng","","Quy định sử dụng","FALSE","ข้อตกลงในการใช้งาน","","ข้อตกลงในการใช้งาน","FALSE","លក្ខខណ្ឌនៃការប្រើប្រាស់","","លក្ខខណ្ឌនៃការប្រើប្រាស់","FALSE","ເງື່ອນໄຂຂອງການນໍາໃຊ້","","ເງື່ອນໄຂຂອງການນໍາໃຊ້","FALSE","Syarat Penggunaan","Syarat Penggunaan","Syarat Penggunaan","TRUE","Mga Tuntunin ng Paggamit","","Mga Tuntunin ng Paggamit","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Contributors","","","dictionary","contributors","dictionary.contributors","colaboradores","Colaboradores","Colaboradores","TRUE","contribuintes","Contribuintes","Contribuintes","TRUE","Collaborateurs","Collaborateurs","Collaborateurs","TRUE","התורם","תורמים/מתנדבים","תורמים/מתנדבים","TRUE","المساهمون","المساهمون","المساهمون","FALSE","योगदानकर्ताओं","योगदानकर्ता","योगदानकर्ता","TRUE","অবদানকারী","","অবদানকারী","FALSE","ସହଯୋଗୀ","","ସହଯୋଗୀ","FALSE","","FALSE","Авторы","Создатели","Создатели","TRUE","贡献者","","贡献者","FALSE","bayar da gudunmawa","","bayar da gudunmawa","FALSE","kontributor","Kontributor","Kontributor","TRUE","wachangiaji","Wachangiaji","Wachangiaji","TRUE","አዋጮች","","አዋጮች","FALSE","Cộng tác viên","","Cộng tác viên","FALSE","ร่วมให้ข้อมูล","","ร่วมให้ข้อมูล","FALSE","អ្នកចូលរួមចំណែក","","អ្នកចូលរួមចំណែក","FALSE","ການປະກອບສ່ວນ","","ການປະກອບສ່ວນ","FALSE","penyumbang","Penyumbang","Penyumbang","TRUE","Mga kontribyutor","","Mga kontribyutor","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Grammar","","","dictionary","grammar","dictionary.grammar","Gramática","Gramática","Gramática","TRUE","Gramática","Gramática ","Gramática ","TRUE","Grammaire","Grammaire","Grammaire","TRUE","דקדוק","","דקדוק","TRUE","قواعد","القواعد","القواعد","FALSE","व्याकरण","व्याकरण","व्याकरण","TRUE","ব্যাকরণ","","ব্যাকরণ","FALSE","ବ୍ଯାକରଣ","","ବ୍ଯାକରଣ","FALSE","","FALSE","грамматика","Грамматика","Грамматика","TRUE","语法","","语法","FALSE","Grammar","","Grammar","FALSE","Tatabahasa","Tata Bahasa","Tata Bahasa","TRUE","Grammar","Sarufi","Sarufi","TRUE","ሰዋስዉ","ሰዋስዉ","ሰዋስዉ","TRUE","Ngữ pháp","","Ngữ pháp","FALSE","ไวยากรณ์","","ไวยากรณ์","FALSE","វេយ្យាករណ៍","","វេយ្យាករណ៍","FALSE","Grammar","","Grammar","FALSE","tatabahasa","Tatabahasa","Tatabahasa","TRUE","Gramatika","","Gramatika","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Entries","","","dictionary","entries","dictionary.entries","entradas","Entradas","Entradas","TRUE","entradas","Inscrições","Inscrições","TRUE","entrées","Entrées","Entrées","TRUE","רשום","ערכים","ערכים","TRUE","مقالات","المُدخلات","المُدخلات","FALSE","प्रविष्टियां","प्रविष्टियां","प्रविष्टियां","TRUE","এন্ট্রি","","এন্ট্রি","FALSE","ଭରଣଗୁଡ଼ିକୁ","","ଭରଣଗୁଡ଼ିକୁ","FALSE","","FALSE","Записи","Словарные статьи","Словарные статьи","TRUE","项","","项","FALSE","Entries","","Entries","FALSE","Entries","Entri","Entri","TRUE","maingizo","Maingizo","Maingizo","TRUE","ግቤቶች","","ግቤቶች","FALSE","Mục","","Mục","FALSE","รายการ","","รายการ","FALSE","ធាតុ","","ធាតុ","FALSE","ການອອກສຽງ","","ການອອກສຽງ","FALSE","penyertaan","Entri","Entri","TRUE","Entries.","","Entries.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"View Entries","","","entry","view_entries","entry.view_entries","Ver las entradas","Ver las entradas","Ver las entradas","TRUE","Ver entradas","Ver Inscrições","Ver Inscrições","TRUE","Voir les billets","Voir les entrées","Voir les entrées","TRUE","הצג רשומות","הצגת ערכים","הצגת ערכים","TRUE","مشاهدة مقالات","مشاهدة المدخلات","مشاهدة المدخلات","FALSE","एंट्री देखें","प्रविष्टियां देखें","प्रविष्टियां देखें","TRUE","দেখুন এন্ট্রি","","দেখুন এন্ট্রি","FALSE","ଦର୍ଶନ ଭରଣଗୁଡ଼ିକୁ","","ଦର୍ଶନ ଭରଣଗୁଡ଼ିକୁ","FALSE","","FALSE","Просмотр записи","Просмотр статей","Просмотр статей","TRUE","查看条目","","查看条目","FALSE","view Entries","","view Entries","FALSE","Lihat Entri","Lihat Entri","Lihat Entri","TRUE","Ona Maelezo","Ona Maingizo","Ona Maingizo","TRUE","ይመልከቱ ግቤቶችን","","ይመልከቱ ግቤቶችን","FALSE","Xem Entries","","Xem Entries","FALSE","ดูรายการ","","ดูรายการ","FALSE","មើលធាតុ","","មើលធាតុ","FALSE","ເບິ່ງການອອກສຽງ","","ເບິ່ງການອອກສຽງ","FALSE","Lihat Entries","Lihat Entri","Lihat Entri","TRUE","Tingnan ang mga entry.","","Tingnan ang mga entry.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Audio","","","entry","audio","entry.audio","Audio","Audio","Audio","TRUE","auditivo","Áudio","Áudio","TRUE","l'audio","Audio","Audio","TRUE","שֶׁמַע","שמע (אודיו)","שמע (אודיו)","TRUE","سمعي","صوتي/ سمعي","صوتي/ سمعي","FALSE","ऑडियो","ऑडियो","ऑडियो","TRUE","শ্রুতি","","শ্রুতি","FALSE","ଅଡିଓ","","ଅଡିଓ","FALSE","","FALSE","аудио","Аудио","Аудио","TRUE","音频","","音频","FALSE","audio","","audio","FALSE","Audio","Audio","Audio","TRUE","Audio","sauti","sauti","TRUE","ኦዲዮ","","ኦዲዮ","FALSE","âm thanh","","âm thanh","FALSE","เสียง","","เสียง","FALSE","អូឌីយ៉ូ","","អូឌីយ៉ូ","FALSE","ສຽງ","","ສຽງ","FALSE","Audio","Audio","Audio","TRUE","Audio","","Audio","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Speaker","","","entry","speaker","entry.speaker","Altavoz","Hablante","Hablante","TRUE","Alto falante","Falante","Falante","TRUE","Orateur","Locuteur","Locuteur","TRUE","רַמקוֹל","דובר/ת","דובר/ת","TRUE","مكبر الصوت","مُكبّر الصوت","مُكبّر الصوت","FALSE","वक्ता","वक्ता","वक्ता","TRUE","বক্তা","","বক্তা","FALSE","ସ୍ପିକର","","ସ୍ପିକର","FALSE","","FALSE","Оратор","Информант","Информант","TRUE","扬声器","","扬声器","FALSE","Majalisa","","Majalisa","FALSE","Pembicara","Penutur","Penutur","TRUE","Spika","Spika","Spika","TRUE","ተናጋሪ","ተናጋሪ","ተናጋሪ","TRUE","Loa","","Loa","FALSE","ผู้พูด","","ผู้พูด","FALSE","វាគ្មិន","","វាគ្មិន","FALSE","ລໍາໂພງ","","ລໍາໂພງ","FALSE","Speaker","Penutur","Penutur","TRUE","Tagapagsalita","","Tagapagsalita","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Image","","","entry","image","entry.image","Imagen","Imagen","Imagen","TRUE","Imagem","Imagem","Imagem","TRUE","Image","Image","Image","TRUE","תמונה","","תמונה","TRUE","صورة","صورة ","صورة ","FALSE","छवि","चित्र","चित्र","TRUE","ভাবমূর্তি","","ভাবমূর্তি","FALSE","ପ୍ରତିଛବି","","ପ୍ରତିଛବି","FALSE","","FALSE","Образ","Изображение","Изображение","TRUE","图片","","图片","FALSE","image","","image","FALSE","Gambar","Gambar","Gambar","TRUE","Image","Picha","Picha","TRUE","ምስል","ምስል","ምስል","TRUE","hình ảnh","","hình ảnh","FALSE","ภาพ","","ภาพ","FALSE","រូបភាព","","រូបភាព","FALSE","Image","","Image","FALSE","Imej","Imej","Imej","TRUE","Imahe","","Imahe","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Lexeme/Word/Phrase","","","entry","lx","entry.lx","Lexema / Palabra / Frase","Lexema / palabra","Lexema / palabra","TRUE","Lexema / Word / Frase","Lexema/Palavra/Frase","Lexema/Palavra/Frase","TRUE","Lexème / Word / Phrase","Lexème / mot","Lexème / mot","TRUE","Lexeme / מילה / ביטוי","ערך/מילה/ביטוי","ערך/מילה/ביטוי","TRUE","لكسيم / وورد / جملة","كلمة/ وحدة معجمية","كلمة/ وحدة معجمية","FALSE","शब्दिम / शब्द / वाक्यांश","शब्दिम / शब्द / वाक्यांश","शब्दिम / शब्द / वाक्यांश","TRUE","Lexeme / ওয়ার্ড / শব্দবন্ধ","","Lexeme / ওয়ার্ড / শব্দবন্ধ","FALSE","Lexeme / ଶବ୍ଦ / ଖଣ୍ଡବାକ୍ୟ","","Lexeme / ଶବ୍ଦ / ଖଣ୍ଡବାକ୍ୟ","FALSE","","FALSE","Лексема / слов / фраз","Лексема / слово / фраза","Лексема / слово / фраза","TRUE","语义/字/短语","","语义/字/短语","FALSE","Lexeme / Word / kalma","","Lexeme / Word / kalma","FALSE","Leksem / Firman","Leksem/Kata/Frase","Leksem/Kata/Frase","TRUE","Lexeme / neno / maneno","kipashio/neno/kirai","kipashio/neno/kirai","TRUE","Lexeme / ቃል / ሐረግ","","Lexeme / ቃል / ሐረግ","FALSE","Lexeme / từ / cụm từ","","Lexeme / từ / cụm từ","FALSE","Lexeme / คำ / วลี","","Lexeme / คำ / วลี","FALSE","Lexeme / ពាក្យ / ឃ្លា","","Lexeme / ពាក្យ / ឃ្លា","FALSE","ຕົວຂະ / Word / ປະໂຫຍກ","","ຕົວຂະ / Word / ປະໂຫຍກ","FALSE","Lexeme / Word / Frasa","Leksem/Perkataan/Frasa","Leksem/Perkataan/Frasa","TRUE","Lexeme / salita / parirala","","Lexeme / salita / parirala","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"ID","","","entry","ei","entry.ei","CARNÉ DE IDENTIDAD","ID","ID","TRUE","EU IRIA","ID","ID","TRUE","ID","ID","ID","TRUE","תְעוּדַת זֶהוּת","תעודת זהות","תעודת זהות","TRUE","هوية شخصية","الهوية الشخصية","الهوية الشخصية","FALSE","ईद","आइडी (ID)","आइडी (ID)","TRUE","আইডি","","আইডি","FALSE","ID","","ID","FALSE","","FALSE","МНЕ БЫ","ID","ID","TRUE","ID","","ID","FALSE","ID","","ID","FALSE","Indo","ID","ID","TRUE","ID","ID","ID","TRUE","መታወቂያ","መታወቂያ","መታወቂያ","TRUE","TÔI","","TÔI","FALSE","ID","","ID","FALSE","លេខសម្គាល់","","លេខសម្គាល់","FALSE","ລະຫັດ","","ລະຫັດ","FALSE","ID","ID","ID","TRUE","Id","","Id","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Morphology","","","entry","mr","entry.mr","Morfología","Morfología","Morfología","TRUE","Morfologia","Morfologia","Morfologia","TRUE","Morphologie","Morphologie","Morphologie","TRUE","מוֹרפוֹלוֹגִיָה","מורפולוגיה (תורת הצורות)","מורפולוגיה (תורת הצורות)","TRUE","علم التشكل المورفولوجيا","علم الصرف","علم الصرف","FALSE","आकृति विज्ञान","रूपविज्ञान","रूपविज्ञान","TRUE","অঙ্গসংস্থানবিদ্যা","","অঙ্গসংস্থানবিদ্যা","FALSE","Morphology","","Morphology","FALSE","","FALSE","Морфология","","Морфология","TRUE","形态学","","形态学","FALSE","ilimin halittar jiki","","ilimin halittar jiki","FALSE","Morfologi","Morfologi","Morfologi","TRUE","Mofolojia","Mofolojia","Mofolojia","TRUE","ሞርፎሎጂ","","ሞርፎሎጂ","FALSE","hình thái học","","hình thái học","FALSE","สัณฐานวิทยา","","สัณฐานวิทยา","FALSE","morphology","","morphology","FALSE","ສັນຖານວິທະ","","ສັນຖານວິທະ","FALSE","morfologi","Morfologi","Morfologi","TRUE","Morpolohiya","","Morpolohiya","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gloss","","","entry","gloss","entry.gloss","Brillo","Glose","Glose","TRUE","Lustro","Glossas","Glossas","TRUE","Brillant","Glose","Glose","TRUE","בָּרָק","תרגום","תרגום","TRUE","لمعان","قاموس مصطلحات","قاموس مصطلحات","FALSE","चमक","भाषांश","भाषांश","TRUE","টীকাটিপ্পনী","","টীকাটিপ্পনী","FALSE","ଡକ୍ୟୁମେଣ୍ଟ","","ଡକ୍ୟୁମେଣ୍ଟ","FALSE","","FALSE","Gloss","Глосса","Глосса","TRUE","光泽","","光泽","FALSE","mai sheki","","mai sheki","FALSE","gloss","Glos","Glos","TRUE","gloss","ufasiri","ufasiri","TRUE","ወዝ","","ወዝ","FALSE","Gloss","","Gloss","FALSE","กลอส","","กลอส","FALSE","លាក់បាំង","","លាក់បាំង","FALSE","Gloss","","Gloss","FALSE","gloss","Glos","Glos","TRUE","Gloss.","","Gloss.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Alternate Orthographies","","","entry","alternateOrthographies","entry.alternateOrthographies","alterna ortografías","Ortografías alternativas","Ortografías alternativas","TRUE","Alternate ortografias","Ortografias Alternativas ","Ortografias Alternativas ","TRUE","autre orthographes","Orthographies alternatives","Orthographies alternatives","TRUE","Alternate Orthographies","איות חלופי","איות חלופי","TRUE","البديل تهجئة","علوم الإملاء البديلة","علوم الإملاء البديلة","FALSE","वैकल्पिक Orthographies","वैकल्पिक लेखनविधि","वैकल्पिक लेखनविधि","TRUE","বিকল্প Orthographies","","বিকল্প Orthographies","FALSE","ବୈକଳ୍ପିକ Orthographies","","ବୈକଳ୍ପିକ Orthographies","FALSE","","FALSE","Альтернативные орфографии","","Альтернативные орфографии","TRUE","备用正字法","","备用正字法","FALSE","Alternate Orthographies","","Alternate Orthographies","FALSE","alternatif ortografi","Alternatif Ortografi","Alternatif Ortografi","TRUE","tahajia Mbadala","Othografia Mbadala","Othografia Mbadala","TRUE","ተለዋጭ Orthographies","","ተለዋጭ Orthographies","FALSE","thay thế chữ viết","","thay thế chữ viết","FALSE","สลับออร์โธกราฟ","","สลับออร์โธกราฟ","FALSE","ជំនួស Orthography","","ជំនួស Orthography","FALSE","ຈັບສະຫຼັບກາລັນ","","ຈັບສະຫຼັບກາລັນ","FALSE","alternatif Orthographies","Ortografi Alternatif","Ortografi Alternatif","TRUE","Alternatibong orthographies.","","Alternatibong orthographies.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"You must be signed in as a manager of this dictionary to make changes.","","","entry","signed_in_as_manager","entry.signed_in_as_manager","Debe haber iniciado sesión como administrador de este diccionario a los cambios de maquillaje.","Usted debe ser un administrador de este diccionario para modificarlo.","Usted debe ser un administrador de este diccionario para modificarlo.","TRUE","Você deve estar conectado como um gerente deste dicionário para mudanças fazer.","Tem que estar inscrito como gestor deste Dicionário para fazer alterações.","Tem que estar inscrito como gestor deste Dicionário para fazer alterações.","TRUE","Vous devez être connecté en tant que gestionnaire de ce dictionnaire pour effectuer des modifications.","Vous devez être manager de ce dictionnaire pour y apporter des modifications.","Vous devez être manager de ce dictionnaire pour y apporter des modifications.","TRUE","אתה חייב להיות מחובר כמנהל של המילון הזה לשינויי איפור.","אנא התחברו כמנהלים כדי לבצע שינוי זה.","אנא התחברו כמנהלים כדי לבצע שינוי זה.","TRUE","يجب أن تسجل في كمدير لهذا القاموس للتغيرات جعل.","يجدر بكم تسجيل الدخول بصفتكم مدراء هذا المشروع لتتمكنوا من إحداث التغييرات","يجدر بكم تسجيل الدخول بصفتكم مدراء هذا المشروع لتتمكنوا من إحداث التغييرات","FALSE","किए जाने वाले परिवर्तन करने के लिए इस शब्दकोश के प्रबंधक के रूप में प्रवेश करना होगा।","शब्दकोश में परिवर्तन करने के लिए प्रबंधक के रूप में प्रवेश करें।","शब्दकोश में परिवर्तन करने के लिए प्रबंधक के रूप में प्रवेश करें।","TRUE","আপনার করা পরিবর্তনগুলি এই অভিধানের একজন পরিচালক হিসেবে সাইন ইন করতে হবে।","","আপনার করা পরিবর্তনগুলি এই অভিধানের একজন পরিচালক হিসেবে সাইন ইন করতে হবে।","FALSE","ଆପଣ ଏହି ଅଭିଧାନ ପରିବର୍ତ୍ତନଗୁଡିକ କୁ ର ଏକ ପରିଚାଳକ ପରି ସାଇନ୍ ଉଚିତ।","","ଆପଣ ଏହି ଅଭିଧାନ ପରିବର୍ତ୍ତନଗୁଡିକ କୁ ର ଏକ ପରିଚାଳକ ପରି ସାଇନ୍ ଉଚିତ।","FALSE","","FALSE","Вы должны быть подписаны в качестве менеджера этого словаря изменений замыкающих.","Вы должны быть авторизованы как менеджер этого словаря для внесения изменений.","Вы должны быть авторизованы как менеджер этого словаря для внесения изменений.","TRUE","您必须签字作为本词典进行更改的经理。","","您必须签字作为本词典进行更改的经理。","FALSE","Ka dole ne a sanya hannu a matsayin manajan wannan kamus yi canje-canje.","","Ka dole ne a sanya hannu a matsayin manajan wannan kamus yi canje-canje.","FALSE","Anda harus masuk sebagai pengelola kamus ini untuk perubahan make.","Anda harus masuk sebagai pengelola kamus ini untuk membuat perubahan","Anda harus masuk sebagai pengelola kamus ini untuk membuat perubahan","TRUE","Lazima uwe umeingia kama msimamizi wa kamusi hii kwa kufanya mabadiliko.","Lazima uingie katika akaunti kama msimamizi wa kamusi hii ili ufanye mabadiliko.","Lazima uingie katika akaunti kama msimamizi wa kamusi hii ili ufanye mabadiliko.","TRUE","እንድታደርገው ለውጦች ይህን መዝገበ አስተዳዳሪ ሆነው መግባት አለብዎት.","","እንድታደርገው ለውጦች ይህን መዝገበ አስተዳዳሪ ሆነው መግባት አለብዎት.","FALSE","Bạn phải đăng nhập như một người quản lý của từ điển này để làm cho thay đổi.","","Bạn phải đăng nhập như một người quản lý của từ điển này để làm cho thay đổi.","FALSE","คุณต้องลงชื่อในฐานะผู้จัดการของพจนานุกรมนี้ที่จะทำให้การเปลี่ยนแปลง","","คุณต้องลงชื่อในฐานะผู้จัดการของพจนานุกรมนี้ที่จะทำให้การเปลี่ยนแปลง","FALSE","អ្នកត្រូវតែចូលជាអ្នកគ្រប់គ្រងវចនានុក្រមការផ្លាស់ប្តូរធ្វើឱ្យនេះ។","","អ្នកត្រូវតែចូលជាអ្នកគ្រប់គ្រងវចនានុក្រមការផ្លាស់ប្តូរធ្វើឱ្យនេះ។","FALSE","ທ່ານຕ້ອງເຂົ້າສູ່ລະບົບເປັນຜູ້ຈັດການຂອງຈະນານຸກົມນີ້ມີການປ່ຽນແປງເຮັດໃຫ້ໄດ້.","","ທ່ານຕ້ອງເຂົ້າສູ່ລະບົບເປັນຜູ້ຈັດການຂອງຈະນານຸກົມນີ້ມີການປ່ຽນແປງເຮັດໃຫ້ໄດ້.","FALSE","Anda mesti log masuk sebagai pengurus kamus ini untuk membuat perubahan.","Anda harus log masuk sebagai pengurus kamus ini untuk membuat perubahan.","Anda harus log masuk sebagai pengurus kamus ini untuk membuat perubahan.","TRUE","Dapat kang naka-sign in bilang isang tagapamahala ng diksyunaryo na ito upang gumawa ng mga pagbabago.","","Dapat kang naka-sign in bilang isang tagapamahala ng diksyunaryo na ito upang gumawa ng mga pagbabago.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Delete entry?","","","entry","delete_entry","entry.delete_entry","¿Eliminar la entrada?","¿Borrar la entrada?","¿Borrar la entrada?","TRUE","entrada de exclusão?","Apagar entrada?","Apagar entrada?","TRUE","Effacer l'entrée?","Supprimer l'entrée ?","Supprimer l'entrée ?","TRUE","מחק רשומה?","מחיקת ערך?","מחיקת ערך?","TRUE","حذف المدخلات؟","حذف المُدخلات؟","حذف المُدخلات؟","FALSE","प्रविष्टि हटाएं?","प्रविष्टि हटायें?","प्रविष्टि हटायें?","TRUE","লেখা মুছে ফেলো?","","লেখা মুছে ফেলো?","FALSE","ଲିଭାଇବା ପ୍ରବିଷ୍ଟ?","","ଲିଭାଇବା ପ୍ରବିଷ୍ଟ?","FALSE","","FALSE","Удалить запись?","Удалить словарную статью?","Удалить словарную статью?","TRUE","删除条目?","","删除条目?","FALSE","Delete shigarwa?","","Delete shigarwa?","FALSE","entri Hapus?","Hapus entri?","Hapus entri?","TRUE","kuingia Futa?","Futa ingizo","Futa ingizo","TRUE","ሰርዝ ግቤት?","","ሰርዝ ግቤት?","FALSE","entry xóa?","","entry xóa?","FALSE","รายการลบ?","","รายการลบ?","FALSE","ធាតុលុប?","","ធាតុលុប?","FALSE","ເຂົ້າ Delete?","","ເຂົ້າ Delete?","FALSE","kemasukan padam?","Padam entri?","Padam entri?","TRUE","Tanggalin ang inilagay?","","Tanggalin ang inilagay?","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Table","","","entry","table","entry.table","Mesa","Cuadrícula","Cuadrícula","TRUE","Tabela","Tabela ","Tabela ","TRUE","Table","Tableau","Tableau","TRUE","שולחן","טבלה","טבלה","TRUE","الطاولة","جدول","جدول","FALSE","तालिका","सारणी","सारणी","TRUE","টেবিল","","টেবিল","FALSE","ସାରଣୀ","","ସାରଣୀ","FALSE","","FALSE","Таблица","","Таблица","TRUE","表","","表","FALSE","Table","","Table","FALSE","Meja","Tabel","Tabel","TRUE","meza","Jedwali","Jedwali","TRUE","ጠረጴዛ","","ጠረጴዛ","FALSE","Bàn","","Bàn","FALSE","ตาราง","","ตาราง","FALSE","តារាង","","តារាង","FALSE","ຕາຕະລາງ","","ຕາຕະລາງ","FALSE","Jadual","Jadual","Jadual","TRUE","Table.","","Table.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gallery","","","entry","gallery","entry.gallery","Galería","Galería","Galería","TRUE","Galeria","Galeria","Galeria","TRUE","Galerie","Galerie","Galerie","TRUE","גלריה","","גלריה","TRUE","صالة عرض","معرض","معرض","FALSE","गेलरी","चित्रशाला","चित्रशाला","TRUE","দরদালান","","দরদালান","FALSE","ଚିତ୍ର ପ୍ରଦର୍ଶନୀ","","ଚିତ୍ର ପ୍ରଦର୍ଶନୀ","FALSE","","FALSE","Галерея","","Галерея","TRUE","画廊","","画廊","FALSE","gallery","","gallery","FALSE","Galeri","Galeri ","Galeri ","TRUE","nyumba ya sanaa","Galeria","Galeria","TRUE","የሥዕል ማሳያ አዳራሽ","","የሥዕል ማሳያ አዳራሽ","FALSE","Bộ sưu tập","","Bộ sưu tập","FALSE","เฉลียง","","เฉลียง","FALSE","វិចិត្រសាល","","វិចិត្រសាល","FALSE","ວາງສະແດງຮູບ","","ວາງສະແດງຮູບ","FALSE","Galeri","Galeri","Galeri","TRUE","Gallery","","Gallery","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Filters","","","entry","filters","entry.filters","filtros","Filtros","Filtros","TRUE","filtros","Filtros","Filtros","TRUE","filtres","Filtres","Filtres","TRUE","מסנן","סינון","סינון","TRUE","مرشحات","تصفية","تصفية","FALSE","फिल्टर","फिल्टर","फिल्टर","TRUE","ফিল্টার","","ফিল্টার","FALSE","ଫିଲ୍ଟରମାନ","","ଫିଲ୍ଟରମାନ","FALSE","","FALSE","фильтры","Фильтры","Фильтры","TRUE","过滤器","","过滤器","FALSE","Matatu","","Matatu","FALSE","filter","Filter","Filter","TRUE","filters","Chujio","Chujio","TRUE","ማጣሪያዎች","","ማጣሪያዎች","FALSE","bộ lọc","","bộ lọc","FALSE","ฟิลเตอร์","","ฟิลเตอร์","FALSE","តម្រង","","តម្រង","FALSE","ການກັ່ນຕອງ","","ການກັ່ນຕອງ","FALSE","penapis","Penapis","Penapis","TRUE","Mga filter","","Mga filter","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Photo","","","entry","photo","entry.photo","Foto","Foto","Foto","TRUE","foto","Foto","Foto","TRUE","Photo","Photo","Photo","TRUE","תמונה","","תמונה","TRUE","صورة فوتوغرافية","صورة","صورة","FALSE","तस्वीर","तस्वीर","तस्वीर","TRUE","ছবি","","ছবি","FALSE","ଫଟୋ","","ଫଟୋ","FALSE","","FALSE","Фото","","Фото","TRUE","照片","","照片","FALSE","Photo","","Photo","FALSE","Foto","Foto","Foto","TRUE","Picha","Picha","Picha","TRUE","ፎቶ","ፎቶ","ፎቶ","TRUE","tấm ảnh","","tấm ảnh","FALSE","ภาพถ่าย","","ภาพถ่าย","FALSE","រូបថត","","រូបថត","FALSE","Photo","","Photo","FALSE","photo","Foto","Foto","TRUE","Larawan","","Larawan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Select Semantic Domains","","","entry","select_semantic_domains","entry.select_semantic_domains","Seleccione dominios semánticos","Seleccionar los dominios semánticos","Seleccionar los dominios semánticos","TRUE","Select domínios semânticos","Selecione Domínios Semânticos","Selecione Domínios Semânticos","TRUE","Sélectionnez sémantique Domaines","Sélectionner les domaines sémantiques","Sélectionner les domaines sémantiques","TRUE","תחומים בחר סמנטי","בחירת שדות סמנטיים","בחירת שדות סמנטיים","TRUE","اختر الدلالية المجالات","اختاروا مجالات علم المعاني","اختاروا مجالات علم المعاني","FALSE","चुनें सिमेंटिक डोमेन","अर्थ-संबंधी ज्ञानक्षेत्र चुनें","अर्थ-संबंधी ज्ञानक्षेत्र चुनें","TRUE","নির্বাচন শব্দার্থিক ডোমেন","","নির্বাচন শব্দার্থিক ডোমেন","FALSE","ଚୟନ ଅର୍ଥଗତ ଡୋମେନ","","ଚୟନ ଅର୍ଥଗତ ଡୋମେନ","FALSE","","FALSE","Выберите Семантический Домены","Выберите семантическое поле","Выберите семантическое поле","TRUE","选择语义域","","选择语义域","FALSE","Zabi Rara Domains","","Zabi Rara Domains","FALSE","Pilih Semantic Domain","Pilih Rana Semantis","Pilih Rana Semantis","TRUE","Chagua kisemantiki Domains","Chagua Nyanja za Kisemantiki","Chagua Nyanja za Kisemantiki","TRUE","ይምረጡ የፍቺ ጎራዎች","","ይምረጡ የፍቺ ጎራዎች","FALSE","Chọn Semantic Domains","","Chọn Semantic Domains","FALSE","เลือกความหมายของโดเมน","","เลือกความหมายของโดเมน","FALSE","ជ្រើសដែនស៊ីមែន","","ជ្រើសដែនស៊ីមែន","FALSE","ເລືອກ Semantic Domains","","ເລືອກ Semantic Domains","FALSE","Pilih Semantik Domain","Pilih Domain-domain Semantik","Pilih Domain-domain Semantik","TRUE","Pumili ng semantiko na mga domain","","Pumili ng semantiko na mga domain","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Semantic Domain","","","entry","sdn","entry.sdn","semántica de dominio","Dominios semántico","Dominios semántico","TRUE","Semantic Domínio","Domínios Semânticos","Domínios Semânticos","TRUE","domaine sémantique","Domaine sémantique","Domaine sémantique","TRUE","דומיין סמנטי","שדה סמנטי","שדה סמנטי","TRUE","المجال الدلالي","النطاق الدلالي","النطاق الدلالي","FALSE","सिमेंटिक डोमेन","अर्थ-संबंधी ज्ञानक्षेत्र","अर्थ-संबंधी ज्ञानक्षेत्र","TRUE","শব্দার্থিক ডোমেন","","শব্দার্থিক ডোমেন","FALSE","ଅର୍ଥଗତ ଡୋମେନ୍","","ଅର୍ଥଗତ ଡୋମେନ୍","FALSE","","FALSE","Семантический домена","Семантическое поле","Семантическое поле","TRUE","语义域","","语义域","FALSE","Rara Domain","","Rara Domain","FALSE","semantik Domain","Rana Semantis","Rana Semantis","TRUE","semantic Domain","Nyanja ya Semantiki","Nyanja ya Semantiki","TRUE","የፍቺ ጎራ","","የፍቺ ጎራ","FALSE","Semantic miền","","Semantic miền","FALSE","ความหมายของโดเมน","","ความหมายของโดเมน","FALSE","ដែន semantic","","ដែន semantic","FALSE","semantic Domain","","semantic Domain","FALSE","semantik Domain","Domain Semantik","Domain Semantik","TRUE","Semantiko domain","","Semantiko domain","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Part of Speech","","","entry","ps","entry.ps","Parte del discurso","Partes de discurso","Partes de discurso","TRUE","Parte do discurso","Parte da Fala","Parte da Fala","TRUE","Partie du discours","La nature des mots","La nature des mots","TRUE","חלק דיבור","","חלק דיבור","TRUE","جزء من الكلام","نوع الكلمة ","نوع الكلمة ","FALSE","शब्द भेद","शब्द-भेद","शब्द-भेद","TRUE","বাক্যের অংশ","","বাক্যের অংশ","FALSE","ବକ୍ତବ୍ୟ ଅଂଶ","","ବକ୍ତବ୍ୟ ଅଂଶ","FALSE","","FALSE","Часть речи","","Часть речи","TRUE","词类","","词类","FALSE","Sashe na daga Jawabin","","Sashe na daga Jawabin","FALSE","Bagian dari pidato","Kelas Kata","Kelas Kata","TRUE","Sehemu ya Hotuba","Aina za Maneno","Aina za Maneno","TRUE","የንግግር አካል","የን ግ ግር ክፍል","የን ግ ግር ክፍል","TRUE","Phần của bài phát biểu","","Phần của bài phát biểu","FALSE","ส่วนหนึ่งของคำพูด","","ส่วนหนึ่งของคำพูด","FALSE","ជាផ្នែកមួយនៃការនិយាយ","","ជាផ្នែកមួយនៃការនិយាយ","FALSE","ສ່ວນຫນຶ່ງຂອງການປາກເວົ້າ","","ສ່ວນຫນຶ່ງຂອງການປາກເວົ້າ","FALSE","Sebahagian dari ucapan","Golongan Kata","Golongan Kata","TRUE","Bahagi ng Pananalita","","Bahagi ng Pananalita","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Phonetic","","","entry","ph","entry.ph","Fonético","Fonético","Fonético","TRUE","Fonético","Fonética ","Fonética ","TRUE","Phonétique","Phonétique","Phonétique","TRUE","פוֹנֵטִי","הגייה (פוֹנֵטִי)","הגייה (פוֹנֵטִי)","TRUE","دراسات لغويه","علم الأصوات ","علم الأصوات ","FALSE","ध्वन्यात्मक","ध्वनि-संबंधी","ध्वनि-संबंधी","TRUE","শব্দতত্ত্ব-সংক্রান্ত","","শব্দতত্ত্ব-সংক্রান্ত","FALSE","ଫୋନେଟିକ୍","","ଫୋନେଟିକ୍","FALSE","","FALSE","фонетический","Фонетический","Фонетический","TRUE","语音","","语音","FALSE","karin lafazi","","karin lafazi","FALSE","Fonetis","Fonetis","Fonetis","TRUE","fonetiki","Fonetiki","Fonetiki","TRUE","ፎነቲክ","","ፎነቲክ","FALSE","ngữ âm","","ngữ âm","FALSE","เกี่ยวกับสัทศาสตร์","","เกี่ยวกับสัทศาสตร์","FALSE","សូរសព្ទ","","សូរសព្ទ","FALSE","ການອອກສຽງ","","ການອອກສຽງ","FALSE","fonetik","Fonetik","Fonetik","TRUE","Phonetic.","","Phonetic.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dialect","","","entry","di","entry.di","Dialecto","Dialecto","Dialecto","TRUE","Dialeto","Dialecto","Dialecto","TRUE","Dialecte","Dialecte","Dialecte","TRUE","נִיב","ניב","ניב","TRUE","لهجة","لهجة","لهجة","FALSE","बोली","बोली","बोली","TRUE","উপভাষা","","উপভাষা","FALSE","ଆଞ୍ଚଳିକ ଭାଷା","","ଆଞ୍ଚଳିକ ଭାଷା","FALSE","","FALSE","говор","Диалект","Диалект","TRUE","方言","","方言","FALSE","yare","","yare","FALSE","Dialek","Dialek","Dialek","TRUE","lahaja","Lahaja","Lahaja","TRUE","የቋንቋ ዲቃላ","","የቋንቋ ዲቃላ","FALSE","thổ ngữ","","thổ ngữ","FALSE","ภาษาถิ่น","","ภาษาถิ่น","FALSE","ភាសា","","ភាសា","FALSE","ພາສາ","","ພາສາ","FALSE","dialek","Dialek","Dialek","TRUE","Dialect.","","Dialect.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Interlinearization","","","entry","in","entry.in","interlinearización","Interlinealización","Interlinealización","TRUE","Interlinearization","Interlinearização","Interlinearização","TRUE","Interlinearization","Interlinéarisation","Interlinéarisation","TRUE","Interlinearization","","Interlinearization","FALSE","Interlinearization","","Interlinearization","FALSE","Interlinearization","शाब्दिक अनुवाद","शाब्दिक अनुवाद","TRUE","Interlinearization","","Interlinearization","FALSE","Interlinearization","","Interlinearization","FALSE","","FALSE","Interlinearization","Линейная разметка","Линейная разметка","TRUE","Interlinearization","","Interlinearization","FALSE","Interlinearization","","Interlinearization","FALSE","Interlinearization","Interlinearisasi","Interlinearisasi","TRUE","Interlinearization","Uchanganuzi wa maneno","Uchanganuzi wa maneno","TRUE","Interlinearization","","Interlinearization","FALSE","Interlinearization","","Interlinearization","FALSE","Interlinearization","","Interlinearization","FALSE","Interlinear","","Interlinear","FALSE","Interlinear","","Interlinear","FALSE","Interlinearization","Interlinearization","Interlinearization","TRUE","Interlinearization.","","Interlinearization.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Notes","","","entry","nt","entry.nt","notas","Notas","Notas","TRUE","Notas","Notas","Notas","TRUE","Remarques","Notes","Notes","TRUE","הערות","","הערות","TRUE","ملاحظات","الملاحظات","الملاحظات","FALSE","टिप्पणियाँ","टिप्पणीयां","टिप्पणीयां","TRUE","মন্তব্য","","মন্তব্য","FALSE","ଟିପ୍ପଣୀ","","ଟିପ୍ପଣୀ","FALSE","","FALSE","Примечания","","Примечания","TRUE","笔记","","笔记","FALSE","Notes","","Notes","FALSE","Catatan","Catatan","Catatan","TRUE","Notes","Nukuu","Nukuu","TRUE","ማስታወሻዎች","ማስታወሻዎች","ማስታወሻዎች","TRUE","Ghi chú","","Ghi chú","FALSE","หมายเหตุ","","หมายเหตุ","FALSE","ភក្ដិកំណត់ត្រាកំណត់","","ភក្ដិកំណត់ត្រាកំណត់","FALSE","ຫມາຍເຫດ","","ຫມາຍເຫດ","FALSE","Nota","Nota","Nota","TRUE","Mga Tala","","Mga Tala","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Upload Photo","","","entry","upload_photo","entry.upload_photo","Subir foto","Subir foto","Subir foto","TRUE","Enviar Foto","Anexar Foto","Anexar Foto","TRUE","Envoyer la photo","Télécharger une photo","Télécharger une photo","TRUE","העלה תמונה","העלאת תמונה","העלאת תמונה","TRUE","حمل الصورة","إرفاق/ رفع صورة","إرفاق/ رفع صورة","FALSE","फोटो अपलोड करें","छायाचित्र डालें","छायाचित्र डालें","TRUE","ছবি আপলোড","","ছবি আপলোড","FALSE","ଅପଲୋଡ୍ ଫଟୋ","","ଅପଲୋଡ୍ ଫଟୋ","FALSE","","FALSE","Загрузить фото","","Загрузить фото","TRUE","上传照片","","上传照片","FALSE","Upload Photo","","Upload Photo","FALSE","Mengunggah foto","Mengunggah foto","Mengunggah foto","TRUE","Pakia Picha","Pakia Picha","Pakia Picha","TRUE","ፎቶ ይስቀሉ","","ፎቶ ይስቀሉ","FALSE","Tải ảnh lên","","Tải ảnh lên","FALSE","อัปโหลดภาพถ่าย","","อัปโหลดภาพถ่าย","FALSE","ផ្ទុកឡើងរូបថត","","ផ្ទុកឡើងរូបថត","FALSE","Upload Photo","","Upload Photo","FALSE","Muatnaik gambar","Muat naik Foto","Muat naik Foto","TRUE","Mag-upload ng larawan","","Mag-upload ng larawan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"List","","","entry","list","entry.list","Lista","Lista","Lista","TRUE","Lista","Lista","Lista","TRUE","liste","Liste","Liste","TRUE","רשימה","","רשימה","TRUE","قائمة","قائمة","قائمة","FALSE","सूची","सूची","सूची","TRUE","তালিকা","","তালিকা","FALSE","ତାଲିକା","","ତାଲିକା","FALSE","","FALSE","Список","","Список","TRUE","名单","","名单","FALSE","list","","list","FALSE","Daftar","Daftar","Daftar","TRUE","orodha","Orodha","Orodha","TRUE","ዝርዝር","ዝርዝር","ዝርዝር","TRUE","Danh sách","","Danh sách","FALSE","รายการ","","รายการ","FALSE","បញ្ជី","","បញ្ជី","FALSE","ບັນຊີລາຍຊື່","","ບັນຊີລາຍຊື່","FALSE","senarai","Senarai","Senarai","TRUE","Listahan","","Listahan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Add Entry","","","entry","add_entry","entry.add_entry","Añadir entrada","Añadir una entrada","Añadir una entrada","TRUE","Adicionar entrada","Adicionar Entrada","Adicionar Entrada","TRUE","Ajouter entrée","Ajouter une entrée","Ajouter une entrée","TRUE","הוסף ערך","הוספת ערך","הוספת ערך","TRUE","إضافة إدخال","إضافة مدخلات ","إضافة مدخلات ","FALSE","प्रविष्टि जोड़ें","प्रविष्टि जोड़ें","प्रविष्टि जोड़ें","TRUE","এণ্ট্রি যোগ করুন","","এণ্ট্রি যোগ করুন","FALSE","ପ୍ରବିଷ୍ଟ ଯୋଡନ୍ତୁ","","ପ୍ରବିଷ୍ଟ ଯୋଡନ୍ତୁ","FALSE","","FALSE","Добавить запись","Добавить словарную статью","Добавить словарную статью","TRUE","添加条目","","添加条目","FALSE","Add Entry","","Add Entry","FALSE","Add Entry","Tambahkan Entri","Tambahkan Entri","TRUE","Kuongeza Entry","Ongeza ingizo","Ongeza ingizo","TRUE","Entry አክል","","Entry አክል","FALSE","Add Entry","","Add Entry","FALSE","เพิ่มรายการ","","เพิ่มรายการ","FALSE","បន្ថែមធាតុ","","បន្ថែមធាតុ","FALSE","ຕື່ມການອອກສຽງ","","ຕື່ມການອອກສຽງ","FALSE","menambah Kemasukan","Tambah Entri","Tambah Entri","TRUE","Magdagdag ng entry.","","Magdagdag ng entry.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Search Entries","","","entry","search_entries","entry.search_entries","Buscar entradas","Búsqueda","Búsqueda","TRUE","pesquisa entradas","Pesquisar Entradas","Pesquisar Entradas","TRUE","Recherche entrées","Rechercher les entrées","Rechercher les entrées","TRUE","ערכי החיפוש","חיפוש ערכים","חיפוש ערכים","TRUE","بحث مقالات","مدخلات البحث","مدخلات البحث","FALSE","खोजें प्रविष्टियां","प्रविष्टियां खोजें","प्रविष्टियां खोजें","TRUE","অনুসন্ধান এন্ট্রি","","অনুসন্ধান এন্ট্রি","FALSE","ସନ୍ଧାନ ଭରଣଗୁଡ଼ିକୁ","","ସନ୍ଧାନ ଭରଣଗୁଡ଼ିକୁ","FALSE","","FALSE","Поиск записей","Поиск словарных статей","Поиск словарных статей","TRUE","搜索条目","","搜索条目","FALSE","search Entries","","search Entries","FALSE","Cari Entries","Temukan Entri","Temukan Entri","TRUE","Search Maingizo","Tafuta Ingizo","Tafuta Ingizo","TRUE","ፈልግ ግቤቶችን","","ፈልግ ግቤቶችን","FALSE","Tìm kiếm Entries","","Tìm kiếm Entries","FALSE","ค้นหารายการ","","ค้นหารายการ","FALSE","ស្វែងរកធាតុ","","ស្វែងរកធាតុ","FALSE","ຄົ້ນຫາການອອກສຽງ","","ຄົ້ນຫາການອອກສຽງ","FALSE","carian Entries","Cari Entri","Cari Entri","TRUE","Mga entry sa paghahanap","","Mga entry sa paghahanap","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Show Less","","","entry","show_less","entry.show_less","Muestra menos","Mostrar menos","Mostrar menos","TRUE","Mostre menos","Exibir Menos","Exibir Menos","TRUE","Montrer moins","Montrer moins","Montrer moins","TRUE","הראי פחות","פחות","פחות","TRUE","عرض أقل","عرض أقل","عرض أقل","FALSE","कम दिखाएं","कम देखें","कम देखें","TRUE","প্রদর্শন কম","","প্রদর্শন কম","FALSE","ଦେଖାନ୍ତୁ କମ୍","","ଦେଖାନ୍ତୁ କମ୍","FALSE","","FALSE","Показывай меньше","Показать меньше","Показать меньше","TRUE","显示较少","","显示较少","FALSE","Nuna Kadan","","Nuna Kadan","FALSE","Tampilkan Kurang","Tampilkan Lebih Sedikit","Tampilkan Lebih Sedikit","TRUE","Onyesha chache","Onyesha Chache","Onyesha Chache","TRUE","ያነሰ አሳይ","","ያነሰ አሳይ","FALSE","Hiện ít hơn","","Hiện ít hơn","FALSE","แสดงน้อยลง","","แสดงน้อยลง","FALSE","បង្ហាញតិច","","បង្ហាញតិច","FALSE","ສະແດງ Less","","ສະແດງ Less","FALSE","persembahan Kurang","Lihat Lebih Sedikit","Lihat Lebih Sedikit","TRUE","Magpakita nang mas kaunti","","Magpakita nang mas kaunti","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Show More","","","entry","show_more","entry.show_more","Mostrar más","Mostrar más","Mostrar más","TRUE","Mostre mais","Exibir Mais","Exibir Mais","TRUE","Montre plus","Montrer plus","Montrer plus","TRUE","להראות יותר","עוד","עוד","TRUE","أظهر المزيد","عرض المزيد","عرض المزيد","FALSE","और दिखाओ","अधिक देखें","अधिक देखें","TRUE","আরো দেখুন","","আরো দেখুন","FALSE","ଅଧିକ ପ୍ରଦର୍ଶନ","","ଅଧିକ ପ୍ରଦର୍ଶନ","FALSE","","FALSE","Показать больше","","Показать больше","TRUE","展示更多","","展示更多","FALSE","nuna More","","nuna More","FALSE","Menampilkan lebih banyak","Tampilkan Lebih Banyak","Tampilkan Lebih Banyak","TRUE","Onyesha Zaidi","Onyesha Zaidi","Onyesha Zaidi","TRUE","ተጨማሪ አሳይ","","ተጨማሪ አሳይ","FALSE","Cho xem nhiều hơn","","Cho xem nhiều hơn","FALSE","แสดงมากขึ้น","","แสดงมากขึ้น","FALSE","បង្ហាញច្រើនទៀត","","បង្ហាញច្រើនទៀត","FALSE","ສະແດງເພີ່ມເຕີມ","","ສະແດງເພີ່ມເຕີມ","FALSE","Tunjukkan Lagi","Lihat Lebih Banyak","Lihat Lebih Banyak","TRUE","Ipakita ang higit pa","","Ipakita ang higit pa","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"View Entries","","","entry","view_entries","entry.view_entries","Ver las entradas","Ver las entradas","Ver las entradas","TRUE","Ver entradas","Ver Entradas","Ver Entradas","TRUE","Voir les billets","Voir les données","Voir les données","TRUE","הצג רשומות","צפייה בערכים","צפייה בערכים","TRUE","مشاهدة مقالات","مشاهدة المدخلات","مشاهدة المدخلات","FALSE","एंट्री देखें","प्रविष्टियां देखें","प्रविष्टियां देखें","TRUE","দেখুন এন্ট্রি","","দেখুন এন্ট্রি","FALSE","ଦର୍ଶନ ଭରଣଗୁଡ଼ିକୁ","","ଦର୍ଶନ ଭରଣଗୁଡ଼ିକୁ","FALSE","","FALSE","Просмотр записи","Просмотр словарных статей","Просмотр словарных статей","TRUE","查看条目","","查看条目","FALSE","view Entries","","view Entries","FALSE","Lihat Entri","Lihat Entri","Lihat Entri","TRUE","Ona Maelezo","Tazama Maingizo","Tazama Maingizo","TRUE","ይመልከቱ ግቤቶችን","","ይመልከቱ ግቤቶችን","FALSE","Xem Entries","","Xem Entries","FALSE","ดูรายการ","","ดูรายการ","FALSE","មើលធាតុ","","មើលធាតុ","FALSE","ເບິ່ງການອອກສຽງ","","ເບິ່ງການອອກສຽງ","FALSE","Lihat Entries","Lihat Entri","Lihat Entri","TRUE","Tingnan ang mga entry.","","Tingnan ang mga entry.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Has","","","entry","has_exists","entry.has_exists","Tiene","Hay","Hay","TRUE","Tem","Tem","Tem","TRUE","A","Il y a:","Il y a:","TRUE","יש ל","יש","יש","TRUE","لديها","لديه/لديها","لديه/لديها","FALSE","है","है","है","TRUE","আছে","","আছে","FALSE","ଅଛି","","ଅଛି","FALSE","","FALSE","имеет","","имеет","TRUE","具有","","具有","FALSE","yana","","yana","FALSE","memiliki","Memiliki","Memiliki","TRUE","ina","ana","ana","TRUE","አለው","","አለው","FALSE","có","","có","FALSE","มี","","มี","FALSE","មាន","","មាន","FALSE","ມີ","","ມີ","FALSE","mempunyai","Mempunyai","Mempunyai","TRUE","May","","May","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"No","","","entry","does_not_exist","entry.does_not_exist","No","No hay","No hay","TRUE","Não","Não","Não","TRUE","Non","Pas de:","Pas de:","TRUE","לא","אין","אין","TRUE","لا","لا ","لا ","FALSE","नहीं","नहीं","नहीं","TRUE","না","","না","FALSE","ନୁେହଁ","","ନୁେହଁ","FALSE","","FALSE","нет","","нет","TRUE","没有","","没有","FALSE","babu","","babu","FALSE","Tidak","Tidak","Tidak","TRUE","Hapana","Hapana","Hapana","TRUE","አይ","","አይ","FALSE","Không","","Không","FALSE","ไม่","","ไม่","FALSE","គ្មាន","","គ្មាន","FALSE","No","","No","FALSE","Tiada","Tidak","Tidak","TRUE","Hindi","","Hindi","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"We're sorry, we've run into an error.","","","error","run_into_error","error.run_into_error","Lo sentimos, nos hemos encontrado con un error.","Lo sentimos, hay un error.","Lo sentimos, hay un error.","TRUE","Desculpe-nos, nós funcionamos em um erro.","Lamentamos, tivemos um erro.","Lamentamos, tivemos um erro.","TRUE","Nous sommes désolés, nous avons rencontré une erreur.","Nous sommes désolés, il y a une erreur.","Nous sommes désolés, il y a une erreur.","TRUE","אירע נתקלנו שגיאה.","אנחנו מתנצלים, אירעה שגיאה.","אנחנו מתנצלים, אירעה שגיאה.","TRUE","عذرا، لقد واجهت خطأ.","نعتذر، لقد واجهنا خطأً","نعتذر، لقد واجهنا خطأً","FALSE","हमें खेद है, हमें एक त्रुटि आई है।","हमें खेद है, हमारे सामने एक त्रुटि आई है","हमें खेद है, हमारे सामने एक त्रुटि आई है","TRUE","আমরা দুঃখিত, আমরা একটি ত্রুটি ঝামেলায় পড়েছি।","","আমরা দুঃখিত, আমরা একটি ত্রুটি ঝামেলায় পড়েছি।","FALSE","ଆମେ ଦୁଃଖିତ, ଆମେ ଏକ ତ୍ରୁଟି ଭିତରକୁ ଚାଳନ କରିଥିବା କରୁଛନ୍ତି।","","ଆମେ ଦୁଃଖିତ, ଆମେ ଏକ ତ୍ରୁଟି ଭିତରକୁ ଚାଳନ କରିଥିବା କରୁଛନ୍ତି।","FALSE","","FALSE","Мы жаль, что мы столкнулись с ошибкой.","Извините, произошла ошибка.","Извините, произошла ошибка.","TRUE","很抱歉,我们遇到了一个错误。","","很抱歉,我们遇到了一个错误。","FALSE","Muna yi hakuri, mun gudu a cikin wani kuskure.","","Muna yi hakuri, mun gudu a cikin wani kuskure.","FALSE","Maaf, kami mengalami kesalahan.","Maaf, sistem kami mengalami masalah","Maaf, sistem kami mengalami masalah","TRUE","Samahani, tumekuwa kukimbia katika kosa.","Samahani, tumepata hitilafu.","Samahani, tumepata hitilafu.","TRUE","እናዝናለን, አንድ ስህተት ወደ አልቆብናል ነን.","","እናዝናለን, አንድ ስህተት ወደ አልቆብናል ነን.","FALSE","Chúng tôi xin lỗi, chúng tôi đã chạy vào một lỗi.","","Chúng tôi xin lỗi, chúng tôi đã chạy vào một lỗi.","FALSE","ขออภัยเราเคยทำงานเป็นข้อผิดพลาด","","ขออภัยเราเคยทำงานเป็นข้อผิดพลาด","FALSE","យើងកំពុងសោកស្តាយដែលយើងបានរត់ចូលទៅក្នុងកំហុស។","","យើងកំពុងសោកស្តាយដែលយើងបានរត់ចូលទៅក្នុងកំហុស។","FALSE","ພວກເຮົາກໍາລັງຂໍອະໄພ, ພວກເຮົາໄດ້ດໍາເນີນການເຂົ້າໄປໃນຄວາມຜິດພາດ.","","ພວກເຮົາກໍາລັງຂໍອະໄພ, ພວກເຮົາໄດ້ດໍາເນີນການເຂົ້າໄປໃນຄວາມຜິດພາດ.","FALSE","Kami memohon maaf, kami telah menghadapi kesilapan.","Maaf, kami telah menghadapi masalah.","Maaf, kami telah menghadapi masalah.","TRUE","Ikinalulungkot namin, tumakbo kami sa isang error.","","Ikinalulungkot namin, tumakbo kami sa isang error.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"The error has been recorded and we will be looking into it.","","","error","error_recorded","error.error_recorded","El error ha sido registrado y que se busca en ella.","El error ha sido registrado y lo investigaremos.","El error ha sido registrado y lo investigaremos.","TRUE","O erro foi gravada e vamos estar a olhar para ele.","O erro foi registado e vamos analisá-lo.","O erro foi registado e vamos analisá-lo.","TRUE","L'erreur a été enregistrée et nous allons examiner en elle.","L'erreur a été enregistrée et nous allons mener une enquête.","L'erreur a été enregistrée et nous allons mener une enquête.","TRUE","השגיאה נרשמה ואנחנו נחפש לתוכו.","השגיאה נשלחה אלינו והאירוע ייבדק.","השגיאה נשלחה אלינו והאירוע ייבדק.","TRUE","تم تسجيل الخطأ ونحن سوف ننظر في الامر.","سُجّل الخطأ وسننظر فيه ","سُجّل الخطأ وسننظر فيه ","FALSE","त्रुटि दर्ज किया गया है और हम इस पर ध्यान देने की जाएगी।","त्रुटि दर्ज कर लिया गया है और हम इसकी जाँच करेंगे","त्रुटि दर्ज कर लिया गया है और हम इसकी जाँच करेंगे","TRUE","ত্রুটি রেকর্ড করা হয়েছে এবং আমরা তা মধ্যে খুঁজছেন করা হবে না।","","ত্রুটি রেকর্ড করা হয়েছে এবং আমরা তা মধ্যে খুঁজছেন করা হবে না।","FALSE","ତୃଟି ରେକର୍ଡ ଏବଂ କରାଯାଇଛି ଆମେ ଏହା ଭିତରକୁ ଖୋଜୁଥିବା ହେବ।","","ତୃଟି ରେକର୍ଡ ଏବଂ କରାଯାଇଛି ଆମେ ଏହା ଭିତରକୁ ଖୋଜୁଥିବା ହେବ।","FALSE","","FALSE","Ошибка была записана, и мы будем смотреть в него.","Ошибка записана, мы будем работать над ней.","Ошибка записана, мы будем работать над ней.","TRUE","该系统已记录错误,我们将寻找到它。","","该系统已记录错误,我们将寻找到它。","FALSE","The kuskure da aka rubuta da kuma za mu iya neman shiga da shi.","","The kuskure da aka rubuta da kuma za mu iya neman shiga da shi.","FALSE","Kesalahan telah dicatat dan kami akan melihat ke dalamnya.","Kesalahan telah dicatat dan kami akan memeriksanya","Kesalahan telah dicatat dan kami akan memeriksanya","TRUE","Hitilafu hiyo imerekodiwa na sisi kuwa na kuangalia ndani yake.","Hitilafu imerekodiwa na tutaishughulikia.","Hitilafu imerekodiwa na tutaishughulikia.","TRUE","የ ስህተት ተመዝግቧል ተደርጓል እና እኛ ወደ በመመልከት ይሆናል.","","የ ስህተት ተመዝግቧል ተደርጓል እና እኛ ወደ በመመልከት ይሆናል.","FALSE","Các lỗi đã được ghi nhận và chúng tôi sẽ nhìn vào nó.","","Các lỗi đã được ghi nhận và chúng tôi sẽ nhìn vào nó.","FALSE","ข้อผิดพลาดที่ได้รับการบันทึกและเราจะหามัน","","ข้อผิดพลาดที่ได้รับการบันทึกและเราจะหามัน","FALSE","កំហុសនេះត្រូវបានកត់ត្រាទុកហើយយើងនឹងត្រូវបានសម្លឹងមើលចូលទៅក្នុងវា។","","កំហុសនេះត្រូវបានកត់ត្រាទុកហើយយើងនឹងត្រូវបានសម្លឹងមើលចូលទៅក្នុងវា។","FALSE","ຄວາມຜິດພາດໄດ້ຮັບການບັນທຶກໄວ້ແລະພວກເຮົາຈະໄດ້ຮັບການຊອກຫາເຂົ້າໄປໃນມັນ.","","ຄວາມຜິດພາດໄດ້ຮັບການບັນທຶກໄວ້ແລະພວກເຮົາຈະໄດ້ຮັບການຊອກຫາເຂົ້າໄປໃນມັນ.","FALSE","Kesilapan itu telah direkodkan dan kita akan mencari ke dalamnya.","Masalahnya telah dicatat dan kami akan memeriksanya.","Masalahnya telah dicatat dan kami akan memeriksanya.","TRUE","Ang error ay naitala at kami ay naghahanap sa ito.","","Ang error ay naitala at kami ay naghahanap sa ito.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Can you please send us a short note to explain what happened?","","","error","please_explain","error.please_explain","¿Puede por favor enviar una breve nota para explicar lo que pasó?","Por favor, envíenos un mensaje corto explicando lo que pasó.","Por favor, envíenos un mensaje corto explicando lo que pasó.","TRUE","Você pode por favor envie-nos uma nota curta para explicar o que aconteceu?","Pode, por favor, enviar-nos uma nota a explicar o que aconteceu?","Pode, por favor, enviar-nos uma nota a explicar o que aconteceu?","TRUE","Pouvez-vous s'il vous plaît envoyez-nous une courte note pour expliquer ce qui est arrivé?","Veuillez nous envoyer un court message expliquant ce qui s'est passé.","Veuillez nous envoyer un court message expliquant ce qui s'est passé.","TRUE","אתה יכול בבקשה לשלוח לנו הודעה קצרה כדי להסביר מה קרה?","האם תוכלו בבקשה לתאר בקצרה את פרטי האירוע?","האם תוכלו בבקשה לתאר בקצרה את פרטי האירוע?","TRUE","يمكنك الرجاء ارسال لنا مذكرة قصيرة لشرح ما حدث؟","هل من الممكن أن تُرسلوا لنا ملاحظةً صغيرةً موضّحين فيها ما حدث؟","هل من الممكن أن تُرسلوا لنا ملاحظةً صغيرةً موضّحين فيها ما حدث؟","FALSE","क्या आप हमें समझाने के लिए कि क्या हुआ एक छोटे नोट भेज सकते हैं?","क्या आप हमें त्रुटि को समझाने के लिए छोटा सन्देश भेज सकते हैं?","क्या आप हमें त्रुटि को समझाने के लिए छोटा सन्देश भेज सकते हैं?","TRUE","আপনি অনুগ্রহ করে আমাদের ব্যাখ্যা করার কি ঘটেছে একটি ছোট নোট পাঠাতে পারি?","","আপনি অনুগ্রহ করে আমাদের ব্যাখ্যা করার কি ঘটেছে একটি ছোট নোট পাঠাতে পারি?","FALSE","ଦୟାକରି ଆପଣ ଆମ୍ଭକୁ ଘଟିଥିଲା ​​ତାହା ବୁଝାଇ ପାଇଁ ଅଳ୍ପ ନୋଟ୍ ପ୍ରେରଣ କରିପାରିବେ?","","ଦୟାକରି ଆପଣ ଆମ୍ଭକୁ ଘଟିଥିଲା ​​ତାହା ବୁଝାଇ ପାଇଁ ଅଳ୍ପ ନୋଟ୍ ପ୍ରେରଣ କରିପାରିବେ?","FALSE","","FALSE","Можете ли вы выслать нам короткую записку, чтобы объяснить, что случилось?","Не могли бы Вы вкратце написать нам, что случилось?","Не могли бы Вы вкратце написать нам, что случилось?","TRUE","能否请您给我们一个简短的说明,以解释发生了什么?","","能否请您给我们一个简短的说明,以解释发生了什么?","FALSE","Za ka iya don Allah ka aika mana da wani short note don bayyana abin faru?","","Za ka iya don Allah ka aika mana da wani short note don bayyana abin faru?","FALSE","Dapatkah Anda kirimkan catatan singkat untuk menjelaskan apa yang terjadi?","Dapatkah anda kirimkan catatan singkat yang menjelaskan apa yang terjadi ","Dapatkah anda kirimkan catatan singkat yang menjelaskan apa yang terjadi ","TRUE","Je, unaweza tafadhali tutumie kumbuka short kuelezea nini kilitokea?","Samahani, unaweza kututumia maelezo mafupi kuhusu kilichotokea","Samahani, unaweza kututumia maelezo mafupi kuhusu kilichotokea","TRUE","ከእኛ ምን እንደተከሰተ ለማብራራት አንድ አጭር ማስታወሻ መላክ እባክዎ ትችላለህ?","","ከእኛ ምን እንደተከሰተ ለማብራራት አንድ አጭር ማስታወሻ መላክ እባክዎ ትችላለህ?","FALSE","bạn có thể vui lòng gửi cho chúng tôi một ghi chú ngắn để giải thích những gì đã xảy ra?","","bạn có thể vui lòng gửi cho chúng tôi một ghi chú ngắn để giải thích những gì đã xảy ra?","FALSE","คุณช่วยกรุณาส่งโน้ตสั้น ๆ เพื่ออธิบายสิ่งที่เกิดขึ้น?","","คุณช่วยกรุณาส่งโน้ตสั้น ๆ เพื่ออธิบายสิ่งที่เกิดขึ้น?","FALSE","តើអ្នកអាចសូមផ្ញើមកយើងចំណាំខ្លីដើម្បីពន្យល់ពីអ្វីដែលបានកើតឡើង?","","តើអ្នកអាចសូមផ្ញើមកយើងចំណាំខ្លីដើម្បីពន្យល់ពីអ្វីដែលបានកើតឡើង?","FALSE","ທ່ານສາມາດກະລຸນາສົ່ງໃຫ້ພວກເຮົາບັນທຶກສັ້ນເພື່ອອະທິບາຍສິ່ງທີ່ເກີດຂຶ້ນ?","","ທ່ານສາມາດກະລຸນາສົ່ງໃຫ້ພວກເຮົາບັນທຶກສັ້ນເພື່ອອະທິບາຍສິ່ງທີ່ເກີດຂຶ້ນ?","FALSE","Bolehkah anda sila hantar nota ringkas untuk menjelaskan apa yang berlaku?","Bolehkah anda menjelaskan kepada kami secara ringkas tentang kejadian yang telah berlaku?","Bolehkah anda menjelaskan kepada kami secara ringkas tentang kejadian yang telah berlaku?","TRUE","Maaari mo bang ipadala sa amin ang isang maikling tala upang ipaliwanag kung ano ang nangyari?","","Maaari mo bang ipadala sa amin ang isang maikling tala upang ipaliwanag kung ano ang nangyari?","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Select Language","","","header","select_language","header.select_language","Seleccione el idioma","Seleccione un idioma","Seleccione un idioma","TRUE","Selecione o idioma","Seleccione a Língua","Seleccione a Língua","TRUE","Choisir la langue","Sélectionnez une langue","Sélectionnez une langue","TRUE","בחר שפה","בחירת שפה","בחירת שפה","TRUE","اختار اللغة","اختاروا اللغة","اختاروا اللغة","FALSE","भाषा का चयन करें","भाषा का चयन करें","भाषा का चयन करें","TRUE","ভাষা নির্বাচন কর","","ভাষা নির্বাচন কর","FALSE","ଚୟନ ଭାଷା","","ଚୟନ ଭାଷା","FALSE","","FALSE","Выбрать язык","","Выбрать язык","TRUE","选择语言","","选择语言","FALSE","Zabi Harshe","","Zabi Harshe","FALSE","Pilih bahasa","Pilih Bahasa","Pilih Bahasa","TRUE","Chagua lugha","Chagua Lugha","Chagua Lugha","TRUE","ቋንቋ ይምረጡ","ቋንቋ ይምረጡ","ቋንቋ ይምረጡ","TRUE","Chọn ngôn ngữ","","Chọn ngôn ngữ","FALSE","เลือกภาษา","","เลือกภาษา","FALSE","ជ្រើសរើស​ភាសា","","ជ្រើសរើស​ភាសា","FALSE","ເລືອກພາສາ","","ເລືອກພາສາ","FALSE","Pilih Bahasa","Pilih Bahasa","Pilih Bahasa","TRUE","Piliin ang wika","","Piliin ang wika","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Please create an account","","","header","please_create_account","header.please_create_account","Por favor, crear una cuenta","Por favor, crear una cuenta","Por favor, crear una cuenta","TRUE","Por favor, crie uma conta","Crie uma conta, por favor","Crie uma conta, por favor","TRUE","S'il vous plaît créer un compte","Veuillez créer un compte","Veuillez créer un compte","TRUE","אנא צור חשבון","אנא צרו חשבון","אנא צרו חשבון","TRUE","الرجاء إنشاء حساب","يُرجى إنشاء حساب","يُرجى إنشاء حساب","FALSE","कृपया खाता खोलें","कृपया खाता खोलें","कृपया खाता खोलें","TRUE","একটি অ্যাকাউন্ট তৈরি করুন","","একটি অ্যাকাউন্ট তৈরি করুন","FALSE","ଏକ ଖାତା ସୃଷ୍ଟି ଦୟାକରି","","ଏକ ଖାତା ସୃଷ୍ଟି ଦୟାକରି","FALSE","","FALSE","Пожалуйста, создайте учетную запись","","Пожалуйста, создайте учетную запись","TRUE","请创建一个帐户","","请创建一个帐户","FALSE","Don Allah ƙirƙirar wani asusun","","Don Allah ƙirƙirar wani asusun","FALSE","Silakan membuat akun","Silakan buat sebuah akun baru","Silakan buat sebuah akun baru","TRUE","Tafadhali fungua akaunti","Tafadhali fungua akaunti","Tafadhali fungua akaunti","TRUE","አንድ መለያ ይፍጠሩ","","አንድ መለያ ይፍጠሩ","FALSE","Hãy tạo một tài khoản","","Hãy tạo một tài khoản","FALSE","โปรดสร้างบัญชี","","โปรดสร้างบัญชี","FALSE","សូមបង្កើតគណនីថ្មីមួយ","","សូមបង្កើតគណនីថ្មីមួយ","FALSE","ກະລຸນາສ້າງບັນຊີ","","ກະລຸນາສ້າງບັນຊີ","FALSE","Sila buat akaun","Sila cipta akaun","Sila cipta akaun","TRUE","Mangyaring lumikha ng isang account.","","Mangyaring lumikha ng isang account.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Contact Us","","","header","contact_us","header.contact_us","Contáctenos","Contáctenos","Contáctenos","TRUE","Contate-Nos","Contacte-nos","Contacte-nos","TRUE","Nous contacter","Contactez-nous","Contactez-nous","TRUE","צור קשר","ליצור קשר","ליצור קשר","TRUE","اتصل بنا","تواصلوا معنا ","تواصلوا معنا ","FALSE","संपर्क करें","संपर्क करें","संपर्क करें","TRUE","যোগাযোগ করুন","","যোগাযোগ করুন","FALSE","ଆମକୁ ଯୋଗାଯୋଗ","","ଆମକୁ ଯୋଗାଯୋଗ","FALSE","","FALSE","Свяжитесь с нами","","Свяжитесь с нами","TRUE","联系我们","","联系我们","FALSE","Contact Us","","Contact Us","FALSE","Hubungi kami","Hubungi Kami","Hubungi Kami","TRUE","Wasiliana nasi","Wasiliana Nasi","Wasiliana Nasi","TRUE","አግኙን","አግኙን","አግኙን","TRUE","Liên hệ chúng tôi","","Liên hệ chúng tôi","FALSE","ติดต่อเรา","","ติดต่อเรา","FALSE","ទាក់ទង​មក​ពួក​យើង","","ទាក់ទង​មក​ពួក​យើង","FALSE","ຕິດ​ຕໍ່​ພວກ​ເຮົາ","","ຕິດ​ຕໍ່​ພວກ​ເຮົາ","FALSE","Hubungi Kami","Hubungi Kami","Hubungi Kami","TRUE","Makipag-ugnayan sa amin","","Makipag-ugnayan sa amin","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Language","","","header","language","header.language","Idioma","Idioma","Idioma","TRUE","Língua","Língua","Língua","TRUE","Langue","Langue","Langue","TRUE","שפה","","שפה","TRUE","لغة","اللغة","اللغة","FALSE","भाषा: हिन्दी","भाषा","भाषा","TRUE","ভাষা","","ভাষা","FALSE","ଭାଷା","","ଭାଷା","FALSE","","FALSE","язык","","язык","TRUE","语言","","语言","FALSE","harshe","","harshe","FALSE","Bahasa","Bahasa","Bahasa","TRUE","lugha","Lugha","Lugha","TRUE","ቋንቋ","ቋንቋ","ቋንቋ","TRUE","ngôn ngữ","","ngôn ngữ","FALSE","ภาษา","","ภาษา","FALSE","ភាសា","","ភាសា","FALSE","ພາສາ","","ພາສາ","FALSE","bahasa","Bahasa","Bahasa","TRUE","Wika","","Wika","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sign In","","","header","login","header.login","Registrarse","Iniciar sesión","Iniciar sesión","TRUE","Assinar em","Iniciar a sessão","Iniciar a sessão","TRUE","Se connecter","Se connecter","Se connecter","TRUE","להתחבר","","להתחבר","TRUE","تسجيل الدخول","تسجيل الدخول","تسجيل الدخول","FALSE","साइन इन करें","साइन इन करें","साइन इन करें","TRUE","সাইন ইন করুন","","সাইন ইন করুন","FALSE","ଚୁକ୍ତି କରିବା","","ଚୁକ୍ତି କରିବା","FALSE","","FALSE","Войти в систему","","Войти в систему","TRUE","登入","","登入","FALSE","shiga","","shiga","FALSE","Masuk","Masuk","Masuk","TRUE","Weka sahihi","Ingia","Ingia","TRUE","ስግን እን","","ስግን እን","FALSE","Đăng nhập","","Đăng nhập","FALSE","เข้าสู่ระบบ","","เข้าสู่ระบบ","FALSE","ចូល","","ចូល","FALSE","ເຂົ້າ​ສູ່​ລະ​ບົບ","","ເຂົ້າ​ສູ່​ລະ​ບົບ","FALSE","log Masuk","Log Masuk","Log Masuk","TRUE","Mag-sign In","","Mag-sign In","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Donate","","","header","donate","header.donate","Donar","Donar","Donar","TRUE","Doar","Doar","Doar","TRUE","Faire un don","Faire un don","Faire un don","TRUE","לִתְרוֹם","לתרום","לתרום","TRUE","تبرع","تبّرعوا","تبّرعوا","FALSE","दान करना","दान करें","दान करें","TRUE","দান করা","","দান করা","FALSE","ଦାନକରିବା","","ଦାନକରିବା","FALSE","","FALSE","жертвовать","Поддержать","Поддержать","TRUE","捐","","捐","FALSE","Ba da kyauta","","Ba da kyauta","FALSE","Menyumbangkan","Berdonasi","Berdonasi","TRUE","Changia","Toa Msaada","Toa Msaada","TRUE","ለገሠ","","ለገሠ","FALSE","tặng","","tặng","FALSE","บริจาค","","บริจาค","FALSE","បរិច្ចាក","","បរិច្ចាក","FALSE","ບໍ​ລິ​ຈາກ","","ບໍ​ລິ​ຈາກ","FALSE","menderma","Sokong Kami","Sokong Kami","TRUE","Donate.","","Donate.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"About","","","header","about","header.about","Acerca de","Acerca de","Acerca de","TRUE","Sobre","Sobre","Sobre","TRUE","À propos","À propos","À propos","TRUE","על אודות","אודות","אודות","TRUE","حول","حول/ عن ","حول/ عن ","FALSE","के बारे में","के बारे में","के बारे में","TRUE","সম্পর্কিত","","সম্পর্কিত","FALSE","ବିଷୟେର","","ବିଷୟେର","FALSE","","FALSE","Около","О","О","TRUE","关于","","关于","FALSE","game da","","game da","FALSE","Tentang","Tentang","Tentang","TRUE","kuhusu","Kuhusu ","Kuhusu ","TRUE","ስለ","ስለ","ስለ","TRUE","Trong khoảng","","Trong khoảng","FALSE","เกี่ยวกับ","","เกี่ยวกับ","FALSE","អំពី","","អំពី","FALSE","ກ່ຽວກັບ","","ກ່ຽວກັບ","FALSE","mengenai","Perihal","Perihal","TRUE","Tungkol sa","","Tungkol sa","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"List of Dictionaries","","","home","list_of_dictionaries","home.list_of_dictionaries","Lista de Diccionarios","Lista de diccionarios","Lista de diccionarios","TRUE","Lista de Dicionários","Lista de Dicionários","Lista de Dicionários","TRUE","Liste des dictionnaires","Liste de dictionnaires","Liste de dictionnaires","TRUE","רשימת מילונים","","רשימת מילונים","TRUE","قائمة قواميس","قائمة القواميس","قائمة القواميس","FALSE","शब्दकोश की सूची","शब्दकोश की सूची","शब्दकोश की सूची","TRUE","অভিধান তালিকা","","অভিধান তালিকা","FALSE","ଅବିଧାନଗୁଡ଼ିକ ର ତାଲିକା","","ଅବିଧାନଗୁଡ଼ିକ ର ତାଲିକା","FALSE","","FALSE","Список словарей","","Список словарей","TRUE","字典的名单","","字典的名单","FALSE","List of Dictionaries","","List of Dictionaries","FALSE","Daftar Kamus","Daftar Kamus","Daftar Kamus","TRUE","Orodha ya Kamusi","Orodha ya Kamusi","Orodha ya Kamusi","TRUE","መዝገበ ዝርዝር","","መዝገበ ዝርዝር","FALSE","Danh sách Từ điển","","Danh sách Từ điển","FALSE","รายการของพจนานุกรม","","รายการของพจนานุกรม","FALSE","បញ្ជីនៃវចនានុក្រម","","បញ្ជីនៃវចនានុក្រម","FALSE","ບັນຊີລາຍຊື່ຂອງ Dictionaries","","ບັນຊີລາຍຊື່ຂອງ Dictionaries","FALSE","Senarai Dictionaries","Senarai Kamus","Senarai Kamus","TRUE","Listahan ng mga dictionaries","","Listahan ng mga dictionaries","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Find a Dictionary","","","home","find_dictionary","home.find_dictionary","Encontrar un diccionario","Buscar un diccionario","Buscar un diccionario","TRUE","Encontre um dicionário","Encontre um Dicionário","Encontre um Dicionário","TRUE","Trouver un dictionnaire","Recherche","Recherche","TRUE","מצא מילון","חיפוש מילון","חיפוש מילון","TRUE","العثور على قاموس","البحث عن قاموس","البحث عن قاموس","FALSE","एक शब्दकोश का पता लगाएं","शब्दकोश खोजें","शब्दकोश खोजें","TRUE","একটি অভিধান খুঁজুন","","একটি অভিধান খুঁজুন","FALSE","ଏକ Dictionary ଖୋଜନ୍ତୁ","","ଏକ Dictionary ଖୋଜନ୍ତୁ","FALSE","","FALSE","Найти словарь","","Найти словарь","TRUE","查找字典","","查找字典","FALSE","Nemo a Dictionary","","Nemo a Dictionary","FALSE","Cari Kamus","Cari sebuah Kamus","Cari sebuah Kamus","TRUE","Kupata Dictionary","Tafuta Kamusi","Tafuta Kamusi","TRUE","አንድ መዝገበ አግኝ","","አንድ መዝገበ አግኝ","FALSE","Tìm một từ điển","","Tìm một từ điển","FALSE","ค้นหาพจนานุกรม","","ค้นหาพจนานุกรม","FALSE","ស្វែងរកវចនានុក្រមមួយ","","ស្វែងរកវចនានុក្រមមួយ","FALSE","ຊອກຫາ Dictionary","","ຊອກຫາ Dictionary","FALSE","Cari Kamus","Cari Kamus","Cari Kamus","TRUE","Maghanap ng isang diksyunaryo","","Maghanap ng isang diksyunaryo","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"No Results","","","home","no_results","home.no_results","No hay resultados","No hay resultados","No hay resultados","TRUE","sem resultados","Sem Resultados","Sem Resultados","TRUE","Aucun résultat","Aucun résultat","Aucun résultat","TRUE","אין תוצאות","","אין תוצאות","TRUE","لا نتائج","لا توجد نتائج","لا توجد نتائج","FALSE","कोई परिणाम नहीं","कोई परिणाम नहीं","कोई परिणाम नहीं","TRUE","কোন ফলাফল নেই","","কোন ফলাফল নেই","FALSE","କୌଣସି ଫଳାଫଳଗୁଡିକ","","କୌଣସି ଫଳାଫଳଗୁଡିକ","FALSE","","FALSE","Нет результатов","","Нет результатов","TRUE","没结果","","没结果","FALSE","babu Results","","babu Results","FALSE","Tidak ada hasil","Tidak Ada Hasil","Tidak Ada Hasil","TRUE","hakuna Matokeo","Hakuna Matokeo","Hakuna Matokeo","TRUE","ምንም ውጤቶች","ምንም ውጤቶች","ምንም ውጤቶች","TRUE","Ko có kết quả","","Ko có kết quả","FALSE","ไม่มีผลลัพธ์","","ไม่มีผลลัพธ์","FALSE","គ្មាន​លទ្ធផល","","គ្មាន​លទ្ធផល","FALSE","ບໍ່ມີຜົນ","","ບໍ່ມີຜົນ","FALSE","Tiada keputusan","Tiada Hasil","Tiada Hasil","TRUE","Walang resulta","","Walang resulta","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Show all my dictionaries","","","home","show_all_my_dictionaries","home.show_all_my_dictionaries","Mostrar todos mis diccionarios","Ver todos mis diccionarios","Ver todos mis diccionarios","TRUE","Mostrar todos os meus dicionários","Mostrar todos os meus Dicionários","Mostrar todos os meus Dicionários","TRUE","Voir tous mes dictionnaires","Voir tou mes dictionnaires","Voir tou mes dictionnaires","TRUE","הצג את כל המילונים שלי","לצפייה במילונים שלי","לצפייה במילונים שלי","TRUE","عرض كل القواميس بلدي","عرض كافة قواميسي ","عرض كافة قواميسي ","FALSE","मेरे सभी शब्दकोशों दिखाएँ","मेरे सभी शब्दकोश दिखायें","मेरे सभी शब्दकोश दिखायें","TRUE","আমার সমস্ত অভিধান দেখান","","আমার সমস্ত অভিধান দেখান","FALSE","ମୋର ସମସ୍ତ ଅବିଧାନଗୁଡ଼ିକ ଦେଖାନ୍ତୁ","","ମୋର ସମସ୍ତ ଅବିଧାନଗୁଡ଼ିକ ଦେଖାନ୍ତୁ","FALSE","","FALSE","Показать все мои словари","","Показать все мои словари","TRUE","显示所有我的字典","","显示所有我的字典","FALSE","Nuna duk ta kamus","","Nuna duk ta kamus","FALSE","Tampilkan semua kamus saya","Tunjukkan semua kamus saya","Tunjukkan semua kamus saya","TRUE","Onyesha kamusi wangu wote","Onyesha kamusi zangu zote","Onyesha kamusi zangu zote","TRUE","ሁሉንም የእኔን መዝገበ አሳይ","","ሁሉንም የእኔን መዝገበ አሳይ","FALSE","Hiển thị tất cả các từ điển của tôi","","Hiển thị tất cả các từ điển của tôi","FALSE","แสดงพจนานุกรมของฉันทั้งหมด","","แสดงพจนานุกรมของฉันทั้งหมด","FALSE","បង្ហាញរបស់ខ្ញុំទាំងអស់វចនានុក្រម","","បង្ហាញរបស់ខ្ញុំទាំងអស់វចនានុក្រម","FALSE","ສະແດງໃຫ້ເຫັນຈະນານຸກົມຂອງຂ້າພະເຈົ້າທັງຫມົດ","","ສະແດງໃຫ້ເຫັນຈະນານຸກົມຂອງຂ້າພະເຈົ້າທັງຫມົດ","FALSE","Tunjukkan semua kamus saya","Tunjukkan semua kamus saya","Tunjukkan semua kamus saya","TRUE","Ipakita ang lahat ng aking mga dictionaries","","Ipakita ang lahat ng aking mga dictionaries","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Open Dictionary","","","home","open_dictionary","home.open_dictionary","diccionario","Abrir el diccionario","Abrir el diccionario","TRUE","Abrir Dicionário","Abrir Dicionário","Abrir Dicionário","TRUE","Ouvrir un dictionnaire","Ouvrir le dictionnaire","Ouvrir le dictionnaire","TRUE","מילון פתוח","","מילון פתוח","TRUE","توسيع قاموس","القاموس المفتوح","القاموس المفتوح","FALSE","ओपन शब्दकोश","शब्दकोश खोलें","शब्दकोश खोलें","TRUE","ওপেন অভিধান","","ওপেন অভিধান","FALSE","ଖୋଲନ୍ତୁ Dictionary","","ଖୋଲନ୍ତୁ Dictionary","FALSE","","FALSE","Открыть словарь","","Открыть словарь","TRUE","打开字典","","打开字典","FALSE","Open Dictionary","","Open Dictionary","FALSE","terbuka Kamus","Buka Kamus","Buka Kamus","TRUE","Open Dictionary","Fungua Kamusi","Fungua Kamusi","TRUE","ክፈት መዝገበ","","ክፈት መዝገበ","FALSE","mở từ điển","","mở từ điển","FALSE","เปิดพจนานุกรม","","เปิดพจนานุกรม","FALSE","វចនានុក្រមបើកទូលាយ","","វចនានុក្រមបើកទូលាយ","FALSE","ເປີດ Dictionary","","ເປີດ Dictionary","FALSE","Kamus Terbuka","Buka Kamus","Buka Kamus","TRUE","Buksan ang diksyunaryo","","Buksan ang diksyunaryo","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"My Dictionaries","","","home","my_dictionaries","home.my_dictionaries","Mis Diccionarios","Mis diccionarios","Mis diccionarios","TRUE","meus Dicionários","Meu Dicionário","Meu Dicionário","TRUE","Mes dictionnaires","Mes dictionnaires","Mes dictionnaires","TRUE","המילונים שלי","","המילונים שלי","TRUE","بلدي قواميس","قواميسي ","قواميسي ","FALSE","मेरे शब्दकोश","मेरे शब्दकोश","मेरे शब्दकोश","TRUE","আমার অভিধানের","","আমার অভিধানের","FALSE","ମୋ ଅବିଧାନଗୁଡ଼ିକ","","ମୋ ଅବିଧାନଗୁଡ଼ିକ","FALSE","","FALSE","Мои словари","","Мои словари","TRUE","我的字典","","我的字典","FALSE","My Dictionaries","","My Dictionaries","FALSE","Kamus saya","Kamus Saya","Kamus Saya","TRUE","Kamusi yangu","Kamusi Zangu","Kamusi Zangu","TRUE","የእኔ መዝገበ","","የእኔ መዝገበ","FALSE","Từ điển của tôi","","Từ điển của tôi","FALSE","พจนานุกรมของฉัน","","พจนานุกรมของฉัน","FALSE","វចនានុក្រមរបស់ខ្ញុំ","","វចនានុក្រមរបស់ខ្ញុំ","FALSE","Dictionaries ຂອງຂ້າພະເຈົ້າ","","Dictionaries ຂອງຂ້າພະເຈົ້າ","FALSE","Dictionaries saya","Kamus Saya","Kamus Saya","TRUE","Aking mga dictionaries","","Aking mga dictionaries","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Public Dictionaries","","","home","public_dictionaries","home.public_dictionaries","Diccionarios públicas","Diccionarios públicos","Diccionarios públicos","TRUE","Dicionários públicas","Dicionário Público","Dicionário Público","TRUE","Dictionnaires publics","Dictionnaires publics","Dictionnaires publics","TRUE","מילונים ציבוריים","","מילונים ציבוריים","TRUE","قواميس العامة","القواميس العامة ","القواميس العامة ","FALSE","लोक शब्दकोश","सार्वजनिक शब्दकोश","सार्वजनिक शब्दकोश","TRUE","জন অভিধানের","","জন অভিধানের","FALSE","ଜନସାଧାରଣ ଅବିଧାନଗୁଡ଼ିକ","","ଜନସାଧାରଣ ଅବିଧାନଗୁଡ଼ିକ","FALSE","","FALSE","Общественные словари","Словари открытого доступа","Словари открытого доступа","TRUE","公共字典","","公共字典","FALSE","jama'a Dictionaries","","jama'a Dictionaries","FALSE","Kamus Umum","Kamus Umum","Kamus Umum","TRUE","Kamusi ya Umma","Kamusi za Umma","Kamusi za Umma","TRUE","የህዝብ መዝገበ","","የህዝብ መዝገበ","FALSE","Từ điển công","","Từ điển công","FALSE","พจนานุกรมสาธารณะ","","พจนานุกรมสาธารณะ","FALSE","វចនានុក្រមសាធារណៈ","","វចនានុក្រមសាធារណៈ","FALSE","Dictionaries ສາທາລະນະ","","Dictionaries ສາທາລະນະ","FALSE","Dictionaries awam","Kamus Umum","Kamus Umum","TRUE","Mga pampublikong dictionaries","","Mga pampublikong dictionaries","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Read More","","","home","read_more","home.read_more","Lee mas","Leer más","Leer más","TRUE","consulte Mais informação","Ler Mais ","Ler Mais ","TRUE","Lire la suite","Lire la suite","Lire la suite","TRUE","קרא עוד","לקריאה נוספת","לקריאה נוספת","TRUE","قراءة المزيد","قراءة المزيد","قراءة المزيد","FALSE","अधिक पढ़ें","अधिक पढ़ें","अधिक पढ़ें","TRUE","আরো পড়ুন","","আরো পড়ুন","FALSE","ଅଧିକ ପଢ","","ଅଧିକ ପଢ","FALSE","","FALSE","Прочитайте больше","Читать больше","Читать больше","TRUE","阅读更多","","阅读更多","FALSE","Kara karantawa","","Kara karantawa","FALSE","Baca lebih banyak","Baca Lebih Lengkap","Baca Lebih Lengkap","TRUE","Soma zaidi","Soma Zaidi","Soma Zaidi","TRUE","ተጨማሪ ያንብቡ","ተጨማሪ ያንብቡ","ተጨማሪ ያንብቡ","TRUE","Đọc thêm","","Đọc thêm","FALSE","อ่านเพิ่มเติม","","อ่านเพิ่มเติม","FALSE","អាន​បន្ថែម","","អាន​បន្ថែម","FALSE","ອ່ານ​ຕື່ມ","","ອ່ານ​ຕື່ມ","FALSE","Read More","Baca Lebih Lanjut","Baca Lebih Lanjut","TRUE","Magbasa pa","","Magbasa pa","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Settings","","","misc","settings","misc.settings","ajustes","Configuración","Configuración","TRUE","Definições","Definições ","Definições ","TRUE","Réglages","Configuration","Configuration","TRUE","הגדרות","הגדרות","הגדרות","TRUE","إعدادات","الإعدادات","الإعدادات","FALSE","समायोजन","सेटिंग्स","सेटिंग्स","TRUE","সেটিংস","","সেটিংস","FALSE","ସେଟିଂସମୂହ","","ସେଟିଂସମୂହ","FALSE","","FALSE","настройки","","настройки","TRUE","设置","","设置","FALSE","Saituna","","Saituna","FALSE","pengaturan","Pengaturan","Pengaturan","TRUE","mipangilio","Mipangilio ","Mipangilio ","TRUE","ቅንብሮች","","ቅንብሮች","FALSE","Cài đặt","","Cài đặt","FALSE","การตั้งค่า","","การตั้งค่า","FALSE","ការកំណត់","","ការកំណត់","FALSE","ການຕັ້ງຄ່າ","","ການຕັ້ງຄ່າ","FALSE","tetapan","Tetapan","Tetapan","TRUE","Mga setting","","Mga setting","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Remove","","","misc","remove","misc.remove","Eliminar","Eliminar","Eliminar","TRUE","Remover","Remover","Remover","TRUE","Retirer","Supprimer","Supprimer","TRUE","לְהַסִיר","הסרה","הסרה","TRUE","إزالة","إزالة ","إزالة ","FALSE","हटाना","हटायें","हटायें","TRUE","অপসারণ","","অপসারণ","FALSE","ଅପସାରଣବଟନ୍","","ଅପସାରଣବଟନ୍","FALSE","","FALSE","удалять","Удалить","Удалить","TRUE","去掉","","去掉","FALSE","Cire","","Cire","FALSE","Menghapus","Menghapus","Menghapus","TRUE","Ondoa","Ondoa","Ondoa","TRUE","አስወግድ","አስወግድ","አስወግድ","TRUE","Tẩy","","Tẩy","FALSE","ลบ","","ลบ","FALSE","យក","","យក","FALSE","ດຶງອອກຈາກ","","ດຶງອອກຈາກ","FALSE","Remove","Hapus","Hapus","TRUE","Alisin","","Alisin","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Error","","","misc","error","misc.error","Error","Error","Error","TRUE","Erro","Erro","Erro","TRUE","Erreur","Erreur","Erreur","TRUE","שְׁגִיאָה","שגיאה","שגיאה","TRUE","خطأ","خطأ","خطأ","FALSE","त्रुटि","त्रुटि","त्रुटि","TRUE","ত্রুটি","","ত্রুটি","FALSE","ତୃଟି","","ତୃଟି","FALSE","","FALSE","ошибка","","ошибка","TRUE","错误","","错误","FALSE","Kuskuren","","Kuskuren","FALSE","Kesalahan","Kesalahan","Kesalahan","TRUE","Kosa","Hitilafu","Hitilafu","TRUE","ስሕተት","ስሕተት","ስሕተት","TRUE","lỗi","","lỗi","FALSE","ความผิดพลาด","","ความผิดพลาด","FALSE","កំហុសក្នុងការ","","កំហុសក្នុងការ","FALSE","Error","","Error","FALSE","ralat","Masalah","Masalah","TRUE","ERROR.","","ERROR.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Back","","","misc","back","misc.back","atrás","Volver","Volver","TRUE","Costas","Atrás","Atrás","TRUE","Retour","Retour","Retour","TRUE","חזור","חזרה","חזרה","TRUE","عودة","الرجوع","الرجوع","FALSE","वापस","वापस जायें","वापस जायें","TRUE","পেছনে","","পেছনে","FALSE","ପିଠି","","ପିଠି","FALSE","","FALSE","назад","","назад","TRUE","背部","","背部","FALSE","baya","","baya","FALSE","Kembali","Kembali","Kembali","TRUE","Back","Nyuma","Nyuma","TRUE","ወደኋላ","ወደኋላ","ወደኋላ","TRUE","Trở lại","","Trở lại","FALSE","กลับ","","กลับ","FALSE","ត្រលប់ក្រោយ","","ត្រលប់ក្រោយ","FALSE","ກັບຄືນໄປບ່ອນ","","ກັບຄືນໄປບ່ອນ","FALSE","Kembali","Kembali","Kembali","TRUE","Pabalik","","Pabalik","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Share","","","misc","share","misc.share","Compartir","Compartir","Compartir","TRUE","Compartilhar","Partilhar","Partilhar","TRUE","Partager","Partager","Partager","TRUE","לַחֲלוֹק","שיתוף","שיתוף","TRUE","شارك","مشاركة","مشاركة","FALSE","शेयर","शेयर करें","शेयर करें","TRUE","ভাগ","","ভাগ","FALSE","ଭାଗ","","ଭାଗ","FALSE","","FALSE","доля","Поделиться","Поделиться","TRUE","分享","","分享","FALSE","Share","","Share","FALSE","Bagikan","Membagikan","Membagikan","TRUE","Kushiriki","Sambaza","Sambaza","TRUE","አጋራ","","አጋራ","FALSE","Chia sẻ","","Chia sẻ","FALSE","หุ้น","","หุ้น","FALSE","ចែករំលែក","","ចែករំលែក","FALSE","Share","","Share","FALSE","Kongsi","Kongsi","Kongsi","TRUE","Ibahagi","","Ibahagi","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Add","","","misc","add","misc.add","Añadir","Agregar","Agregar","TRUE","Adicionar","Adicionar","Adicionar","TRUE","Ajouter","Ajouter","Ajouter","TRUE","לְהוֹסִיף","הוספה","הוספה","TRUE","إضافة","إضافة","إضافة","FALSE","जोड़ना","जोड़ें","जोड़ें","TRUE","যোগ","","যোগ","FALSE","େଯାଗକରିବା","","େଯାଗକରିବା","FALSE","","FALSE","Добавить","","Добавить","TRUE","加","","加","FALSE","Add","","Add","FALSE","Menambahkan","Menambahkan","Menambahkan","TRUE","Kuongeza","Ongeza","Ongeza","TRUE","ያክሉ","ያክሉ","ያክሉ","TRUE","Thêm vào","","Thêm vào","FALSE","เพิ่ม","","เพิ่ม","FALSE","បន្ថែម","","បន្ថែម","FALSE","ຕື່ມ","","ຕື່ມ","FALSE","Tambah","Tambah","Tambah","TRUE","Idagdag","","Idagdag","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Living Dictionary","","","misc","LD_singular","misc.LD_singular","Diccionario de estar","Diccionario Vivo","Diccionario Vivo","TRUE","viver Dicionário","Dicionário Vivo","Dicionário Vivo","TRUE","Dictionnaire vivant","Dictionnaire vivant","Dictionnaire vivant","TRUE","מילון חי","מילון חי","מילון חי","TRUE","قاموس المعيشة","القاموس الحي","القاموس الحي","FALSE","लिविंग शब्दकोश","लिविंग शब्दकोश","लिविंग शब्दकोश","TRUE","লিভিং অভিধান","","লিভিং অভিধান","FALSE","ଜୀବନ୍ତ Dictionary","","ଜୀବନ୍ତ Dictionary","FALSE","","FALSE","Живой словарь","Живой Словарь","Живой Словарь","TRUE","生活词典","","生活词典","FALSE","Living Dictionary","","Living Dictionary","FALSE","hidup Kamus","Kamus Hidup","Kamus Hidup","TRUE","Living kamusi","Kamusi Hai ","Kamusi Hai ","TRUE","ሕያው መዝገበ","","ሕያው መዝገበ","FALSE","Living điển","","Living điển","FALSE","พจนานุกรมนั่งเล่น","","พจนานุกรมนั่งเล่น","FALSE","វចនានុក្រមការរស់នៅ","","វចនានុក្រមការរស់នៅ","FALSE","Dictionary ດໍາລົງຊີວິດ","","Dictionary ດໍາລົງຊີວິດ","FALSE","Kamus hidup","Kamus Hidup","Kamus Hidup","TRUE","Buhay dictionary","","Buhay dictionary","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Living Dictionaries","header menu","","misc","LD","misc.LD","Diccionarios que viven","Diccionarios Vivos","Diccionarios Vivos","TRUE","Dicionários vivos","Dicionários Vivos","Dicionários Vivos","TRUE","Dictionnaires vivants","Les dictionnaires vivants","Les dictionnaires vivants","TRUE","מילוני חיים","מילונים חיים","מילונים חיים","TRUE","قواميس العيش","القاموس الحي","القاموس الحي","FALSE","लिविंग शब्दकोश","सभी लिविंग शब्दकोश","सभी लिविंग शब्दकोश","TRUE","বাস অভিধানের","","বাস অভিধানের","FALSE","Living ଅବିଧାନଗୁଡ଼ିକ","","Living ଅବିଧାନଗୁଡ଼ିକ","FALSE","","FALSE","Живые Словари","","Живые Словари","TRUE","活字典","","活字典","FALSE","Rayuwa Dictionaries","","Rayuwa Dictionaries","FALSE","hidup Kamus","Kamus-kamus Hidup","Kamus-kamus Hidup","TRUE","Hai Kamusi","Kamusi Hai","Kamusi Hai","TRUE","መኖር መዝገበ","","መኖር መዝገበ","FALSE","Từ điển sống","","Từ điển sống","FALSE","พจนานุกรมนั่งเล่น","","พจนานุกรมนั่งเล่น","FALSE","វចនានុក្រមដែលកំពុងរស់នៅ","","វចនានុក្រមដែលកំពុងរស់នៅ","FALSE","Dictionaries ດໍາລົງຊີວິດ","","Dictionaries ດໍາລົງຊີວິດ","FALSE","Kamus hidup","Kamus-kamus Hidup","Kamus-kamus Hidup","TRUE","Buhay na mga dictionaries.","","Buhay na mga dictionaries.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Cancel","","","misc","cancel","misc.cancel","Cancelar","Cancelar","Cancelar","TRUE","Cancelar","Cancelar","Cancelar","TRUE","Annuler","Annuler","Annuler","TRUE","לְבַטֵל","ביטול","ביטול","TRUE","إلغاء","إلغاء","إلغاء","FALSE","रद्द करना","रद्द करें","रद्द करें","TRUE","বাতিল","","বাতিল","FALSE","ରଦ୍ଦ କରିବା","","ରଦ୍ଦ କରିବା","FALSE","","FALSE","Отмена","","Отмена","TRUE","取消","","取消","FALSE","soke","","soke","FALSE","Membatalkan","Membatalkan","Membatalkan","TRUE","kufuta","Ghairi","Ghairi","TRUE","ሰርዝ","ሰርዝ","ሰርዝ","TRUE","hủy bỏ","","hủy bỏ","FALSE","ยกเลิก","","ยกเลิก","FALSE","បោះបង់","","បោះបង់","FALSE","ຍົກເລີກການ","","ຍົກເລີກການ","FALSE","Batal","Batal","Batal","TRUE","Kanselahin","","Kanselahin","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Save","","","misc","save","misc.save","Salvar","Guardar","Guardar","TRUE","Salve ","Guardar","Guardar","TRUE","sauvegarder","Sauvegarder","Sauvegarder","TRUE","להציל","שמירה","שמירה","TRUE","حفظ","حفظ","حفظ","FALSE","सहेजें","संरक्षित करें","संरक्षित करें","TRUE","সংরক্ষণ","","সংরক্ষণ","FALSE","ସଞ୍ଚୟ","","ସଞ୍ଚୟ","FALSE","","FALSE","Сохранить","","Сохранить","TRUE","救","","救","FALSE","Ajiye","","Ajiye","FALSE","Menyimpan","Menyimpan","Menyimpan","TRUE","Save","Hifadhi","Hifadhi","TRUE","አስቀምጥ","","አስቀምጥ","FALSE","Tiết kiệm","","Tiết kiệm","FALSE","บันทึก","","บันทึก","FALSE","រក្សាទុក","","រក្សាទុក","FALSE","ບັນທຶກ","","ບັນທຶກ","FALSE","jimat","Simpan","Simpan","TRUE","Iligtas","","Iligtas","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Download","","","misc","download","misc.download","Descargar","Descargar","Descargar","TRUE","Baixar","Baixar","Baixar","TRUE","Télécharger","Télécharger","Télécharger","TRUE","הורד","הורדה","הורדה","TRUE","تحميل","تحميل","تحميل","FALSE","डाउनलोड","डाउनलोड करें","डाउनलोड करें","TRUE","ডাউনলোড","","ডাউনলোড","FALSE","ଡାଉନ୍ଲୋଡ୍","","ଡାଉନ୍ଲୋଡ୍","FALSE","","FALSE","Скачать","Загрузить","Загрузить","TRUE","下载","","下载","FALSE","download","","download","FALSE","Download","Mengunduh","Mengunduh","FALSE","download","Pakua","Pakua","TRUE","አውርድ","","አውርድ","FALSE","Tải xuống","","Tải xuống","FALSE","ดาวน์โหลด","","ดาวน์โหลด","FALSE","ទាញយក","","ទាញយក","FALSE","ດາວນ໌ໂຫລດ","","ດາວນ໌ໂຫລດ","FALSE","muat turun","Muat turun","Muat turun","TRUE","I-download","","I-download","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Delete","","","misc","delete","misc.delete","Eliminar","Eliminar","Eliminar","TRUE","Excluir","Apagar","Apagar","TRUE","Supprimer","Effacer","Effacer","TRUE","לִמְחוֹק","מחיקה","מחיקה","TRUE","حذف","حذف","حذف","FALSE","हटाएं","हटायें","हटायें","TRUE","মুছে ফেলা","","মুছে ফেলা","FALSE","ଲିଭାଇବା","","ଲିଭାଇବା","FALSE","","FALSE","удалять","Удалить","Удалить","TRUE","删除","","删除","FALSE","Delete","","Delete","FALSE","Menghapus","Menghapus","Menghapus","TRUE","Futa","Futa ","Futa ","TRUE","ሰርዝ","","ሰርዝ","FALSE","Xóa bỏ","","Xóa bỏ","FALSE","ลบ","","ลบ","FALSE","លុប","","លុប","FALSE","Delete","","Delete","FALSE","Padam","Padam","Padam","TRUE","Tanggalin.","","Tanggalin.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Close","","","misc","close","misc.close","Cerrar","Cerrar","Cerrar","TRUE","Fechar","Fechar","Fechar","TRUE","proche","Fermer","Fermer","TRUE","סגור","סגירה","סגירה","TRUE","أغلق","إغلاق","إغلاق","FALSE","बंद करे","बंद करें","बंद करें","TRUE","ঘনিষ্ঠ","","ঘনিষ্ঠ","FALSE","ବନ୍ଦ କରିବା","","ବନ୍ଦ କରିବା","FALSE","","FALSE","близко","Закрыть","Закрыть","TRUE","关","","关","FALSE","Close","","Close","FALSE","Menutup","Menutup","Menutup","TRUE","Close","Funga ","Funga ","TRUE","ገጠመ","","ገጠመ","FALSE","Đóng","","Đóng","FALSE","ปิด","","ปิด","FALSE","បិទ","","បិទ","FALSE","ປິດ","","ປິດ","FALSE","Tutup","Tutup","Tutup","TRUE","Malapit","","Malapit","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Loading","","","misc","loading","misc.loading","Cargando","Cargando","Cargando","TRUE","Carregando","Carregar","Carregar","TRUE","Chargement","Chargement en cours","Chargement en cours","TRUE","טעינה","בטעינה","בטעינה","TRUE","جار التحميل","جار التحميل","جار التحميل","FALSE","लोड हो रहा है","लोड हो रहा है","लोड हो रहा है","TRUE","বোঝাই","","বোঝাই","FALSE","ଲୋଡ୍","","ଲୋଡ୍","FALSE","","FALSE","загрузка","","загрузка","TRUE","载入中","","载入中","FALSE","loading","","loading","FALSE","Memuat","Memuat","Memuat","TRUE","Loading","Inafungua","Inafungua","TRUE","በመጫን ላይ","","በመጫን ላይ","FALSE","Đang tải","","Đang tải","FALSE","กำลังโหลด","","กำลังโหลด","FALSE","កំពុងផ្ទុក","","កំពុងផ្ទុក","FALSE","ກໍາລັງໂຫລດ","","ກໍາລັງໂຫລດ","FALSE","Loading","Memuat","Memuat","TRUE","Loading.","","Loading.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Does the speech community allow this language to be online?","","","settings","community_permission","settings.community_permission","¿La comunidad de habla este lenguaje permite a estar online?","¿Permite la comunidad lingüística que este idioma esté en línea?","¿Permite la comunidad lingüística que este idioma esté en línea?","TRUE","Será que a comunidade de fala permitem essa linguagem para ser on-line?","A comunidade falante permite que esta língua esteja on-line?","A comunidade falante permite que esta língua esteja on-line?","TRUE","Est-ce que la communauté de la parole permet cette langue d'être en ligne?","La communauté linguistique permet-elle à cette langue d'être en ligne ?","La communauté linguistique permet-elle à cette langue d'être en ligne ?","TRUE","האם קהילת הדיבור לאפשר את השפה הזו כדי להיות באינטרנט?","האם הקהילה דוברת השפה מאשרת את קיומה באינטרנט (בממשק זה)?","האם הקהילה דוברת השפה מאשרת את קיומה באינטרנט (בממשק זה)?","TRUE","هل يسمح المجتمع خطاب هذه اللغة لتكون على الانترنت؟","هل يسمح المجتمع اللغوي بأن تكون هذه اللغة على الانترنت؟","هل يسمح المجتمع اللغوي بأن تكون هذه اللغة على الانترنت؟","FALSE","भाषण समुदाय इस भाषा ऑनलाइन होने की अनुमति है?","क्या आपका समुदाय इस भाषा को ऑनलाइन होने की अनुमति देता है?","क्या आपका समुदाय इस भाषा को ऑनलाइन होने की अनुमति देता है?","TRUE","বক্তৃতা সম্প্রদায় এই ভাষা অনলাইনে থাকতে করার অনুমতি দেয় না?","","বক্তৃতা সম্প্রদায় এই ভাষা অনলাইনে থাকতে করার অনুমতি দেয় না?","FALSE","ବକ୍ତବ୍ୟ ସମ୍ପ୍ରଦାୟ ଏହି ଭାଷା ଅନଲାଇନ୍ ଅନୁମତି କରେ?","","ବକ୍ତବ୍ୟ ସମ୍ପ୍ରଦାୟ ଏହି ଭାଷା ଅନଲାଇନ୍ ଅନୁମତି କରେ?","FALSE","","FALSE","Допускает ли речь сообщество этого языка, чтобы быть в Интернете?","Допускает ли данное языковое сообщество публикацию своего языка в Интернете?","Допускает ли данное языковое сообщество публикацию своего языка в Интернете?","TRUE","并讲话社会允许这种语言在线?","","并讲话社会允许这种语言在线?","FALSE","Shin magana al'umma damar wannan harshe ya zama online?","","Shin magana al'umma damar wannan harshe ya zama online?","FALSE","Apakah masyarakat penutur memungkinkan bahasa ini untuk online?","Apakah komunitas penutur bahasa mengijinkan bahasa ini online?","Apakah komunitas penutur bahasa mengijinkan bahasa ini online?","TRUE","Je jamii hotuba kuruhusu lugha hii kuwa katika mtandao?","Je, jamii ya wazungumzaji inaruhusu lugha hii kuwekwa mtandaoni?","Je, jamii ya wazungumzaji inaruhusu lugha hii kuwekwa mtandaoni?","TRUE","የንግግር ማህበረሰብ በዚህ ቋንቋ መስመር ላይ መሆን ያስችላቸዋል?","","የንግግር ማህበረሰብ በዚህ ቋንቋ መስመር ላይ መሆን ያስችላቸዋል?","FALSE","Liệu cộng đồng ngôn luận cho phép ngôn ngữ này để được trực tuyến?","","Liệu cộng đồng ngôn luận cho phép ngôn ngữ này để được trực tuyến?","FALSE","ไม่พูดชุมชนช่วยให้ภาษานี้จะออนไลน์ได้หรือไม่","","ไม่พูดชุมชนช่วยให้ภาษานี้จะออนไลน์ได้หรือไม่","FALSE","តើសហគមន៍និយាយនេះអនុញ្ញាតឱ្យភាសានេះឱ្យនៅលើបណ្ដាញ?","","តើសហគមន៍និយាយនេះអនុញ្ញាតឱ្យភាសានេះឱ្យនៅលើបណ្ដាញ?","FALSE","ບໍ່ຊຸມຊົນປາກເວົ້າ, ຂີດອະນຸຍາດໃຫ້ພາສານີ້ຈະອອນໄລນ໌?","","ບໍ່ຊຸມຊົນປາກເວົ້າ, ຂີດອະນຸຍາດໃຫ້ພາສານີ້ຈະອອນໄລນ໌?","FALSE","Adakah masyarakat ucapan membolehkan bahasa ini berada dalam talian?","Adakah masyarakat penutur membenarkan bahasa ini berada dalam talian?","Adakah masyarakat penutur membenarkan bahasa ini berada dalam talian?","TRUE","Pinapayagan ba ng komunidad ng pagsasalita ang wikang ito na maging online?","","Pinapayagan ba ng komunidad ng pagsasalita ang wikang ito na maging online?","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Edit Dictionary Name","","","settings","edit_dict_name","settings.edit_dict_name","Editar Nombre del diccionario","Editar el nombre del diccionario","Editar el nombre del diccionario","TRUE","Editar dicionário Nome","Editar o nome do Dicionário","Editar o nome do Dicionário","TRUE","Modifier le nom du dictionnaire","Modifier le nom du dictionnaire","Modifier le nom du dictionnaire","TRUE","ערוך מילון שם","עריכת שם המילון","עריכת שם המילון","TRUE","تحرير قاموس اسم","تحرير اسم القاموس","تحرير اسم القاموس","FALSE","संपादित शब्दकोश का नाम","शब्दकोश का नाम संपादित करें","शब्दकोश का नाम संपादित करें","TRUE","সম্পাদনা করুন অভিধানের নাম","","সম্পাদনা করুন অভিধানের নাম","FALSE","ସମ୍ପାଦନ Dictionary ନାମ","","ସମ୍ପାଦନ Dictionary ନାମ","FALSE","","FALSE","Редактировать словарь Имя","Редактировать имя Словаря","Редактировать имя Словаря","TRUE","编辑字典名称","","编辑字典名称","FALSE","Shirya Dictionary Name","","Shirya Dictionary Name","FALSE","Mengedit Kamus Nama","Menyunting Nama Kamus","Menyunting Nama Kamus","TRUE","Edit kamusi Jina","Hariri jina la Kamusi","Hariri jina la Kamusi","TRUE","አርትዕ የመዝገበ-ቃላት ስም","","አርትዕ የመዝገበ-ቃላት ስም","FALSE","Chỉnh sửa từ điển Tên","","Chỉnh sửa từ điển Tên","FALSE","แก้ไขพจนานุกรมชื่อ","","แก้ไขพจนานุกรมชื่อ","FALSE","កែសម្រួលឈ្មោះវចនានុក្រម","","កែសម្រួលឈ្មោះវចនានុក្រម","FALSE","ແກ້ໄຂ Dictionary ຊື່","","ແກ້ໄຂ Dictionary ຊື່","FALSE","Edit Nama Kamus","Edit Nama Kamus","Edit Nama Kamus","TRUE","I-edit ang pangalan ng diksyunaryo","","I-edit ang pangalan ng diksyunaryo","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dictionary Name","","","settings","dict_name","settings.dict_name","Nombre del diccionario","El nombre del diccionario","El nombre del diccionario","TRUE","Dicionário Nome","Nome do Dicionário","Nome do Dicionário","TRUE","Dictionnaire Nom","Nom du dictionnaire","Nom du dictionnaire","TRUE","מילון שם","שם המילון","שם המילון","TRUE","قاموس اسم","اسم القاموس","اسم القاموس","FALSE","शब्दकोश का नाम","शब्दकोश का नाम","शब्दकोश का नाम","TRUE","অভিধানের নাম","","অভিধানের নাম","FALSE","ଅଭିଧାନରେ ନାମ","","ଅଭିଧାନରେ ନାମ","FALSE","","FALSE","Словарь Имя","Имя Словаря","Имя Словаря","TRUE","字典名称","","字典名称","FALSE","Dictionary Name","","Dictionary Name","FALSE","Kamus Nama","Nama Kamus","Nama Kamus","TRUE","Dictionary Jina","Jina la Kamusi","Jina la Kamusi","TRUE","የመዝገበ-ቃላት ስም","የመዝገበ-ቃላት ስም","የመዝገበ-ቃላት ስም","TRUE","Tên từ điển","","Tên từ điển","FALSE","นามานุศาสตร์","","นามานุศาสตร์","FALSE","ឈ្មោះវចនានុក្រម","","ឈ្មោះវចនានុក្រម","FALSE","Dictionary ຊື່","","Dictionary ຊື່","FALSE","Nama kamus","Nama Kamus","Nama Kamus","TRUE","Pangalan ng Diksyunaryo","","Pangalan ng Diksyunaryo","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Public means anyone can see your dictionary which requires community consent. Private dictionaries are visible only to you and your collaborators.","","","settings","public_private_meaning","settings.public_private_meaning","medios públicos cualquiera puede ver su diccionario que requiere el consentimiento de la comunidad. diccionarios privados son visibles sólo para usted y sus colaboradores.","""Público"" significa que cualquiera puede ver su diccionario, lo que requiere el consentimiento de la comunidad. Los diccionarios privados son visibles sólo para usted y sus colaboradores.","""Público"" significa que cualquiera puede ver su diccionario, lo que requiere el consentimiento de la comunidad. Los diccionarios privados son visibles sólo para usted y sus colaboradores.","TRUE","meios públicos qualquer um pode ver seu dicionário que requer o consentimento da comunidade. dicionários particulares são visíveis apenas para você e seus colaboradores.","Público significa que qualquer um pode ver o seu Dicionário o qual requer consentimento da comunidade. Os Dicionários Privados são visíveis apenas para si e para os seus colaboradores.","Público significa que qualquer um pode ver o seu Dicionário o qual requer consentimento da comunidade. Os Dicionários Privados são visíveis apenas para si e para os seus colaboradores.","TRUE","des moyens publics tout le monde peut voir votre dictionnaire qui nécessite le consentement de la communauté. dictionnaires privés ne sont visibles que pour vous et vos collaborateurs.","“Public"" signifie que tout le monde peut voir votre dictionnaire, ce qui nécessite le consentement de la communauté. Les dictionnaires privés ne sont visibles que pour vous et vos collaborateurs.","“Public"" signifie que tout le monde peut voir votre dictionnaire, ce qui nécessite le consentement de la communauté. Les dictionnaires privés ne sont visibles que pour vous et vos collaborateurs.","TRUE","אמצעי ציבורי שכל אחד יכול לראות את מילון המחייב הסכמה בקהילה. מילונים פרטיים גלוי רק לך ומשתפי הפעולה שלך.","פרסום המילון באופן ציבורי תלוי בהסכמת הקהילה דוברת השפה. מילונים פרטיים פתוחים אך ורק לך ולמשתפי הפעולה שלך.","פרסום המילון באופן ציבורי תלוי בהסכמת הקהילה דוברת השפה. מילונים פרטיים פתוחים אך ורק לך ולמשתפי הפעולה שלך.","TRUE","الوسائل العامة أي شخص يمكن أن يرى قاموسك الذي يتطلب موافقة المجتمع. قواميس خاصة مرئية لك فقط والمتعاونين الخاص بك.","عام يعني أنه يمكن لأي شخص رؤية القاموس الخاص بك الذي يتطلب موافقة المجتمع. تكون القواميس الخاصة مرئية فقط لك وللمتعاونين معك.","عام يعني أنه يمكن لأي شخص رؤية القاموس الخاص بك الذي يتطلب موافقة المجتمع. تكون القواميس الخاصة مرئية فقط لك وللمتعاونين معك.","FALSE","सार्वजनिक साधन किसी को भी अपने शब्दकोश जो समुदाय सहमति की आवश्यकता देख सकते हैं। निजी शब्दकोशों केवल आपके और आपके सहयोगियों के लिए दिखाई दे रहे हैं।","सार्वजनिक होने का तात्पर्य यह है कि आपका शब्दकोश समुदाय के अनुमति से कोई भी देख सकता है। निजी शब्दकोश केवल आपको और आपके सहयोगियों को दिखाई देंगे।","सार्वजनिक होने का तात्पर्य यह है कि आपका शब्दकोश समुदाय के अनुमति से कोई भी देख सकता है। निजी शब्दकोश केवल आपको और आपके सहयोगियों को दिखाई देंगे।","TRUE","জন উপায়ে যে কেউ আপনার অভিধান যা সম্প্রদায় সম্মতি প্রয়োজন দেখতে পারেন। ব্যক্তিগত অভিধান কেবল আপনাকে এবং আপনার সহযোগীদের কাছে দৃশ্যমান।","","জন উপায়ে যে কেউ আপনার অভিধান যা সম্প্রদায় সম্মতি প্রয়োজন দেখতে পারেন। ব্যক্তিগত অভিধান কেবল আপনাকে এবং আপনার সহযোগীদের কাছে দৃশ্যমান।","FALSE","ଜନସାଧାରଣ ଅର୍ଥ କେହି ସମ୍ପ୍ରଦାୟ ସମ୍ମତି ଆବଶ୍ୟକ ଯାହା ଆପଣଙ୍କର ଅଭିଧାନରେ ଦେଖିପାରିବେ। ବ୍ୟକ୍ତିଗତ ଅବିଧାନଗୁଡ଼ିକ କେବଳ ଆପଣ ଓ ଆପଣଙ୍କର ସହକର୍ମୀ ଦୃଶ୍ୟମାନ ଅଟେ।","","ଜନସାଧାରଣ ଅର୍ଥ କେହି ସମ୍ପ୍ରଦାୟ ସମ୍ମତି ଆବଶ୍ୟକ ଯାହା ଆପଣଙ୍କର ଅଭିଧାନରେ ଦେଖିପାରିବେ। ବ୍ୟକ୍ତିଗତ ଅବିଧାନଗୁଡ଼ିକ କେବଳ ଆପଣ ଓ ଆପଣଙ୍କର ସହକର୍ମୀ ଦୃଶ୍ୟମାନ ଅଟେ।","FALSE","","FALSE","Общественные средства каждый может увидеть ваш словарь, который требует согласия сообщества. Частные словари доступны только для вас и ваших сотрудников.","Открытый доступ означает, что каждый может просматривать Ваш словарь, который требует согласия сообщества. Приватные словари доступны только Вам и Вашим сотрудникам.","Открытый доступ означает, что каждый может просматривать Ваш словарь, который требует согласия сообщества. Приватные словари доступны только Вам и Вашим сотрудникам.","TRUE","公共意味着任何人都可以看到你的字典这需要社会各界的同意。私人字典是只有你和你的合作者可见。","","公共意味着任何人都可以看到你的字典这需要社会各界的同意。私人字典是只有你和你的合作者可见。","FALSE","Jama'a nufin kowa zai iya gani da ƙamus da bukatar al'umma yarda. Private kamus ne bayyane ne kawai zuwa gare ku, kuma ku hadin gwiwar.","","Jama'a nufin kowa zai iya gani da ƙamus da bukatar al'umma yarda. Private kamus ne bayyane ne kawai zuwa gare ku, kuma ku hadin gwiwar.","FALSE","sarana publik siapa pun dapat melihat kamus Anda yang membutuhkan persetujuan masyarakat. kamus pribadi hanya terlihat untuk Anda dan kolaborator Anda.","Kamus yang bersifat umum berarti setiap orang dapat melihat kamus anda yang kemudian memerlukan surat persetujuan komunitas bahasa. Kamus yang bersifat pribadi hanya dapat dilihat oleh anda dan kolaborator anda.","Kamus yang bersifat umum berarti setiap orang dapat melihat kamus anda yang kemudian memerlukan surat persetujuan komunitas bahasa. Kamus yang bersifat pribadi hanya dapat dilihat oleh anda dan kolaborator anda.","TRUE","njia ya Umma mtu aweze kuona kamusi yako ambayo inahitaji ridhaa ya jamii. kamusi faragha zinaonekana tu kwako na washirika wako.","Je, jamii ya wazungumzaji inaruhusu lugha hii kuwekwa mtandaoni? Umma inamaanisha mtu yeyote anaweza kuona kamusi yako, suala ambalo linahitaji idhini ya jamii. Kamusi binafsi zinaonekana kwako tu na washirika wako.","Je, jamii ya wazungumzaji inaruhusu lugha hii kuwekwa mtandaoni? Umma inamaanisha mtu yeyote anaweza kuona kamusi yako, suala ambalo linahitaji idhini ya jamii. Kamusi binafsi zinaonekana kwako tu na washirika wako.","TRUE","የህዝብ ማለት ማንኛውም ማህበረሰብ ስምምነት ይጠይቃል ይህም የእርስዎን መዝገበ ማየት ይችላሉ. የግል መዝገበ ቃላት ብቻ ነው እርስዎን እና ተባባሪዎች የሚታዩ ናቸው.","","የህዝብ ማለት ማንኛውም ማህበረሰብ ስምምነት ይጠይቃል ይህም የእርስዎን መዝገበ ማየት ይችላሉ. የግል መዝገበ ቃላት ብቻ ነው እርስዎን እና ተባባሪዎች የሚታዩ ናቸው.","FALSE","phương tiện công cộng ai cũng có thể nhìn thấy từ điển của bạn đòi hỏi phải có sự đồng ý của cộng đồng. từ điển riêng là chỉ hiển thị cho bạn và cộng tác của bạn.","","phương tiện công cộng ai cũng có thể nhìn thấy từ điển của bạn đòi hỏi phải có sự đồng ý của cộng đồng. từ điển riêng là chỉ hiển thị cho bạn và cộng tác của bạn.","FALSE","สาธารณะหมายถึงทุกคนสามารถดูพจนานุกรมของคุณซึ่งจะต้องได้รับความยินยอมชุมชน พจนานุกรมเอกชนจะปรากฏเฉพาะกับคุณและทำงานร่วมกันของคุณ","","สาธารณะหมายถึงทุกคนสามารถดูพจนานุกรมของคุณซึ่งจะต้องได้รับความยินยอมชุมชน พจนานุกรมเอกชนจะปรากฏเฉพาะกับคุณและทำงานร่วมกันของคุณ","FALSE","មធ្យោបាយសាធារណៈនរណាម្នាក់អាចមើលឃើញវចនានុក្រមរបស់អ្នកដែលតម្រូវឱ្យមានការយល់ព្រមពីសហគមន៍។ វចនានុក្រមឯកជនអាចមើលឃើញតែមួយគត់ដើម្បីអ្នកនិងអ្នកសហការរបស់អ្នក។","","មធ្យោបាយសាធារណៈនរណាម្នាក់អាចមើលឃើញវចនានុក្រមរបស់អ្នកដែលតម្រូវឱ្យមានការយល់ព្រមពីសហគមន៍។ វចនានុក្រមឯកជនអាចមើលឃើញតែមួយគត់ដើម្បីអ្នកនិងអ្នកសហការរបស់អ្នក។","FALSE","ຫມາຍຄວາມວ່າສາທາລະນະທຸກຄົນສາມາດເບິ່ງຈະນານຸກົມຂອງທ່ານທີ່ຮຽກຮ້ອງໃຫ້ມີການຍິນຍອມເຫັນຊຸມຊົນ. ຈະນານຸກົມເອກະຊົນສາມາດເບິ່ງເຫັນພຽງແຕ່ທ່ານແລະການຮ່ວມມືຂອງທ່ານ.","","ຫມາຍຄວາມວ່າສາທາລະນະທຸກຄົນສາມາດເບິ່ງຈະນານຸກົມຂອງທ່ານທີ່ຮຽກຮ້ອງໃຫ້ມີການຍິນຍອມເຫັນຊຸມຊົນ. ຈະນານຸກົມເອກະຊົນສາມາດເບິ່ງເຫັນພຽງແຕ່ທ່ານແລະການຮ່ວມມືຂອງທ່ານ.","FALSE","cara awam sesiapa sahaja boleh melihat kamus anda yang memerlukan persetujuan masyarakat. kamus swasta hanya kelihatan kepada anda dan rakan usaha sama anda.","Umum bermakna sesiapa sahaja boleh melihat kamus anda. Pilihan ini memerlukan persetujuan masyarakat. Kamus peribadi hanya dapat dilihat oleh anda dan rakan usaha sama anda.","Umum bermakna sesiapa sahaja boleh melihat kamus anda. Pilihan ini memerlukan persetujuan masyarakat. Kamus peribadi hanya dapat dilihat oleh anda dan rakan usaha sama anda.","TRUE","Ang pampublikong ay nangangahulugang makita ng sinuman ang iyong diksyunaryo na nangangailangan ng pahintulot ng komunidad. Ang mga pribadong dictionaries ay makikita lamang sa iyo at sa iyong mga collaborator.","","Ang pampublikong ay nangangahulugang makita ng sinuman ang iyong diksyunaryo na nangangailangan ng pahintulot ng komunidad. Ang mga pribadong dictionaries ay makikita lamang sa iyo at sa iyong mga collaborator.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Optional Data Fields","","","settings","optional_data_fields","settings.optional_data_fields","Los campos de datos opcional","Campos de datos opcionales","Campos de datos opcionales","TRUE","Opcional Campos de Dados","Campo de dados opcionais","Campo de dados opcionais","TRUE","Champs optionnels de données","Champs de données facultatifs","Champs de données facultatifs","TRUE","שדות נתונים אופציונלי","שדות מידע אופציונליים (לא חובה)","שדות מידע אופציונליים (לא חובה)","TRUE","حقول البيانات اختياري","حقول بيانات اختيارية","حقول بيانات اختيارية","FALSE","वैकल्पिक डेटा फ़ील्ड","प्रविष्टियों के लिए वैकल्पिक क्षेत्र","प्रविष्टियों के लिए वैकल्पिक क्षेत्र","TRUE","ঐচ্ছিক তথ্য ক্ষেত্র","","ঐচ্ছিক তথ্য ক্ষেত্র","FALSE","ବୈକଳ୍ପିକ ଡାଟା Fields","","ବୈକଳ୍ପିକ ଡାଟା Fields","FALSE","","FALSE","Дополнительные поля данных","Поля для дополнительных данных","Поля для дополнительных данных","TRUE","可选的数据字段","","可选的数据字段","FALSE","ZABI Data Fields","","ZABI Data Fields","FALSE","Opsional Bidang Data","Bidang Data Bersifat Pilihan ","Opsional Bidang Data","TRUE","Hiari Data Fields","Sehemu za Taarifa Mbadala","Sehemu za Taarifa Mbadala","TRUE","አስገዳጅ ያልሆነ የውሂብ መስኮች","","አስገዳጅ ያልሆነ የውሂብ መስኮች","FALSE","Tùy chọn dữ liệu Fields","","Tùy chọn dữ liệu Fields","FALSE","เขตข้อมูลที่ไม่บังคับ","","เขตข้อมูลที่ไม่บังคับ","FALSE","វាលទិន្នន័យស្រេចចិត្ត","","វាលទិន្នន័យស្រេចចិត្ត","FALSE","ໄຮ່ Data ເລືອກ","","ໄຮ່ Data ເລືອກ","FALSE","Pilihan Data Fields","Bidang Data Tidak Wajib","Bidang Data Tidak Wajib","TRUE","Opsyonal na mga patlang ng data","","Opsyonal na mga patlang ng data","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Add New Speaker","","","speakers","add_new_speaker","speakers.add_new_speaker","Añadir Nuevo altavoz","Agregar un nuevo hablante","Agregar un nuevo hablante","TRUE","Adicionar novo Speaker","Adicionar um falante novo","Adicionar um falante novo","TRUE","Ajouter un nouveau Président","Ajouter un nouveau locuteur","Ajouter un nouveau locuteur","TRUE","הוסף חדש רמקול","הוספת דובר/ת","הוספת דובר/ת","TRUE","إضافة رئيس جديد","إضافة متحدث جديد","إضافة متحدث جديد","FALSE","नए अध्यक्ष जोड़े","नया वक्ता जोड़ें","नया वक्ता जोड़ें","TRUE","নিউ স্পিকার যুক্ত করো","","নিউ স্পিকার যুক্ত করো","FALSE","ନୂତନ ବକ୍ତା ଯୋଡନ୍ତୁ","","ନୂତନ ବକ୍ତା ଯୋଡନ୍ତୁ","FALSE","","FALSE","Добавить новый спикер","Добавить нового информанта","Добавить нового информанта","TRUE","添加新议长","","添加新议长","FALSE","Add New Majalisa","","Add New Majalisa","FALSE","Tambahkan Speaker Baru","Tambahkan Penutur Baru","Bidang Data Bersifat Pilihan ","TRUE","Kuongeza New Spika","Ongeza Mzungumzaji Mpya","Ongeza Mzungumzaji Mpya","TRUE","አዲስ ማጉያ ያክሉ","","አዲስ ማጉያ ያክሉ","FALSE","Add New Loa","","Add New Loa","FALSE","เพิ่มลำโพงใหม่","","เพิ่มลำโพงใหม่","FALSE","បន្ថែមវាគ្មិនថ្មី","","បន្ថែមវាគ្មិនថ្មី","FALSE","ເພີ່ມລໍາໂພງໃຫມ່","","ເພີ່ມລໍາໂພງໃຫມ່","FALSE","Menambah Speaker Baru","Tambah Penutur Baharu","Tambah Penutur Baharu","TRUE","Magdagdag ng bagong speaker","","Magdagdag ng bagong speaker","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"The speaker agrees to let these recordings be publicly available online.","","","speakers","speaker_agrees","speakers.speaker_agrees","El orador está de acuerdo en permitir que estas grabaciones estarán disponibles públicamente en línea.","El hablante está de acuerdo en que esas grabaciones sean disponibles en linea para el público.","El hablante está de acuerdo en que esas grabaciones sean disponibles en linea para el público.","TRUE","O orador concorda em deixar que essas gravações estar publicamente disponíveis online.","O falantre concordou em deixar estas gravações disponíveis on-line.","O falantre concordou em deixar estas gravações disponíveis on-line.","TRUE","L'orateur accepte de laisser ces enregistrements soient disponibles en ligne.","Le locuteur accepte que ces enregistrements soient accessibles au public en ligne.","Le locuteur accepte que ces enregistrements soient accessibles au public en ligne.","TRUE","הדובר מסכים לתת ההקלטות האלה תהיינה זמינות לציבור באופן מקוון.","הדובר/ת מאשר/ת את פרסום ההקלטות לציבור הרחב באינטרנט (בממשק זה).","הדובר/ת מאשר/ת את פרסום ההקלטות לציבור הרחב באינטרנט (בממשק זה).","TRUE","وافق رئيس للسماح تكون هذه التسجيلات المتاحة للجمهور على الانترنت.","يوافق المتحدث على إتاحة تلك التسجيلات للجمهور على الانترنت.","يوافق المتحدث على إتاحة تلك التسجيلات للجمهور على الانترنت.","FALSE","वक्ता जाने के लिए इन रिकॉर्डिंग ऑनलाइन सार्वजनिक रूप से उपलब्ध भी इससे सहमत हैं।","इन रिकॉर्डिंग्स को सार्वजनिक रूप से ऑनलाइन देखने की वक्ता ने सहमति दी है।","इन रिकॉर्डिंग्स को सार्वजनिक रूप से ऑनलाइन देखने की वक्ता ने सहमति दी है।","TRUE","স্পিকার দিন এইসব রেকর্ডিং অনলাইন সার্বজনিকভাবে উপলব্ধ করা সম্মত হয়।","","স্পিকার দিন এইসব রেকর্ডিং অনলাইন সার্বজনিকভাবে উপলব্ধ করা সম্মত হয়।","FALSE","ସ୍ପିକର ଏହି ରେକର୍ଡ଼ ଅନଲାଇନ୍ ଜନସାଧାରଣରେ ଉପଲବ୍ଧ ହେବ କରିବାକୁ ରାଜି ହୋଇଛନ୍ତି।","","ସ୍ପିକର ଏହି ରେକର୍ଡ଼ ଅନଲାଇନ୍ ଜନସାଧାରଣରେ ଉପଲବ୍ଧ ହେବ କରିବାକୁ ରାଜି ହୋଇଛନ୍ତି।","FALSE","","FALSE","Выступающий соглашается с тем, чтобы эти записи будут публично доступны в Интернете.","Информант дает согласие на размещение записей в общественном доступе в Интернете.","Информант дает согласие на размещение записей в общественном доступе в Интернете.","TRUE","扬声器同意让这些录音被公开在网上提供。","","扬声器同意让这些录音被公开在网上提供。","FALSE","The magana ya amince ya bar wadannan rikodin zama a fili akwai online.","","The magana ya amince ya bar wadannan rikodin zama a fili akwai online.","FALSE","Pembicara setuju untuk membiarkan rekaman ini tersedia untuk umum secara online.","Penutur setuju rekaman ini tersedia untuk umum secara online.","Penutur setuju rekaman ini tersedia untuk umum secara online.","TRUE","msemaji anakubaliana basi rekodi hizi hadharani online.","Mzungumzaji amekubali kuruhusu hizi rekodi zitumiwe na umma mtandaoni","Mzungumzaji amekubali kuruhusu hizi rekodi zitumiwe na umma mtandaoni","TRUE","ተናጋሪው እነዚህን ቀረጻዎች መስመር ላይ በይፋ የሚገኝ ይሁን ይስማማል.","","ተናጋሪው እነዚህን ቀረጻዎች መስመር ላይ በይፋ የሚገኝ ይሁን ይስማማል.","FALSE","Người nói đồng ý cho các bản ghi âm được công bố trực tuyến.","","Người nói đồng ý cho các bản ghi âm được công bố trực tuyến.","FALSE","ลำโพงยินยอมให้บันทึกเหล่านี้เป็นที่เปิดเผยต่อสาธารณชนออนไลน์","","ลำโพงยินยอมให้บันทึกเหล่านี้เป็นที่เปิดเผยต่อสาธารณชนออนไลน์","FALSE","វាគ្មិនដែលបានយល់ព្រមដើម្បីអនុញ្ញាតឱ្យថតទាំងនេះអាចរកបានជាសាធារណៈនៅលើបណ្ដាញ។","","វាគ្មិនដែលបានយល់ព្រមដើម្បីអនុញ្ញាតឱ្យថតទាំងនេះអាចរកបានជាសាធារណៈនៅលើបណ្ដាញ។","FALSE","ລໍາໂພງຕົກລົງທີ່ຈະໃຫ້ການບັນທຶກການເຫຼົ່ານີ້ສາມາດໃຊ້ໄດ້ຢ່າງເປີດເຜີຍອອນໄລນ໌.","","ລໍາໂພງຕົກລົງທີ່ຈະໃຫ້ການບັນທຶກການເຫຼົ່ານີ້ສາມາດໃຊ້ໄດ້ຢ່າງເປີດເຜີຍອອນໄລນ໌.","FALSE","pembesar suara bersetuju untuk membiarkan rakaman ini menjadi umum dalam talian.","Penutur bersetuju bahawa rakaman ini tersedia untuk umum secara dalam talian.","Penutur bersetuju bahawa rakaman ini tersedia untuk umum secara dalam talian.","TRUE","Sumasang-ayon ang tagapagsalita na hayaan ang mga pag-record na ito na magagamit sa publiko online.","","Sumasang-ayon ang tagapagsalita na hayaan ang mga pag-record na ito na magagamit sa publiko online.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Name","","","speakers","name","speakers.name","Nombre","Nombre","Nombre","TRUE","Nome","Nome ","Nome ","TRUE","Nom","Nom","Nom","TRUE","שֵׁם","שם","שם","TRUE","اسم","الاسم","الاسم","FALSE","नाम","नाम","नाम","TRUE","নাম","","নাম","FALSE","ନାମ","","ନାମ","FALSE","","FALSE","название","Имя","Имя","TRUE","名称","","名称","FALSE","sunan","","sunan","FALSE","Nama","Nama","Nama","TRUE","jina","Jina","Jina","TRUE","ስም","ስም","ስም","TRUE","Tên","","Tên","FALSE","ชื่อ","","ชื่อ","FALSE","ឈ្មោះ","","ឈ្មោះ","FALSE","ຊື່","","ຊື່","FALSE","nama","Nama","Nama","TRUE","Pangalan","","Pangalan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Birthplace","","","speakers","birthplace","speakers.birthplace","Lugar de nacimiento","Lugar de nacimiento","Lugar de nacimiento","TRUE","local de nascimento","Local de Nascimento","Local de Nascimento","TRUE","Lieu de naissance","Lieu de naissance","Lieu de naissance","TRUE","מְקוֹם לֵידָה","מקום לידה","מקום לידה","TRUE","مكان الولادة","محل الميلاد","محل الميلاد","FALSE","जन्मस्थल","जन्मस्थान","जन्मस्थान","TRUE","জন্মস্থান","","জন্মস্থান","FALSE","ଜନ୍ମସ୍ଥାନ","","ଜନ୍ମସ୍ଥାନ","FALSE","","FALSE","место рождения","","место рождения","TRUE","出生地","","出生地","FALSE","Birthplace","","Birthplace","FALSE","Tempat lahir","Tempat Lahir","Tempat Lahir","TRUE","Mahali pa kuzaliwa","Mahali pa kuzaliwa","Mahali pa kuzaliwa","TRUE","የተወለደበት አገር","የተወለደበት አገር","የተወለደበት አገር","TRUE","Nơi sinh","","Nơi sinh","FALSE","บ้านเกิด","","บ้านเกิด","FALSE","ស្រុកកំណើត","","ស្រុកកំណើត","FALSE","ສະຖານທີ່ເກີດ","","ສະຖານທີ່ເກີດ","FALSE","tempat kelahiran","Tempat Kelahiran","Tempat Kelahiran","TRUE","Lugar ng kapanganakan","","Lugar ng kapanganakan","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Age Range","","","speakers","age_range","speakers.age_range","Rango de edad","Rango de edad","Rango de edad","TRUE","Faixa etária","Faixa etária","Faixa etária","TRUE","Tranche d'âge","La tranche d'âge","La tranche d'âge","TRUE","טווח גילאים","","טווח גילאים","TRUE","الفئة العمرية","الفئة العمرية","الفئة العمرية","FALSE","आयु सीमा","आयु सीमा","आयु सीमा","TRUE","বয়স পরিসীমা","","বয়স পরিসীমা","FALSE","ବୟସ ରେଞ୍ଜ","","ବୟସ ରେଞ୍ଜ","FALSE","","FALSE","Возрастной диапазон","Возрастная группа","Возрастная группа","TRUE","年龄范围","","年龄范围","FALSE","Age Range","","Age Range","FALSE","Rentang usia","Rentang Usia","Rentang Usia","TRUE","Masafa ya miaka","Kundi la Umri","Kundi la Umri","TRUE","የዕድሜ ክልል","","የዕድሜ ክልል","FALSE","Độ tuổi","","Độ tuổi","FALSE","ช่วงอายุ","","ช่วงอายุ","FALSE","ជួរអាយុ","","ជួរអាយុ","FALSE","ລໍາດັບອາຍຸ","","ລໍາດັບອາຍຸ","FALSE","Julat umur","Lingkungan Umur","Lingkungan Umur","TRUE","Hanay ng edad","","Hanay ng edad","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gender","","","speakers","gender","speakers.gender","Género","Género","Género","TRUE","Gênero","Género","Género","TRUE","Le genre","Genre","Genre","TRUE","מִין","מין","מין","TRUE","جنس","الجنس","الجنس","FALSE","लिंग","लिंग","लिंग","TRUE","লিঙ্গ","","লিঙ্গ","FALSE","ଲିଙ୍ଗ","","ଲିଙ୍ଗ","FALSE","","FALSE","Пол","","Пол","TRUE","性别","","性别","FALSE","jinsi","","jinsi","FALSE","Jenis kelamin","Jenis Kelamin","Jenis Kelamin","TRUE","Jinsia","Jinsi","Jinsi","TRUE","ፆታ","ፆታ","ፆታ","TRUE","tính","","tính","FALSE","เพศ","","เพศ","FALSE","យែនឌ័រ","","យែនឌ័រ","FALSE","ເພດ","","ເພດ","FALSE","jantina","Jantina","Jantina","TRUE","Kasarian","","Kasarian","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Male","","","speakers","male","speakers.male","Masculino","Hombre","Hombre","TRUE","Masculino","Masculino","Masculino","TRUE","Masculin","masculin","masculin","TRUE","זָכָר","זכר","זכר","TRUE","الذكر","ذكر","ذكر","FALSE","नर","पुरुष","पुरुष","TRUE","পুরুষ","","পুরুষ","FALSE","ପୁରୁଷ","","ପୁରୁଷ","FALSE","","FALSE","мужчина","мужской","мужской","TRUE","男","","男","FALSE","male","","male","FALSE","Pria","Laki-laki","Laki-laki","TRUE","Mwanaume","Mwanaume","Mwanaume","TRUE","ተባዕት","","ተባዕት","FALSE","Nam giới","","Nam giới","FALSE","ชาย","","ชาย","FALSE","បុរស","","បុរស","FALSE","ຜູ້​ຊາຍ","","ຜູ້​ຊາຍ","FALSE","lelaki","Lelaki","Lelaki","TRUE","Lalaki","","Lalaki","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Female","","","speakers","female","speakers.female","Hembra","Mujer","Mujer","TRUE","Fêmea","Feminino","Feminino","TRUE","Femelle","féminin","féminin","TRUE","נְקֵבָה","נקבה","נקבה","TRUE","أنثى","أنثى","أنثى","FALSE","महिला","महिला","महिला","TRUE","মহিলা","","মহিলা","FALSE","ସ୍ତ୍ରୀ","","ସ୍ତ୍ରୀ","FALSE","","FALSE","женский","женский","женский","TRUE","女","","女","FALSE","mace","","mace","FALSE","Perempuan","Perempuan","Perempuan","TRUE","mwanamke","Mwanamke","Mwanamke","TRUE","ሴት","ሴት","ሴት","TRUE","Giống cái","","Giống cái","FALSE","หญิง","","หญิง","FALSE","ស្រី","","ស្រី","FALSE","ຍິງ","","ຍິງ","FALSE","perempuan","Perempuan","Perempuan","TRUE","Babae","","Babae","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Other","","","speakers","other","speakers.other","Otro","Otro","Otro","TRUE","De outros","Outro","Outro","TRUE","Autre","Autre","Autre","TRUE","אַחֵר","אחר","אחר","TRUE","آخر","آخر","آخر","FALSE","अन्य","अन्य","अन्य","TRUE","অন্যান্য","","অন্যান্য","FALSE","ଅନ୍ଯ","","ଅନ୍ଯ","FALSE","","FALSE","Другие","другой","другой","TRUE","其他","","其他","FALSE","sauran","","sauran","FALSE","Lain","Lainnya","Lainnya","TRUE","Nyingine","Nyingine","Nyingine","TRUE","ሌላ","ሌላ","ሌላ","TRUE","khác","","khác","FALSE","อื่น ๆ","","อื่น ๆ","FALSE","ផ្សេងទៀត","","ផ្សេងទៀត","FALSE","ອື່ນ ໆ","","ອື່ນ ໆ","FALSE","lain","Lain","Lain","TRUE","Other.","","Other.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"By submitting this form, you agree to our","","","terms","agree_by_submit","terms.agree_by_submit","Al enviar este formulario, usted acepta nuestra","Al enviar este formulario, usted está de acuerdo con nuestros","Al enviar este formulario, usted está de acuerdo con nuestros","TRUE","Ao enviar este formulário, você concorda com a nossa","Ao submeter este formulário, você concorda com a nossa","Ao submeter este formulário, você concorda com a nossa","TRUE","En soumettant ce formulaire, vous acceptez nos","En soumettant ce formulaire, vous acceptez nos","En soumettant ce formulaire, vous acceptez nos","TRUE","על ידי שליחת טופס זה, אתה מסכים שלנו","בשליחת טופס זה את/ה מסכימ/ה ל:","בשליחת טופס זה את/ה מסכימ/ה ל:","FALSE","من خلال تقديم هذا النموذج، فإنك توافق على","من خلال تقديم هذا النموذج، فإنك توافق على","من خلال تقديم هذا النموذج، فإنك توافق على","FALSE","यह फ़ॉर्म जमा करके, आप करने के लिए सहमत हमारे","इस फॉर्म को जमा करके आप सहमत होगें","इस फॉर्म को जमा करके आप सहमत होगें","TRUE","এই ফর্মটি জমা দিয়ে আপনি এতে সম্মত হচ্ছেন আমাদের","","এই ফর্মটি জমা দিয়ে আপনি এতে সম্মত হচ্ছেন আমাদের","FALSE","ଏହି ଫର୍ମ ଉପସ୍ଥାପନ କରି, ଆପଣ ରାଜି ଆମ୍ଭର","","ଏହି ଫର୍ମ ଉପସ୍ଥାପନ କରି, ଆପଣ ରାଜି ଆମ୍ଭର","FALSE","","FALSE","Отправляя эту форму, вы соглашаетесь с нашими","","Отправляя эту форму, вы соглашаетесь с нашими","TRUE","提交此表格,您同意我们的","","提交此表格,您同意我们的","FALSE","By mika wannan tsari, za ka yarda da mu","","By mika wannan tsari, za ka yarda da mu","FALSE","Dengan mengirimkan formulir ini, Anda setuju untuk kami","Dengan mengirimkan formulir ini, anda setuju dengan ","Dengan mengirimkan formulir ini, anda setuju dengan ","TRUE","Kwa kuwasilisha fomu hii, wewe kukubaliana na yetu","Kwa kutuma hii fomu, umekubaliana na kanuni zetu","Kwa kutuma hii fomu, umekubaliana na kanuni zetu","TRUE","ይህን ቅጽ በማስገባት, ተስማምተዋል የእኛን","","ይህን ቅጽ በማስገባት, ተስማምተዋል የእኛን","FALSE","Bằng cách điền vào mẫu này, bạn đồng ý với chúng tôi","","Bằng cách điền vào mẫu này, bạn đồng ý với chúng tôi","FALSE","โดยการส่งแบบฟอร์มนี้คุณเห็นด้วยกับเรา","","โดยการส่งแบบฟอร์มนี้คุณเห็นด้วยกับเรา","FALSE","តាមរយៈការដាក់ស្នើសំណុំបែបបទនេះអ្នកយល់ព្រមរបស់យើង","","តាមរយៈការដាក់ស្នើសំណុំបែបបទនេះអ្នកយល់ព្រមរបស់យើង","FALSE","ໂດຍສົ່ງແບບຟອມນີ້, ທ່ານຕົກລົງເຫັນດີກັບພວກເຮົາ","","ໂດຍສົ່ງແບບຟອມນີ້, ທ່ານຕົກລົງເຫັນດີກັບພວກເຮົາ","FALSE","Dengan menghantar borang ini, anda bersetuju dengan","Dengan menghantar borang ini, anda bersetuju dengan","Dengan menghantar borang ini, anda bersetuju dengan","TRUE","Sa pamamagitan ng pagsusumite ng form na ito, sumasang-ayon ka sa aming.","","Sa pamamagitan ng pagsusumite ng form na ito, sumasang-ayon ka sa aming.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Agreement to Terms","","","terms","agreement_to_terms","terms.agreement_to_terms","Acuerdo de Términos","Aceptar las condiciones de uso","Aceptar las condiciones de uso","TRUE","Acordo de Termos","Termos de acordo","Termos de acordo","TRUE","Accord Conditions","Accepter les conditions","Accepter les conditions","TRUE","הסכם תנאי"," הסכמה לתנאים"," הסכמה לתנאים","TRUE","الاتفاق على شروط","الموافقة على الشروط","الموافقة على الشروط","FALSE","शर्तों के समझौते","हमारे समझौते के शर्तों से","हमारे समझौते के शर्तों से","TRUE","শর্তাবলীতে চুক্তি","","শর্তাবলীতে চুক্তি","FALSE","ସର୍ତ୍ତାବଳୀକୁ ଚୁକ୍ତି","","ସର୍ତ୍ତାବଳୀକୁ ଚୁକ୍ତି","FALSE","","FALSE","Согласие с Условиями","","Согласие с Условиями","TRUE","协议条款","","协议条款","FALSE","Yarjejeniyar zuwa Terms","","Yarjejeniyar zuwa Terms","FALSE","Perjanjian Syarat","Persyaratan Persetujuan","Persyaratan Persetujuan","TRUE","Mkataba wa Masharti","Makubaliano ya Kanuni","Makubaliano ya Kanuni","TRUE","ውል ስምምነት","","ውል ስምምነት","FALSE","Thoả thuận Điều khoản","","Thoả thuận Điều khoản","FALSE","ข้อตกลงข้อตกลง","","ข้อตกลงข้อตกลง","FALSE","កិច្ចព្រមព្រៀងជាមួយលក្ខខណ្ឌ","","កិច្ចព្រមព្រៀងជាមួយលក្ខខណ្ឌ","FALSE","ຂໍ້ຕົກລົງຮັບເງື່ອນໄຂ","","ຂໍ້ຕົກລົງຮັບເງື່ອນໄຂ","FALSE","Perjanjian untuk Syarat","Persetujuan dengan Syarat","Persetujuan dengan Syarat","TRUE","Kasunduan sa Mga Tuntunin","","Kasunduan sa Mga Tuntunin","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Unsupported File Type","","","upload","error","upload.error","Tipo de archivo no soportado","Este tipo de archivo no es compatible.","Este tipo de archivo no es compatible.","TRUE","Tipo de arquivo não suportado","Ficheiro não suportado","Ficheiro não suportado","TRUE","Type de fichier non pris en charge","Ce type de fichier n'est pas supporté","Ce type de fichier n'est pas supporté","TRUE","סוג קובץ לא נתמך","","סוג קובץ לא נתמך","TRUE","نوع ملف غير مدعوم","نوع ملف غير مدعوم","نوع ملف غير مدعوم","FALSE","अमान्य फाइल का प्रकार","अमान्य प्रकार का फाइल ","अमान्य प्रकार का फाइल ","TRUE","অসমর্থিত ফাইল টাইপ","","অসমর্থিত ফাইল টাইপ","FALSE","ଅସମର୍ଥିତ ଫାଇଲ ପ୍ରକାର","","ଅସମର୍ଥିତ ଫାଇଲ ପ୍ରକାର","FALSE","","FALSE","Неподдерживаемый тип файла","","Неподдерживаемый тип файла","TRUE","支持的文件类型","","支持的文件类型","FALSE","Hoto mai motsi fayil Type","","Hoto mai motsi fayil Type","FALSE","Tipe file tidak didukung","Tipe File Tidak Didukung","Tipe File Tidak Didukung","TRUE","Haitumiki Aina ya Faili","Jalada lisilokubalika","Jalada lisilokubalika","TRUE","የማይደገፍ የፋይል አይነት","","የማይደገፍ የፋይል አይነት","FALSE","Loại tập tin không được hỗ trợ","","Loại tập tin không được hỗ trợ","FALSE","ไม่สนับสนุนไฟล์ประเภท","","ไม่สนับสนุนไฟล์ประเภท","FALSE","ប្រភេទឯកសារដែលមិនបានគាំទ្រ","","ប្រភេទឯកសារដែលមិនបានគាំទ្រ","FALSE","ບໍ່ຮອງຮັບໄຟລ໌ປະເພດ","","ບໍ່ຮອງຮັບໄຟລ໌ປະເພດ","FALSE","Tidak disokong Jenis Fail","Jenis Fail Tidak Disokong","Jenis Fail Tidak Disokong","TRUE","Hindi suportadong uri ng file","","Hindi suportadong uri ng file","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"File must be smaller than","","","upload","file_must_be_smaller","upload.file_must_be_smaller","El archivo debe ser menor que","El archivo debe ser más pequeño que","El archivo debe ser más pequeño que","TRUE","Arquivo deve ser menor do que","O ficheiro deve ser menor que","O ficheiro deve ser menor que","TRUE","Le fichier doit être inférieure à","Le fichier doit être plus petit que","Le fichier doit être plus petit que","TRUE","קובץ חייב להיות קטן מ","","קובץ חייב להיות קטן מ","TRUE","يجب أن يكون الملف أصغر من","يجب أن يكون الملف أصغر من","يجب أن يكون الملف أصغر من","FALSE","फ़ाइल से छोटी होनी चाहिए","फाइल.....से छोटी होनी चाहिए","फाइल.....से छोटी होनी चाहिए","TRUE","ফাইল কম হওয়া আবশ্যক","","ফাইল কম হওয়া আবশ্যক","FALSE","ଫାଇଲ ଠାରୁ କମ୍ ହେବା ଉଚିତ","","ଫାଇଲ ଠାରୁ କମ୍ ହେବା ଉଚିତ","FALSE","","FALSE","Файл должен быть меньше, чем","","Файл должен быть меньше, чем","TRUE","文件必须小于","","文件必须小于","FALSE","Fayil dole ne karami fiye da","","Fayil dole ne karami fiye da","FALSE","File harus lebih kecil dari","File harus lebih kecil dari","File harus lebih kecil dari","TRUE","Lazima faili iwe ndogo kuliko","Jalada lazima liwe dogo kuliko","Jalada lazima liwe dogo kuliko","TRUE","ፋይል ያነሱ መሆን አለባቸው","","ፋይል ያነሱ መሆን አለባቸው","FALSE","Tập tin phải nhỏ hơn","","Tập tin phải nhỏ hơn","FALSE","ไฟล์ต้องมีขนาดเล็กกว่า","","ไฟล์ต้องมีขนาดเล็กกว่า","FALSE","ឯកសារត្រូវតែតូចជាង","","ឯកសារត្រូវតែតូចជាង","FALSE","ເອກະສານຕ້ອງມີຂະຫນາດນ້ອຍກ່ວາ","","ເອກະສານຕ້ອງມີຂະຫນາດນ້ອຍກ່ວາ","FALSE","Fail mestilah lebih kecil daripada","Saiz fail harus lebih kecil daripada","Saiz fail harus lebih kecil daripada","TRUE","Ang file ay dapat na mas maliit kaysa","","Ang file ay dapat na mas maliit kaysa","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Drop to Upload","","","upload","drop_to_upload","upload.drop_to_upload","Subir a caer","Suelta el archivo de descarga","Suelta el archivo de descarga","TRUE","Cair para Carregar","Cancelar o carregamento","Cancelar o carregamento","TRUE","Laissez tomber à Télécharger","Déposer pour télécharger","Déposer pour télécharger","TRUE","לרדת ל Upload","שחררו קובץ כאן כדי להעלות","שחררו קובץ כאן כדי להעלות","TRUE","إسقاط لتحميل","اسحب الملف لرفعه","اسحب الملف لرفعه","FALSE","अपलोड करने के लिए ड्रॉप","अपलोड करने के लिए डालें","अपलोड करने के लिए डालें","TRUE","আপলোড করার জন্য ছাড়ুন","","আপলোড করার জন্য ছাড়ুন","FALSE","ଅପଲୋଡ୍ କୁ ଛାଡନ୍ତୁ","","ଅପଲୋଡ୍ କୁ ଛାଡନ୍ତୁ","FALSE","","FALSE","Отбросьте для загрузки","Переместите для загрузки","Переместите для загрузки","TRUE","拖放到上传","","拖放到上传","FALSE","Sauke zuwa Upload","","Sauke zuwa Upload","FALSE","Turun ke Upload","Masukkan File untuk Diunggah","Masukkan File untuk Diunggah","TRUE","Kushuka hadi Upload","dondosha upakie","dondosha upakie","TRUE","ለመስቀል ጣል","","ለመስቀል ጣል","FALSE","Thả để tải","","Thả để tải","FALSE","Drop เพื่ออัปโหลด","","Drop เพื่ออัปโหลด","FALSE","ទម្លាក់ដើម្បីផ្ទុកឡើង","","ទម្លាក់ដើម្បីផ្ទុកឡើង","FALSE","ການຫຼຸດລົງທີ່ຈະ Upload","","ການຫຼຸດລົງທີ່ຈະ Upload","FALSE","Jatuh ke naik","Jatuhkan untuk Muat Naik","Jatuhkan untuk Muat Naik","TRUE","Mag-drop sa pag-upload","","Mag-drop sa pag-upload","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Select Audio File","","","upload","select_audio_file","upload.select_audio_file","Seleccionar archivo de audio","Seleccionar un archivo de audio","Seleccionar un archivo de audio","TRUE","Selecione Arquivo de áudio","Seleccione o ficheiro do Áudio","Seleccione o ficheiro do Áudio","TRUE","Sélectionnez Fichier Audio","Sélectionnez un fichier audio","Sélectionnez un fichier audio","TRUE","בחר קובץ אודיו","בחירות קובץ שמע (אודיו)","בחירות קובץ שמע (אודיו)","TRUE","اختر الملف الصوتي","اختر ملف صوتي","اختر ملف صوتي","FALSE","ऑडियो फ़ाइल का चयन करें","ऑडियो फ़ाइल का चयन करें","ऑडियो फ़ाइल का चयन करें","TRUE","অডিও ফাইল নির্বাচন","","অডিও ফাইল নির্বাচন","FALSE","ଅଡିଓ ଫାଇଲ ଚୟନ","","ଅଡିଓ ଫାଇଲ ଚୟନ","FALSE","","FALSE","Выберите аудиофайл","","Выберите аудиофайл","TRUE","选择音频文件","","选择音频文件","FALSE","Zabi Audio fayil","","Zabi Audio fayil","FALSE","Pilih File Audio","Pilih File Audio","Pilih File Audio","TRUE","Kuchagua Audio Picha","Chagua sauti","Chagua sauti","TRUE","የድምጽ ፋይል ይምረጡ","","የድምጽ ፋይል ይምረጡ","FALSE","Chọn Audio File","","Chọn Audio File","FALSE","เลือกไฟล์เสียง","","เลือกไฟล์เสียง","FALSE","ជ្រើសឯកសារអូឌីយ៉ូ","","ជ្រើសឯកសារអូឌីយ៉ូ","FALSE","ເລືອກ Audio File","","ເລືອກ Audio File","FALSE","Pilih Fail Audio","Pilih Fail Audio","Pilih Fail Audio","TRUE","Piliin ang Audio File.","","Piliin ang Audio File.","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Success","","","upload","success","upload.success","Éxito","Éxito","Éxito","TRUE","Sucesso","Sucesso","Sucesso","TRUE","Succès","Réussite","Réussite","TRUE","הַצלָחָה","הצלחה","הצלחה","TRUE","نجاح","نجاح","نجاح","FALSE","सफलता","सफल हुआ","सफल हुआ","TRUE","সাফল্য","","সাফল্য","FALSE","ସଫଳତା","","ସଫଳତା","FALSE","","FALSE","успех","Успешно","Успешно","TRUE","成功","","成功","FALSE","Success","","Success","FALSE","Keberhasilan","Berhasil","Berhasil","TRUE","mafanikio","Mafanikio","Mafanikio","TRUE","ስኬት","","ስኬት","FALSE","Sự thành công","","Sự thành công","FALSE","ความสำเร็จ","","ความสำเร็จ","FALSE","ភាពជោគជ័យ","","ភាពជោគជ័យ","FALSE","ຄວາມ​ສໍາ​ເລັດ","","ຄວາມ​ສໍາ​ເລັດ","FALSE","kejayaan","Berjaya","Berjaya","TRUE","Tagumpay","","Tagumpay","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Uploading","","","upload","uploading","upload.uploading","Carga","Subiendo","Subiendo","TRUE","Enviando","A Enviar","A Enviar","TRUE","Téléchargement","Téléchargement en cours","Téléchargement en cours","TRUE","העלאה","הקובץ בהעלאה","הקובץ בהעלאה","TRUE","تحميل","رفع","رفع","FALSE","अपलोड हो रहा है","अपलोड हो रहा है","अपलोड हो रहा है","TRUE","আপলোড হচ্ছে","","আপলোড হচ্ছে","FALSE","ଅପଲୋଡ","","ଅପଲୋଡ","FALSE","","FALSE","Выгрузка","Загрузка","Загрузка","TRUE","上传","","上传","FALSE","Ana aikawa","","Ana aikawa","FALSE","upload","Mengunggah","Mengunggah","TRUE","kupakia","Kupakia","Kupakia","TRUE","በመስቀል ላይ","","በመስቀል ላይ","FALSE","Đang tải lên","","Đang tải lên","FALSE","อัปโหลด","","อัปโหลด","FALSE","ផ្ទុកឡើង","","ផ្ទុកឡើង","FALSE","ອັບໂຫຼດ","","ອັບໂຫຼດ","FALSE","memuat naik","Memuat naik","Memuat naik","TRUE","Pag-upload","","Pag-upload","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Edit","","","misc","edit","misc.edit","Editar","Editar","Editar","TRUE","Editar","Editar","Editar","TRUE","Éditer","Modifier","Modifier","TRUE","לַעֲרוֹך","לַעֲרוֹך","לַעֲרוֹך","TRUE","يحرر","","يحرر","FALSE","संपादित करें","संपादित करें","संपादित करें","TRUE","সম্পাদন করা","","সম্পাদন করা","FALSE","ସମ୍ପାଦନ କରିବା","","ସମ୍ପାଦନ କରିବା","FALSE","","FALSE","редактировать","Редактирование","Редактирование","TRUE","编辑","","编辑","FALSE","Shirya","","Shirya","FALSE","mengedit","Menyunting","Menyunting","TRUE","Edit","Hariri","Hariri","TRUE","አርትዕ","","አርትዕ","FALSE","Biên tập","","Biên tập","FALSE","แก้ไข","","แก้ไข","FALSE","កែសម្រួល","","កែសម្រួល","FALSE","ດັດແກ້","","ດັດແກ້","FALSE","Edit","Edit","Edit","TRUE","I-edit","","I-edit","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Link copied","","","entry","link_copied","entry.link_copied","enlace copiado","Enlace copiado","Enlace copiado","TRUE","link copiado","Link copiado","Link copiado","TRUE","lien copié","Lien copié","Lien copié","TRUE","קישור הועתק","הקישור הועתק","הקישור הועתק","TRUE","تم نسخ الرابط","","تم نسخ الرابط","FALSE","लिंक कॉपी किया","लिंक कॉपी हो गया","लिंक कॉपी हो गया","TRUE","লিংক কপি","","লিংক কপি","FALSE","ଲିଙ୍କ୍ କପି","","ଲିଙ୍କ୍ କପି","FALSE","","FALSE","Ссылка скопирована","Ссылка скопирована","Ссылка скопирована","TRUE","复制链接","","复制链接","FALSE","mahada kofe","","mahada kofe","FALSE","Link disalin","Tautan disalin","Tautan disalin","TRUE","kiungo kimenakiliwa","Kiungo kimenakiliwa","Kiungo kimenakiliwa","TRUE","አገናኝ ተቀድቷል","","አገናኝ ተቀድቷል","FALSE","link sao chép","","link sao chép","FALSE","คัดลอกลิงก์","","คัดลอกลิงก์","FALSE","ចម្លងតំណ","","ចម្លងតំណ","FALSE","ການເຊື່ອມຕໍ່ສໍາເນົາ","","ການເຊື່ອມຕໍ່ສໍາເນົາ","FALSE","pautan disalin","Pautan disalin","Pautan disalin","TRUE","Link na nakopya","","Link na nakopya","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Copy and share","","","entry","copy_and_share","entry.copy_and_share","Copiar y compartir","Copiar y compartir","Copiar y compartir","TRUE","Copie e share","Copiar e partilhar","Copiar e partilhar","TRUE","Copier et partager","Copier et partager","Copier et partager","TRUE","העתק ולשתף","להעתיק ולשתף","להעתיק ולשתף","TRUE","نسخة ونصيب","","نسخة ونصيب","FALSE","कॉपी और शेयर","कॉपी और शेयर करें","कॉपी और शेयर करें","TRUE","কপি করুন এবং ভাগ","","কপি করুন এবং ভাগ","FALSE","କପି ଏବଂ ଭାଗ","","କପି ଏବଂ ଭାଗ","FALSE","","FALSE","Копирование и доля:","Копировать и делиться","Копировать и делиться","TRUE","复制并共享","","复制并共享","FALSE","Kwafi da rabo","","Kwafi da rabo","FALSE","Copy dan berbagi","Menyalin dan Menempel","Menyalin dan Menempel","TRUE","Nakili na kushiriki","Nakili na ushiriki","Nakili na ushiriki","TRUE","ቅዳ እና ያጋሩ","","ቅዳ እና ያጋሩ","FALSE","Sao chép và chia sẻ","","Sao chép và chia sẻ","FALSE","คัดลอกและหุ้น","","คัดลอกและหุ้น","FALSE","ចម្លងនិងការចែករំលែក","","ចម្លងនិងការចែករំលែក","FALSE","ສໍາເນົາແລະແບ່ງປັນ","","ສໍາເນົາແລະແບ່ງປັນ","FALSE","Copy dan bahagian","Salin dan kongsi","Salin dan kongsi","TRUE","Kopyahin at ibahagi","","Kopyahin at ibahagi","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"FAQ","Frequently Asked Questions","","header","faq","header.faq","Preguntas más frecuentes","Preguntas frecuentes","Preguntas frecuentes","TRUE","Perguntas frequentes","Perguntas frequentes","Perguntas frequentes","TRUE","FAQ","Questions fréquentes","Questions fréquentes","TRUE","שאלות נפוצות","שאלות נפוצות","שאלות נפוצות","TRUE","التعليمات","","التعليمات","FALSE","सामान्य प्रश्न","सामान्य प्रश्न","सामान्य प्रश्न","TRUE","প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী","","প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী","FALSE","ସମ୍ଭାବିତ ପ୍ରଶ୍ନ","","ସମ୍ଭାବିତ ପ୍ରଶ୍ନ","FALSE","","FALSE","Часто задаваемые вопросы","Часто задаваемые вопросы","Часто задаваемые вопросы","TRUE","常问问题","","常问问题","FALSE","FAQ","","FAQ","FALSE","FAQ","Pertanyaan yang Sering Ditanyakan","Pertanyaan yang Sering Ditanyakan","TRUE","Maswali","Maswali yanayoulizwa mara kwa mara","Maswali yanayoulizwa mara kwa mara","TRUE","በየጥ","","በየጥ","FALSE","Hỏi đáp","","Hỏi đáp","FALSE","คำถามที่พบบ่อย","","คำถามที่พบบ่อย","FALSE","សំណួរគេសួរញឹកញាប់","","","","FAQ","","","","FAQ","Soalan Lazim","Soalan Lazim","TRUE","FAQ.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Invalid","Invalid email","","misc","invalid","misc.invalid","Inválido","Inválido","Inválido","TRUE","Inválido","Inválido","Inválido","TRUE","Invalide","Non valide","Non valide","TRUE","לא חוקי","לא תקף","לא תקף","TRUE","غير صالح","","غير صالح","FALSE","अमान्य","अमान्य","अमान्य","TRUE","অকার্যকর","","অকার্যকর","FALSE","ଅକର୍ମଣ୍ଯ","","ଅକର୍ମଣ୍ଯ","FALSE","","FALSE","Инвалид","Недействительный","Недействительный","TRUE","无效的","","无效的","FALSE","mara inganci","","mara inganci","FALSE","cacat","Tidak Valid","Tidak Valid","TRUE","batili","Halali","Halali","TRUE","ዋጋ ቢስ","","ዋጋ ቢስ","FALSE","không hợp lệ","","không hợp lệ","FALSE","โมฆะ","","โมฆะ","FALSE","មិនត្រឹមត្រូវ","","","","ບໍ່ຖືກຕ້ອງ","","","","tidak sah","Tidak sah","Tidak sah","TRUE","Hindi wasto","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Invite a Manager","","","contributors","invite_manager","contributors.invite_manager","Invitar a un administrador","Invitar a un administrador","Invitar a un administrador","TRUE","Convidar um gerente","Convidar um Gestor","Convidar um Gestor","TRUE","Inviter un gérant","Inviter un gérant","Inviter un gérant","TRUE","להזמין מנהל","הזמן מנהל","הזמן מנהל","TRUE","دعوة مدير","","دعوة مدير","FALSE","एक प्रबंधक को आमंत्रित करें","प्रबंधक को आमंत्रित करें","प्रबंधक को आमंत्रित करें","TRUE","একটি ম্যানেজার আমন্ত্রণ করুন","","একটি ম্যানেজার আমন্ত্রণ করুন","FALSE","ଏକ ପରିଚାଳକ ନିମନ୍ତ୍ରଣ","","ଏକ ପରିଚାଳକ ନିମନ୍ତ୍ରଣ","FALSE","","FALSE","Пригласить менеджера","Пригласить менеджера","Пригласить менеджера","TRUE","邀请经理","","邀请经理","FALSE","Gayyaci Manager","","Gayyaci Manager","FALSE","Undang Manajer","Undang seorang Pengelolah","Undang seorang Pengelolah","TRUE","Mualike Meneja","Alika Meneja","Alika Meneja","TRUE","አንድ አስተዳዳሪ ጋብዝ","","አንድ አስተዳዳሪ ጋብዝ","FALSE","Mời Giám đốc","","Mời Giám đốc","FALSE","เชิญผู้จัดการ","","เชิญผู้จัดการ","FALSE","អញ្ជើញអ្នកគ្រប់គ្រងមួយ","","","","ເຊີນ Manager ເປັນ","","","","Jemput pengurus yang","Undang Pengurus","Undang Pengurus","TRUE","Mag-imbita ng manager","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Write in Contributor","","","contributors","write_in_contributor","contributors.write_in_contributor","Escribir en colaborador","Escribir el nombre de un colaborador","Escribir el nombre de un colaborador","TRUE","Escrever em Contributor","Escrever em Contribuinte ","Escrever em Contribuinte ","TRUE","Ecrire dans Contributor","Écrire le nom d'un contributeur","Écrire le nom d'un contributeur","TRUE","כתוב ב 'תורם","כתוב את שם התורם","כתוב את שם התורם","TRUE","الكتابة في مساهم","","الكتابة في مساهم","FALSE","योगदानकर्ता में लिखें","","योगदानकर्ता में लिखें","FALSE","অবদানকারী লিখতে","","অবদানকারী লিখতে","FALSE","ଲେଖନ୍ତୁ ଯୋଗଦାନକାରୀ ରେ","","ଲେଖନ୍ତୁ ଯୋଗଦାନକାରୀ ରେ","FALSE","","FALSE","Написать в Загрузил","Напишите имя и фамилию участника.","Напишите имя и фамилию участника.","TRUE","写贡献者","","写贡献者","FALSE","Rubuta a bada gudummawa","","Rubuta a bada gudummawa","FALSE","Tulis di Kontributor","Tulis di bagian Kontributor","Tulis di bagian Kontributor","TRUE","Andika kwa Mchangiaji","Andika jina la Mchangiaji","Andika jina la Mchangiaji","TRUE","አበርካች ውስጥ ፃፍ","","አበርካች ውስጥ ፃፍ","FALSE","Viết trong Contributor","","Viết trong Contributor","FALSE","เขียนใน Contributor","","เขียนใน Contributor","FALSE","នៅក្នុងការសរសេររួម","","","","ຂຽນໃນ Contributor","","","","Tulis dalam Contributor","Tulis di Contributor","Tulis di Contributor","TRUE","Isulat sa kontribyutor.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Invitation sent","","","contributors","invitation_sent","contributors.invitation_sent","Invitación enviada","Invitación enviada","Invitación enviada","TRUE","sent convite","Convite enviado","Convite enviado","TRUE","Invitation envoyée","Invitation envoyée","Invitation envoyée","TRUE","הזמנה נשלחה","הזמנה נשלחה","הזמנה נשלחה","TRUE","دعوة التي وجهت","","دعوة التي وجهت","FALSE","निमंत्रण भेजा गया","निमंत्रण भेज दिया गया","निमंत्रण भेज दिया गया","TRUE","আমন্ত্রণ পাঠান","","আমন্ত্রণ পাঠান","FALSE","ପ୍ରେରଣ","","ପ୍ରେରଣ","FALSE","","FALSE","Приглашение отправлено","Отправленное приглашение","Отправленное приглашение","TRUE","邀请已发送","","邀请已发送","FALSE","gayyata aika","","gayyata aika","FALSE","undangan pengirimannya","Undangan terkirim","Undangan terkirim","TRUE","Invitation imetumwa","Mwaliko umetumwa","Mwaliko umetumwa","TRUE","ግብዣ ተልኳል","ግብዣ ተልኳል","ግብዣ ተልኳል","TRUE","lời mời được gửi đi","","lời mời được gửi đi","FALSE","ส่งคำเชิญ","","ส่งคำเชิญ","FALSE","ផ្ញើការអញ្ជើញ","","","","ເຊີນສົ່ງ","","","","Hantar jemputan","Undangan dihantar","Undangan dihantar","TRUE","Napadala na ang imbitasyon","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Invitation claimed","","","invite","invitation_claimed","invite.invitation_claimed","invitación reclamado","Invitación aceptada","Invitación aceptada","TRUE","convite afirmou","Convite reclamado","Convite reclamado","TRUE","invitation selon","Invitation acceptée","Invitation acceptée","TRUE","הזמנה טענה","ההזמנה התקבלה","ההזמנה התקבלה","TRUE","دعوة ادعى","","دعوة ادعى","FALSE","निमंत्रण का दावा किया","निमंत्रण स्वीकार किया गया","निमंत्रण स्वीकार किया गया","TRUE","আমন্ত্রণ দাবি","","আমন্ত্রণ দাবি","FALSE","ନିମନ୍ତ୍ରଣ ଦାବି","","ନିମନ୍ତ୍ରଣ ଦାବି","FALSE","","FALSE","Приглашение утверждал","Приглашение принято","Приглашение принято","TRUE","邀请函声称","","邀请函声称","FALSE","gayyata da'awa","","gayyata da'awa","FALSE","undangan diklaim","Undangan diklaim","Undangan diklaim","TRUE","Invitation alidai","Mwaliko umekubaliwa","Mwaliko umekubaliwa","TRUE","ግብዣ ይገባኛል","","ግብዣ ይገባኛል","FALSE","lời mời được khẳng định","","lời mời được khẳng định","FALSE","ขอเชิญอ้างว่า","","ขอเชิญอ้างว่า","FALSE","លិខិតអញ្ជើញបានអះអាងថា","","","","ເຊີນອ້າງ","","","","jemputan mendakwa","Undangan diisytiharkan","Undangan diisytiharkan","TRUE","Inaangkin ang imbitasyon","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Invalid Invitation","","","invite","invalid_invitation","invite.invalid_invitation","Invitación no válida","Invitación inválida","Invitación inválida","TRUE","Convite inválido","Convite Inválido ","Convite Inválido ","TRUE","Invitation non valide","Invitation non valide","Invitation non valide","TRUE","הזמנה לא חוקית","הזמנה לא חוקית","הזמנה לא חוקית","TRUE","دعوة غير صالحة","","دعوة غير صالحة","FALSE","अमान्य निमंत्रण","अमान्य निमंत्रण ","अमान्य निमंत्रण ","TRUE","অবৈধ আমন্ত্রণ","","অবৈধ আমন্ত্রণ","FALSE","ଅବୈଧ ଆମନ୍ତ୍ରଣ","","ଅବୈଧ ଆମନ୍ତ୍ରଣ","FALSE","","FALSE","Invalid Приглашение","Недействительное Приглашение","Недействительное Приглашение","TRUE","邀请无效","","邀请无效","FALSE","mara Gayyata","","mara Gayyata","FALSE","valid Undangan","Undagan Tidak Valid","Undagan Tidak Valid","TRUE","Invitation batili","Mwaliko halali","Mwaliko halali","TRUE","ልክ ያልሆነ ግብዣ","ልክ ያልሆነ ግብዣ","ልክ ያልሆነ ግብዣ","TRUE","Lời mời hợp lệ","","Lời mời hợp lệ","FALSE","ขอเชิญผู้ที่ไม่ถูกต้อง","","ขอเชิญผู้ที่ไม่ถูกต้อง","FALSE","លិខិតអញ្ជើញមិនត្រឹមត្រូវ","","","","ເຊີນບໍ່ຖືກຕ້ອງ","","","","tidak sah Jemputan","Undangan tidak sah","Undangan tidak sah","TRUE","Di-wastong imbitasyon","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Accept Invitation","","","invite","accept_invitation","invite.accept_invitation","Aceptar la invitacion","Aceptar invitación","Aceptar invitación","TRUE","aceitar convite","Aceitar Convite","Aceitar Convite","TRUE","Accepter l'invitation","Accepter l'invitation","Accepter l'invitation","TRUE","קבל הזמנה","קבל הזמנה","קבל הזמנה","TRUE","قبول دعوة","","قبول دعوة","FALSE","निमंत्रण स्वीकार करो","निमंत्रण स्वीकार करें","निमंत्रण स्वीकार करें","TRUE","আমন্ত্রণ গ্রহণ","","আমন্ত্রণ গ্রহণ","FALSE","ଆମନ୍ତ୍ରଣ ଗ୍ରହଣ","","ଆମନ୍ତ୍ରଣ ଗ୍ରହଣ","FALSE","","FALSE","Принять приглашение","Принять предложение","Принять предложение","TRUE","接受邀请","","接受邀请","FALSE","yarda da Gayyata","","yarda da Gayyata","FALSE","Menerima undangan","Menerima Undangan","Menerima Undangan","TRUE","Kubali Mwaliko","Kubali Mwaliko","Kubali Mwaliko","TRUE","ግብዣ ተቀበል","ግብዣ ተቀበል","ግብዣ ተቀበል","TRUE","Chấp nhận lời mời","","Chấp nhận lời mời","FALSE","ยอมรับคำเชิญ","","ยอมรับคำเชิญ","FALSE","ព្រមទទួលការអញ្ជើញ","","","","ຍອມຮັບການເຊື້ອເຊີນ","","","","Menerima jemputan","Terima undangan","Terima undangan","TRUE","Tanggapin ang imbitasyon","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Invited by","","","invite","invited_by","invite.invited_by","Invitado por","Invitado por","Invitado por","TRUE","Convidado por","Convidado por","Convidado por","TRUE","Inviter par","Invité par","Invité par","TRUE","הוזמן על ידי","הוזמן על ידי","הוזמן על ידי","TRUE","بدعوة من","","بدعوة من","FALSE","द्वारा आमंत्रित","........के द्वारा आमंत्रित","........के द्वारा आमंत्रित","TRUE","দ্বারা আমন্ত্রিত","","দ্বারা আমন্ত্রিত","FALSE","ଦ୍ବାରା ଆମନ୍ତ୍ରିତ","","ଦ୍ବାରା ଆମନ୍ତ୍ରିତ","FALSE","","FALSE","Приглашен","приглашённый","приглашённый","TRUE","通过邀请","","通过邀请","FALSE","gayyace ta","","gayyace ta","FALSE","Diundang oleh","Diundang oleh","Diundang oleh","TRUE","Umealikwa na","Umealikwa na","Umealikwa na","TRUE","ተጋብዘዋል","","ተጋብዘዋል","FALSE","mời","","mời","FALSE","ได้รับเชิญจาก","","ได้รับเชิญจาก","FALSE","អញ្ជើញដោយ","","","","ເຊີນໂດຍ","","","","dijemput oleh","Diundang oleh","Diundang oleh","TRUE","Inanyayahan ni.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Role","","","invite","role","invite.role","Papel","Rol","Rol","TRUE","Função","Função ","Função ","TRUE","Rôle","Rôle","Rôle","TRUE","תַפְקִיד","תַפְקִיד","תַפְקִיד","TRUE","دور","","دور","FALSE","भूमिका","भूमिका ","भूमिका ","TRUE","ভূমিকা","","ভূমিকা","FALSE","ଭୂମିକା","","ଭୂମିକା","FALSE","","FALSE","Роль","Роль","Роль","TRUE","角色","","角色","FALSE","Aikin","","Aikin","FALSE","Wewenang","Peran","Peran","TRUE","Wajibu","Wajibu","Wajibu","TRUE","ሚና","ሚና","ሚና","TRUE","Vai trò","","Vai trò","FALSE","บทบาท","","บทบาท","FALSE","តួនាទី","","","","ພາລະບົດບາດ","","","","peranan","Peranan","Peranan","TRUE","Tungkulin","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Next","","","misc","next","misc.next","próximo","Siguiente","Siguiente","TRUE","Próximo","A seguir","A seguir","TRUE","Suivant","Suivant","Suivant","TRUE","הַבָּא","הַבָּא","הַבָּא","TRUE","التالي","","التالي","FALSE","अगला","अगला","अगला","TRUE","পরবর্তী","","পরবর্তী","FALSE","ପରବର୍ତ୍ତୀ","","ପରବର୍ତ୍ତୀ","FALSE","","FALSE","Следующий","Следующий","Следующий","TRUE","下一个","","下一个","FALSE","Daga nan","","Daga nan","FALSE","Lanjut","Selanjutnya","Selanjutnya","TRUE","Ijayo","Ifuatayo","Ifuatayo","TRUE","ቀጥሎም","","ቀጥሎም","TRUE","Kế tiếp","","Kế tiếp","FALSE","ต่อไป","","ต่อไป","FALSE","បន្ទាប់បិនេហ","","","","ຖັດໄປ","","","","Seterusnya","Berikut","Berikut","TRUE","Susunod","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Translators","","","about","translators","about.translators","Traductores","Traductores","Traductores","TRUE","Tradutores","Tradutores","Tradutores","TRUE","Traducteur","Traducteurs","Traducteurs","TRUE","מתרגמים","הערה: ""מנהלים"" במילון רשאים להוסיף, לערוך או למחוק תוכן. ""תורמים"" יכולים גם להוסיף ולערוך, אך אינם יכולים למחוק שום תוכן.","מתרגמים","TRUE","المترجمين","","المترجمين","FALSE","अनुवादकों","अनुवादक (कों) ","अनुवादक (कों) ","TRUE","অনুবাদকদের","","অনুবাদকদের","FALSE","ଅନୁବାଦକ","","ଅନୁବାଦକ","FALSE","","FALSE","Переводчики","Переводчики","Переводчики","TRUE","译者","","译者","FALSE","Maimaitawa","","Maimaitawa","FALSE","Penerjemah","Penerjemah","Penerjemah","TRUE","Watafsiri","Watafsiri","Watafsiri","TRUE","ተርጓሚዎች","","ተርጓሚዎች","FALSE","Dịch giả","","Dịch giả","FALSE","ผู้แปล","","ผู้แปล","FALSE","ប៍ហរអារករ","","","","ແປພາສາ","","","","Penterjemah","Penterjemah","Penterjemah","TRUE","Mga Tagasalin","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Note: Dictionary managers may add, edit or delete content. Contributors are project collaborators who can also add and edit, but cannot delete any content.","","","contributors","manager_contributor_distinction","contributors.manager_contributor_distinction","Nota: Los gestores de diccionarios pueden agregar, editar o eliminar contenido. Los contribuyentes son colaboradores de proyectos que también pueden agregar y editar, pero no pueden eliminar ningún contenido.","Nota: Los ""administradores"" de diccionarios pueden añadir, editar o eliminar datos. ""Colaboradores"" también pueden añadir y editar, pero no pueden eliminar datos.","Nota: Los ""administradores"" de diccionarios pueden añadir, editar o eliminar datos. ""Colaboradores"" también pueden añadir y editar, pero no pueden eliminar datos.","TRUE","Nota: Os gerentes de dicionário podem adicionar, editar ou excluir conteúdo. Colaboradores são colaboradores de projetos que também podem adicionar e editar, mas não podem excluir qualquer conteúdo.","Nota: gestores dicionário pode adicionar, editar ou conteúdo de exclusão. Contribuintes são colaboradores do projeto que também pode adicionar e editar, mas não pode excluir qualquer conteúdo.","Nota: gestores dicionário pode adicionar, editar ou conteúdo de exclusão. Contribuintes são colaboradores do projeto que também pode adicionar e editar, mas não pode excluir qualquer conteúdo.","TRUE","Remarque: Les gestionnaires de dictionnaires peuvent ajouter, modifier ou supprimer du contenu. Les contributeurs sont des collaborateurs de projets qui peuvent également ajouter et modifier, mais ne peuvent supprimer aucun contenu.","Nota bene: les ""gérants"" de dictionnaires peuvent ajouter, modifier ou supprimer du contenu. Les ""collaborateurs"" sont des participants de projet qui peuvent également ajouter et modifier du contenu, mais ne peuvent pas le supprimer.","Nota bene: les ""gérants"" de dictionnaires peuvent ajouter, modifier ou supprimer du contenu. Les ""collaborateurs"" sont des participants de projet qui peuvent également ajouter et modifier du contenu, mais ne peuvent pas le supprimer.","TRUE","הערה: מנהלי מילון עשויים להוסיף, לערוך או למחוק תוכן. התורמים הם משתפי פעולה בפרויקט שיכולים גם להוסיף ולערוך, אך לא ניתן למחוק תוכן כלשהו.","","הערה: ""מנהלים"" במילון רשאים להוסיף, לערוך או למחוק תוכן. ""תורמים"" יכולים גם להוסיף ולערוך, אך אינם יכולים למחוק שום תוכן.","TRUE","ملاحظة: قد يضيف مديرو القاموس أو تحرير المحتوى أو حذفه. المساهمون هم متعاونون المشروع الذين يمكنهم أيضا إضافة وتحرير، ولكن لا يمكن حذف أي محتوى.","","ملاحظة: قد يضيف مديرو القاموس أو تحرير المحتوى أو حذفه. المساهمون هم متعاونون المشروع الذين يمكنهم أيضا إضافة وتحرير، ولكن لا يمكن حذف أي محتوى.","FALSE","नोट: शब्दकोश प्रबंधक सामग्री जोड़, संपादित या हटा सकते हैं। योगदानकर्ता परियोजना सहयोगी हैं जो जोड़ और संपादित भी कर सकते हैं, लेकिन किसी भी सामग्री को हटा नहीं सकते हैं।","टिप्पणीः शब्दकोश के प्रबंधक विषय वस्तुओं को जोड़, संपादित या हटा सकते हैं। योगदानकर्ता, जो परियोजना के सहयोगी हैं, विषय वस्तुओं को जोड़ और संपादित कर सकते हैं परंतु हटा नहीं सकते हैं। ","टिप्पणीः शब्दकोश के प्रबंधक विषय वस्तुओं को जोड़, संपादित या हटा सकते हैं। योगदानकर्ता, जो परियोजना के सहयोगी हैं, विषय वस्तुओं को जोड़ और संपादित कर सकते हैं परंतु हटा नहीं सकते हैं। ","TRUE","দ্রষ্টব্য: অভিধান পরিচালক যুক্ত, সম্পাদনা বা মুছে ফেলতে পারে। অবদানকারীরা প্রকল্প সহযোগীদের যারা যোগ এবং সম্পাদনা করতে পারে, তবে কোনও সামগ্রী মুছে ফেলতে পারে না।","","দ্রষ্টব্য: অভিধান পরিচালক যুক্ত, সম্পাদনা বা মুছে ফেলতে পারে। অবদানকারীরা প্রকল্প সহযোগীদের যারা যোগ এবং সম্পাদনা করতে পারে, তবে কোনও সামগ্রী মুছে ফেলতে পারে না।","FALSE","ଟିପନ୍ତୁ: ଅଭିଧାନ ପରିଚାଳକମାନେ ବିଷୟବସ୍ତୁ ଯୋଗ କରିପାରନ୍ତି, କିମ୍ବା ବିଲୋପ କରିପାରିବେ | ଅବଦାନକାରୀମାନେ ପ୍ରୋଜେକ୍ଟ ହମ୍ବିବେ ଡ୍ରାଇଭର ବ୍ୟକ୍ତିର ମଧ୍ୟ ଯୋଗ ଏବଂ ସମ୍ପାଦନା କରିପାରିବେ, କିନ୍ତୁ କ content ଣସି ବିଷୟବସ୍ତୁ ବିଲୋପ କରିପାରିବେ ନାହିଁ |","","ଟିପନ୍ତୁ: ଅଭିଧାନ ପରିଚାଳକମାନେ ବିଷୟବସ୍ତୁ ଯୋଗ କରିପାରନ୍ତି, କିମ୍ବା ବିଲୋପ କରିପାରିବେ | ଅବଦାନକାରୀମାନେ ପ୍ରୋଜେକ୍ଟ ହମ୍ବିବେ ଡ୍ରାଇଭର ବ୍ୟକ୍ତିର ମଧ୍ୟ ଯୋଗ ଏବଂ ସମ୍ପାଦନା କରିପାରିବେ, କିନ୍ତୁ କ content ଣସି ବିଷୟବସ୍ତୁ ବିଲୋପ କରିପାରିବେ ନାହିଁ |","FALSE","","FALSE","Примечание. Руководители словаря могут добавлять, редактировать или удалять контент. Вкладчики являются сотрудниками проекта, которые также могут добавлять и редактировать, но не могут удалить любой контент.","Примечание: словарь ""менеджеры"" может добавлять, редактировать или удалять контент. ""Авторы"" также могут добавлять и редактировать, но не могут удалять контент.","Примечание: словарь ""менеджеры"" может добавлять, редактировать или удалять контент. ""Авторы"" также могут добавлять и редактировать, но не могут удалять контент.","TRUE","注意:字典管理器可以添加,编辑或删除内容。贡献者是项目协作者,也可以添加和编辑,但无法删除任何内容。","","注意:字典管理器可以添加,编辑或删除内容。贡献者是项目协作者,也可以添加和编辑,但无法删除任何内容。","FALSE","SAURARA: Kifi na iya ƙarawa, shirya ko share abubuwan da ke ciki. Masu ba da gudummawar aikin suna aiki da aikin waɗanda za su iya ƙarawa da shirya, amma ba za su iya share kowane abun ciki ba.","","SAURARA: Kifi na iya ƙarawa, shirya ko share abubuwan da ke ciki. Masu ba da gudummawar aikin suna aiki da aikin waɗanda za su iya ƙarawa da shirya, amma ba za su iya share kowane abun ciki ba.","FALSE","Catatan: Manajer kamus dapat menambah, mengedit atau menghapus konten. Kontributor adalah kolaborator proyek yang juga dapat menambah dan mengedit, tetapi tidak dapat menghapus konten apa pun.","Catatan: Pengelola kamus boleh menambahkan, menyunting atau menghapus konten. Kontributor adalah kolaborator proyek yang dapat menambahkan dan mengedit konten, namun tidak dapat menghapus konten apapun.","Catatan: Pengelola kamus boleh menambahkan, menyunting atau menghapus konten. Kontributor adalah kolaborator proyek yang dapat menambahkan dan mengedit konten, namun tidak dapat menghapus konten apapun.","TRUE","Kumbuka: Wasimamizi wa kamusi wanaweza kuongeza, hariri au kufuta maudhui. Washiriki ni washirika wa mradi ambao wanaweza pia kuongeza na kuhariri, lakini hawawezi kufuta maudhui yoyote.","Kumbuka: ""Mameneja"" wa Kamusi wanaweza kuongeza, kuhariri au kufuta yaliyomo. ""Wachangiaji"" wanaweza pia kuongeza na kuhariri, lakini hawawezi kufuta yaliyomo yoyote.","Kumbuka: ""Mameneja"" wa Kamusi wanaweza kuongeza, kuhariri au kufuta yaliyomo. ""Wachangiaji"" wanaweza pia kuongeza na kuhariri, lakini hawawezi kufuta yaliyomo yoyote.","TRUE","ማሳሰቢያ-መዝገበ-ቃላት አስተዳዳሪዎች ይዘቶችን ማከል, ማርትዕ ወይም ይሰርዙ ይችላሉ. አስተዋጽ conters ዎች እንዲሁ ማከል እና ማረም የሚችሉት የፕሮጀክት ተባባሪዎች ናቸው, ግን ማንኛውንም ይዘት መሰረዝ አይችሉም.","","ማሳሰቢያ-መዝገበ-ቃላት አስተዳዳሪዎች ይዘቶችን ማከል, ማርትዕ ወይም ይሰርዙ ይችላሉ. አስተዋጽ conters ዎች እንዲሁ ማከል እና ማረም የሚችሉት የፕሮጀክት ተባባሪዎች ናቸው, ግን ማንኛውንም ይዘት መሰረዝ አይችሉም.","FALSE","Lưu ý: Người quản lý từ điển có thể thêm, chỉnh sửa hoặc xóa nội dung. Những người đóng góp là những cộng tác viên dự án cũng có thể thêm và chỉnh sửa, nhưng không thể xóa bất kỳ nội dung nào.","","Lưu ý: Người quản lý từ điển có thể thêm, chỉnh sửa hoặc xóa nội dung. Những người đóng góp là những cộng tác viên dự án cũng có thể thêm và chỉnh sửa, nhưng không thể xóa bất kỳ nội dung nào.","FALSE","หมายเหตุ: ผู้จัดการพจนานุกรมอาจเพิ่มแก้ไขหรือลบเนื้อหา ผู้มีส่วนร่วมเป็นผู้ทำงานร่วมกันของโครงการที่สามารถเพิ่มและแก้ไขได้ แต่ไม่สามารถลบเนื้อหาใด ๆ ได้","","หมายเหตุ: ผู้จัดการพจนานุกรมอาจเพิ่มแก้ไขหรือลบเนื้อหา ผู้มีส่วนร่วมเป็นผู้ทำงานร่วมกันของโครงการที่สามารถเพิ่มและแก้ไขได้ แต่ไม่สามารถลบเนื้อหาใด ๆ ได้","FALSE","សម្គាល់ៈអ្នកគ្រប់គ្រងវចនានុក្រមអាចបន្ថែមកែសម្រួលមាតិកាឬលុបមាតិកា។ អ្នកចូលរួមគឺអ្នកសហការគម្រោងដែលអាចបន្ថែមនិងកែសម្រួលបានប៉ុន្តែមិនអាចលុបមាតិកាណាមួយបានទេ។","","","","ຫມາຍເຫດ: ຈັດ Dictionary ອາດຈະເພີ່ມ, ແກ້ໄຂຫຼືເນື້ອລຶບ. ການປະກອບສ່ວນມີການຮ່ວມມືໂຄງການທີ່ສາມາດເພີ່ມແລະແກ້ໄຂ, ແຕ່ບໍ່ສາມາດລຶບເນື້ອຫາໃດໆ.","","","","Nota: pengurus Kamus boleh tambah, edit atau kandungan padam. Penyumbang rakan usaha sama projek yang juga boleh menambah dan mengedit, tetapi tidak boleh memadam mana-mana kandungan.","Nota: Para pengurus kamus boleh menambah, mengedit atau memadam kandungan. Para penyumbang merupakan rakan usaha sama projek yang juga boleh menambah dan mengedit, tetapi tidak boleh memadam sebarang kandungan.","Nota: Para pengurus kamus boleh menambah, mengedit atau memadam kandungan. Para penyumbang merupakan rakan usaha sama projek yang juga boleh menambah dan mengedit, tetapi tidak boleh memadam sebarang kandungan.","TRUE","Tandaan: Maaaring magdagdag ng mga tagapamahala ng diksyunaryo, i-edit o tanggalin ang nilalaman. Ang mga kontribyutor ay mga collaborator ng proyekto na maaari ring magdagdag at mag-edit, ngunit hindi maaaring tanggalin ang anumang nilalaman.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Source","(credit for where an entry came from, like a print dictionary)","","entry","sr","entry.sr","Fuente","Fuente","Fuente","TRUE","Fonte","","Fonte","TRUE","La source","Source","Source","TRUE","מָקוֹר","","מָקוֹר","FALSE","مصدر","","مصدر","FALSE","स्रोत","स्रोत","स्रोत","TRUE","উৎস","","উৎস","FALSE","ଉତ୍ସ","","ଉତ୍ସ","FALSE","","FALSE","Источник","","Источник","FALSE","来源","","来源","FALSE","Mafari","","Mafari","FALSE","Sumber","Sumber","Sumber","TRUE","Chanzo","","Chanzo","FALSE","ምንጭ","ምንጭ","ምንጭ","TRUE","Nguồn.","","Nguồn.","FALSE","แหล่งที่มา","","แหล่งที่มา","FALSE","របផប","","","","ແຫຼ່ງຂໍ້ມູນ","","","","sumber","Sumber","Sumber","TRUE","Pinagmulan","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Example Sentence","","","entry","example_sentence","entry.example_sentence","Oración de ejemplo","Frase ejemplar","Frase ejemplar","TRUE","Exemplos de sentença","exemplo frase","exemplo frase","TRUE","Exemple de phrase","exemple de phrase","exemple de phrase","TRUE","משפט לדוגמה","","משפט לדוגמה","FALSE","جملة مثال","","جملة مثال","FALSE","उदाहरण वाक्य","वाक्य, उदाहरण के तौर पर ","वाक्य, उदाहरण के तौर पर ","TRUE","উদাহরণ বাক্য","","উদাহরণ বাক্য","FALSE","ଉଦାହରଣ ବାକ୍ୟ","","ଉଦାହରଣ ବାକ୍ୟ","FALSE","","FALSE","Пример предложения","","Пример предложения","FALSE","例句","","例句","FALSE","Talata jumla","","Talata jumla","FALSE","Contoh kalimat","Contoh Kalimat","Contoh Kalimat","TRUE","Sentensi ya mfano","","Sentensi ya mfano","FALSE","ምሳሌ","ምሳሌ አረፍተነገር","ምሳሌ አረፍተነገር","TRUE","Câu ví dụ","","Câu ví dụ","FALSE","ตัวอย่างประโยค","","ตัวอย่างประโยค","FALSE","ប្រយោគឧទាហរណ៍","","","","ຕົວຢ່າງປະໂຍກ","","","","contoh Ayat","Ayat contoh","Ayat contoh","TRUE","Halimbawang pangungusap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" \ No newline at end of file diff --git a/scripts/Glossing-Languages.csv b/scripts/Glossing-Languages.csv new file mode 100644 index 000000000..6b22bc8d9 --- /dev/null +++ b/scripts/Glossing-Languages.csv @@ -0,0 +1,342 @@ +"en","vernacularName","vernacularAlternate","key","internalName","showKeyboard","useKeyboard","notes","Spanish","write-in","es","✓","Portuguese","write-in","pt","✓","French","write-in","fr","✓","Hebrew","write-in","he","✓","Arabic","write-in","ar","✓","Hindi","write-in","hi","✓","Bengali","write-in","bn","✓","Oriya","write-in","or","✓","as","✓","Indonesian","write-in","id","✓","Russian","write-in","ru","✓","Mandarin Chinese (simplified)","write-in","zh","✓","Hausa","write-in","ha","✓","Swahili","write-in","sw","✓","Amharic","write-in","am","✓","Thai","write-in","th","✓","Malay","write-in","ms","✓","Filipino","write-in","fil","✓","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"English","","","en","Keyboard_us","","","","Inglés","inglés","inglés","TRUE","Inglês","Inglês","Inglês","TRUE","Anglais","Anglais","Anglais","TRUE","אנגלית","","אנגלית","TRUE","الإنجليزية","الإنجليزية","الإنجليزية","FALSE","अंग्रेज़ी","","अंग्रेज़ी","FALSE","ইংরেজি","ইংরেজি","ইংরেজি","TRUE","ଇଂରାଜୀ","","ଇଂରାଜୀ","FALSE","","FALSE","Inggris","Bahasa Inggris","Bahasa Inggris","TRUE","английский","","английский","TRUE","英语","","英语","FALSE","Turanci","","Turanci","FALSE","english","Kingereza","Kingereza","TRUE","እንግሊዝኛ","እንግሊዝኛ","እንግሊዝኛ","TRUE","ภาษาอังกฤษ","","ภาษาอังกฤษ","FALSE","Bahasa Inggeris","Bahasa Inggeris","Bahasa Inggeris","TRUE","Ingles","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Abkhaz","аҧсуа бызшәа","","ab","","","","","abkhaz","","abkhaz","FALSE","Abkhaz","Abkhaz","Abkhaz","TRUE","abkhaze","","abkhaze","FALSE","אבחזיה","","אבחזיה","FALSE","الأبخازية","","الأبخازية","FALSE","Abkhaz","","Abkhaz","FALSE","Abkhaz","আবখাজ","আবখাজ","TRUE","Abkhaz","","Abkhaz","FALSE","","FALSE","Abkhazia","Bahasa Abkhazia","Bahasa Abkhazia","TRUE","абхазская","абхазский","абхазский","TRUE","阿布哈兹","","阿布哈兹","FALSE","Abkhaz","","Abkhaz","FALSE","Abkhaz","Kiabkhazi","Kiabkhazi","TRUE","አብክሃዝ","አብክሃዝኛ","አብክሃዝኛ","TRUE","abkhaz","","abkhaz","FALSE","Abkhaz","Bahasa Abkhaz","Bahasa Abkhaz","TRUE","Abkhaz","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Acehnese","Basa Acèh","","ace","","","","","acehneses","","acehneses","FALSE","Aceh","Achinês","Achinês","TRUE","acehnaise","","acehnaise","FALSE","אצ'ה","","אצ'ה","FALSE","آتشيه","","آتشيه","FALSE","Acehnese","","Acehnese","FALSE","আসেনিজ","এসেনীজ","এসেনীজ","TRUE","Acehnese","","Acehnese","FALSE","","FALSE","Aceh","Bahasa Aceh","Bahasa Aceh","TRUE","Ачеха","ачехский","ачехский","TRUE","亚齐","","亚齐","FALSE","Acehnese","","Acehnese","FALSE","Acehnese","Acehnese","Acehnese","TRUE","Acehnese","አቸኒዝኛ","አቸኒዝኛ","TRUE","ชาวเอเจน","","ชาวเอเจน","FALSE","Aceh.","Bahasa Aceh","Bahasa Aceh","TRUE","Acehnese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Acholi","Lwo","","ach","","","","","Acholi","","Acholi","FALSE","Acholi","Acholi","Acholi","TRUE","Acholi","","Acholi","FALSE","אצ'ולי","","אצ'ולי","FALSE","الأشولي","","الأشولي","FALSE","Acholi","","Acholi","FALSE","অচঁলি","অচলি","অচলি","TRUE","Acholi","","Acholi","FALSE","","FALSE","Acholi","Bahasa Acholi","Bahasa Acholi","TRUE","Acholi","ачоли","ачоли","TRUE","阿乔利","","阿乔利","FALSE","Acholi","","Acholi","FALSE","Acholi","Kiacholi","Kiacholi","TRUE","Acholi","አቾሊኛ","አቾሊኛ","TRUE","acholi","","acholi","FALSE","Acholi","Bahasa Acholi","Bahasa Acholi","TRUE","Acholi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Afar","Qafaraf","Afaraf","aa","","","","","Lejos","","Lejos","FALSE","Longe","Afar","Afar","TRUE","Au loin","","Au loin","FALSE","אפאר","","אפאר","FALSE","بعيدا","","بعيدا","FALSE","दूर","","दूर","FALSE","দূরে","আফার","আফার","TRUE","ଦୂର","","ଦୂର","FALSE","","FALSE","Jauh","Bahasa Afar","Bahasa Afar","TRUE","издалека","афарский","афарский","TRUE","远","","远","FALSE","nesa","","nesa","FALSE","Afar","Kiafari","Kiafari","TRUE","አፋር","አፋርኛ","አፋርኛ","TRUE","ไกล","","ไกล","FALSE","Jauh","Bahasa Afar","Bahasa Afar","TRUE","Afar","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Afrikaans","","","af","Keyboard_european","","","","africaans","afrikáans","afrikáans","TRUE","afrikaans","Afrikaans","Afrikaans","TRUE","afrikaans","Afrikaans","Afrikaans","TRUE","אפריקאנס","","אפריקאנס","TRUE","الأفريكانية","الأفريقانية","الأفريقانية","FALSE","अफ्रीकी","","अफ्रीकी","FALSE","আফ্রিকান্স","আফ্রিকান","আফ্রিকান","TRUE","Afrikaans","","Afrikaans","FALSE","","FALSE","Afrikanas","Bahasa Afrikanas","Bahasa Afrikanas","TRUE","африкаанс","","африкаанс","TRUE","南非荷兰语","","南非荷兰语","FALSE","Afirkanci","","Afirkanci","FALSE","Afrikaans","Kiafrikaans","Kiafrikaans","TRUE","አፍሪካንስ","አፍሪካንስ","አፍሪካንስ","TRUE","ชาวแอฟริกัน","","ชาวแอฟริกัน","FALSE","Afrikaans.","Bahasa Afrikaans","Bahasa Afrikaans","TRUE","Afrikaans.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Akan","Akan","","ak","","","","","Akan","","Akan","FALSE","Akan","Acã","Acã","TRUE","Akan","","Akan","FALSE","אקאן","","אקאן","FALSE","اكان","","اكان","FALSE","अकान","","अकान","FALSE","আকান","আকান","আকান","TRUE","ଅକନ୍","","ଅକନ୍","FALSE","","FALSE","akan","Bahasa Akan","Bahasa Akan","TRUE","Акан","акан","акан","TRUE","阿寒湖","","阿寒湖","FALSE","Akan","","Akan","FALSE","Akan","Kiakani","Kiakani","TRUE","አካንኛ","አካንኛ","አካንኛ","TRUE","akan","","akan","FALSE","Akan","Bahasa Akan","Bahasa Akan","TRUE","Akan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Aklanon (Akeanon)","Inakeanon","","akl","","","","","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","Aklanon (Akeanon)","Aklan","Aklan","TRUE","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","Aklanon, (Akeanon)","আকলানন (আকানন)","আকলানন (আকানন)","TRUE","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","","FALSE","Aklanon (Akeanon)","Bahasa Aklanon (Akeanon)","Bahasa Aklanon (Akeanon)","TRUE","Aklanon (Akeanon)","акланон","акланон","TRUE","Aklanon(Akeanon)","","Aklanon(Akeanon)","FALSE","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","Aklanon (Akeanon)","Aklanon","Aklanon","TRUE","Aklanon (Akeanon)","አክላኖንኛ","አክላኖንኛ","TRUE","Aklanon (Akeanon)","","Aklanon (Akeanon)","FALSE","Aklanon (Akeanon)","Bahasa Aklanon (Akeanon)","Bahasa Aklanon (Akeanon)","TRUE","Aklanon (Akean)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Albanian","gjuha shqipe","","sq","","","","","albanés","","albanés","FALSE","albanês","Albanês","Albanês","TRUE","albanais","","albanais","FALSE","אלבני","","אלבני","FALSE","الألبانية","","الألبانية","FALSE","अल्बानियन","","अल्बानियन","FALSE","আলবেনীয়","আল্বানী","আল্বানী","TRUE","ଆଲବାନିଆନ୍","","ଆଲବାନିଆନ୍","FALSE","","FALSE","bahasa Albania","Bahasa Albania","Bahasa Albania","TRUE","албанский","","албанский","TRUE","阿尔巴尼亚人","","阿尔巴尼亚人","FALSE","Albanian","","Albanian","FALSE","Kialbeni","Kialbania","Kialbania","TRUE","አልበንያኛ","አልበንያኛ","አልበንያኛ","TRUE","ชาวแอลเบเนีย","","ชาวแอลเบเนีย","FALSE","Albania.","Bahasa Albania","Bahasa Albania","TRUE","Albanian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Amharic","አማርኛ","Amarəñña","am","Keyboard_gff_amharic","true","","","amárico","amhárico","amhárico","TRUE","amárico","Amárica","Amárica","TRUE","amharique","Amharique","Amharique","TRUE","אמהרית","","אמהרית","TRUE","الأمهرية","الأمهرية","الأمهرية","FALSE","अम्हारिक्","","अम्हारिक्","FALSE","আমহারিক","আমহারি","আমহারি","TRUE","ଆମହାରିକ୍","","ଆମହାରିକ୍","FALSE","","FALSE","Amharic","Bahasa Amharic","Bahasa Amharic","TRUE","амхарский","","амхарский","TRUE","阿姆哈拉语","","阿姆哈拉语","FALSE","Amharic","","Amharic","FALSE","Kiamhari","Kiamhari","Kiamhari","TRUE","አማርኛ","አማርኛ","አማርኛ","TRUE","เกี่ยวกับอัมฮาริก","","เกี่ยวกับอัมฮาริก","FALSE","Amharic.","Bahasa Amhara","Bahasa Amhara","TRUE","Amharic.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Arabic","العَرَبِيَّة‎","","ar","Keyboard_sil_arabic_phonetic","true","","Keyboard__arabic_izza didn't work","Arábica","árabe","árabe","TRUE","árabe","Árabe","Árabe","TRUE","arabe","Arabe","Arabe","TRUE","עֲרָבִית","ערבית","ערבית","TRUE","عربى","العربية","العربية","FALSE","अरबी","","अरबी","FALSE","আরবি","আরবি","আরবি","TRUE","ଆରବୀୟ","","ଆରବୀୟ","FALSE","","FALSE","Arab","Bahasa Arab","Bahasa Arab","TRUE","арабский","","арабский","TRUE","阿拉伯","","阿拉伯","FALSE","Larabci","","Larabci","FALSE","Kiarabu","Kiarabu","Kiarabu","TRUE","አረብኛ","አረብኛ","አረብኛ","TRUE","เกี่ยวกับภาษาอาหรับ","","เกี่ยวกับภาษาอาหรับ","FALSE","Arabic.","Bahasa Arab","Bahasa Arab","TRUE","Arabic.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Armenian","Հայերէն","","hy","","","","","armenio","","armenio","FALSE","armênio","Arménio","Arménio","TRUE","arménien","","arménien","FALSE","אַרְמֶנִי","","אַרְמֶנִי","FALSE","الأرميني","","الأرميني","FALSE","अर्मेनियाई","","अर्मेनियाई","FALSE","আর্মেনিয়","আরমেনিয়ার ভাষা","আরমেনিয়ার ভাষা","TRUE","ଆର୍ମେନିଆନ୍","","ଆର୍ମେନିଆନ୍","FALSE","","FALSE","Armenia","Bahasa Armenia","Bahasa Armenia","TRUE","армянин","армянский","армянский","TRUE","亚美尼亚","","亚美尼亚","FALSE","Armenian","","Armenian","FALSE","armenian","Kiarmenia","Kiarmenia","TRUE","አርመንያኛ","አርመንያኛ","አርመንያኛ","TRUE","เกี่ยวกับอาร์เมเนีย","","เกี่ยวกับอาร์เมเนีย","FALSE","Armenia","Bahasa Armenia","Bahasa Armenia","TRUE","Armenian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Assamese","অসমীয়া","Asamiya","as","Keyboard_isis_bangla","true","","","assamese","asamés","asamés","TRUE","assamese","Assamês","Assamês","TRUE","assamais","Assamais","Assamais","TRUE","אסמית","","אסמית","TRUE","الأسامية","الآسامية","الآسامية","FALSE","असमिया","","असमिया","FALSE","অসমিয়া","অসমীয়া","অসমীয়া","TRUE","Assamese","","Assamese","FALSE","","FALSE","Assam","Bahasa Assam","Bahasa Assam","TRUE","Ассамский","ассамский","ассамский","TRUE","阿萨姆","","阿萨姆","FALSE","Harshen Assam","","Harshen Assam","FALSE","Kiassam","Kiassamu","Kiassamu","TRUE","አሰሚስ","አሳሚስኛ","አሳሚስኛ","TRUE","ชาวอัสสัม","","ชาวอัสสัม","FALSE","Assamese.","Bahasa Assam","Bahasa Assam","TRUE","Assamese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Avar","Магӏарул мацӏ ","Авар мацӏ","av","","","","","Avar","","Avar","FALSE","Avar","Ávaro","Ávaro","TRUE","avar","","avar","FALSE","AVAR","","AVAR","FALSE","أفار","","أفار","FALSE","Avar","","Avar","FALSE","Avar","আভর","আভর","TRUE","Avar","","Avar","FALSE","","FALSE","Avar","Bahasa Avar","Bahasa Avar","TRUE","Авар","аварский","аварский","TRUE","阿瓦尔","","阿瓦尔","FALSE","Avar","","Avar","FALSE","Avar","Kiavar","Kiavar","TRUE","Avar","አቫርኛ","አቫርኛ","TRUE","อื้ออึง","","อื้ออึง","FALSE","Avar","Bahasa Avar","Bahasa Avar","TRUE","Avar.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Aymara","Aymar aru","","ay","Keyboard_european2","","","","aimara","aimara","aimara","TRUE","Aymara","Aimará","Aimará","TRUE","Aymara","Aymara","Aymara","TRUE","איימארית","","איימארית","TRUE","الأيمارا","الأَيْمَرِيَّة","الأَيْمَرِيَّة","FALSE","आयमारा","","आयमारा","FALSE","আয়মারা","আয়মারা","আয়মারা","TRUE","ଆୟମାରା","","ଆୟମାରା","FALSE","","FALSE","Aymara","Bahasa Aymara","Bahasa Aymara","TRUE","аймара","","аймара","TRUE","艾马拉","","艾马拉","FALSE","Aymara","","Aymara","FALSE","Aimara","Kiaimara","Kiaimara","TRUE","አይማራ","አይማራኛ","አይማራኛ","TRUE","อุการ้าว","","อุการ้าว","FALSE","Aymara","Bahasa Aymara","Bahasa Aymara","TRUE","Aymara.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Azeri","Azərbaycan dili/Aзәрбајҹан дили","آذربايجانجا ديلي","az","","","","","azerí","","azerí","FALSE","Azeri","Azeri","Azeri","TRUE","azéri","","azéri","FALSE","אזור","","אזור","FALSE","اذربيجان","","اذربيجان","FALSE","अज़ेरी","","अज़ेरी","FALSE","আজেরি","আজারি","আজারি","TRUE","ଆଜେରି","","ଆଜେରି","FALSE","","FALSE","Azeri","Bahasa Azeri","Bahasa Azeri","TRUE","Azeri","азербайджанский","азербайджанский","TRUE","里人","","里人","FALSE","Azerbaijan","","Azerbaijan","FALSE","Azeri","Kiazeri","Kiazeri","TRUE","የአዜሪ","አዜሪኛ","አዜሪኛ","TRUE","อาเซอร์เอว","","อาเซอร์เอว","FALSE","Azeri","Bahasa Azeri","Bahasa Azeri","TRUE","Azeri.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bakumpai","Bara-Jida","Bakambai","bkr","","","","","Bakumpai","","Bakumpai","FALSE","Bakumpai","Bakumpai","Bakumpai","TRUE","Bakumpai","","Bakumpai","FALSE","Bakumpai","","Bakumpai","FALSE","Bakumpai","","Bakumpai","FALSE","Bakumpai","","Bakumpai","FALSE","Bakumpai","বাকুমপাই","বাকুমপাই","TRUE","Bakumpai","","Bakumpai","FALSE","","FALSE","Bakumpai","Bahasa Bakumpai","Bahasa Bakumpai","TRUE","Bakumpai","бакумпай","бакумпай","TRUE","Bakumpai","","Bakumpai","FALSE","Bakumpai","","Bakumpai","FALSE","Bakumpai","Bakumpai","Bakumpai","TRUE","Bakumpai","ባኩምባይኛ","ባኩምባይኛ","TRUE","Bakumpai","","Bakumpai","FALSE","Bakumpai.","Bahasa Bakumpai","Bahasa Bakumpai","TRUE","Bakumpai.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Balinese","Basa Bali","","ban","","","","","balinés","","balinés","FALSE","balinesa","Balinês","Balinês","TRUE","Balinais","","Balinais","FALSE","באלינזי","","באלינזי","FALSE","البالية","","البالية","FALSE","बाली","","बाली","FALSE","বালিনীয়","বালিনি","বালিনি","TRUE","Balinese","","Balinese","FALSE","","FALSE","Bali","Bahasa Bali","Bahasa Bali","TRUE","балийском","балийский","балийский","TRUE","巴厘","","巴厘","FALSE","Harshen Bali","","Harshen Bali","FALSE","Balinese","Balinizi","Balinizi","TRUE","ባሊኒዝ","ባሊኒዝኛ","ባሊኒዝኛ","TRUE","บาหลี","","บาหลี","FALSE","Bali.","Bahasa Bali","Bahasa Bali","TRUE","Balinese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Balochi","بلۏچی"," Balòci","bal","","","","","balochi","","balochi","FALSE","Balochi","Balúchi","Balúchi","TRUE","baloutche","","baloutche","FALSE","Balochi","","Balochi","FALSE","البلوشية","","البلوشية","FALSE","बलूची","","बलूची","FALSE","Balochi,","বালুচি","বালুচি","TRUE","Balochi","","Balochi","FALSE","","FALSE","Balochi","Bahasa Balochi","Bahasa Balochi","TRUE","балучи","белуджский","белуджский","TRUE","俾路支","","俾路支","FALSE","Balochi","","Balochi","FALSE","Balochi","Balochi","Balochi","TRUE","Balochi","ባሎቺኛ","ባሎቺኛ","TRUE","balochi","","balochi","FALSE","Balochi.","Bahasa Balochi","Bahasa Balochi","TRUE","Balochi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bambara","Bamanankan","","bm","","","","","Bambara","","Bambara","FALSE","Bambara","Bambara","Bambara","TRUE","Bambara","","Bambara","FALSE","באמבארה","","באמבארה","FALSE","البامبارا","","البامبارا","FALSE","बाम्बारा","","बाम्बारा","FALSE","বামবারা","বাম্বারা","বাম্বারা","TRUE","Bambara","","Bambara","FALSE","","FALSE","Bambara","Bahasa Bambara","Bahasa Bambara","TRUE","Bambara","бамбара","бамбара","TRUE","班巴拉","","班巴拉","FALSE","Bambara","","Bambara","FALSE","Kibambara","Bambara","Bambara","TRUE","Bambara","ባምባራኛ","ባምባራኛ","TRUE","บาแบม","","บาแบม","FALSE","Bambara","Bahasa Bambara","Bahasa Bambara","TRUE","Bambara.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Banjarese","Bahasa Banjar","","bjn","","","","","Banjarese","","Banjarese","FALSE","Banjarese","Banjarês","Banjarês","TRUE","Banjarais","","Banjarais","FALSE","Banjarese","","Banjarese","FALSE","Banjarese","","Banjarese","FALSE","Banjarese","","Banjarese","FALSE","Banjarese","বনজরি ","বনজরি ","TRUE","Banjarese","","Banjarese","FALSE","","FALSE","Banjar","Bahasa Banjar","Bahasa Banjar","TRUE","Banjarese","банджарский","банджарский","TRUE","Banjarese","","Banjarese","FALSE","Banjarese","","Banjarese","FALSE","Banjarese","Banjarizi","Banjarizi","TRUE","Banjarese","ባንጃሪዝኛ","ባንጃሪዝኛ","TRUE","แบนเนีย","","แบนเนีย","FALSE","Banjarese.","Bahasa Banjar","Bahasa Banjar","TRUE","Banjarese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bari","Karo","Kutuk na Bari","bfa","","","","","Bari","","Bari","FALSE","Bari","Bari","Bari","TRUE","Bari","","Bari","FALSE","בארי","","בארי","FALSE","باري","","باري","FALSE","बरी","","बरी","FALSE","বারী","বারী ","বারী ","TRUE","Bari ରେ","","Bari ରେ","FALSE","","FALSE","Bari","Bahasa Bari","Bahasa Bari","TRUE","Бари","бари","бари","TRUE","巴里","","巴里","FALSE","Bari","","Bari","FALSE","Bari","Kibari","Kibari","TRUE","ባሪ","ባሪኛ","ባሪኛ","TRUE","บาริ","","บาริ","FALSE","Bari","Bahasa Bari","Bahasa Bari","TRUE","Bari.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Basque","Euskara","","eu","","","","","vasco","","vasco","FALSE","basco","Basco","Basco","TRUE","basque","","basque","FALSE","הבסקים","","הבסקים","FALSE","الباسكي","","الباسكي","FALSE","बस्क","","बस्क","FALSE","বাস্ক","বাস্ক","বাস্ক","TRUE","Basque","","Basque","FALSE","","FALSE","basque","Bahasa Basque","Bahasa Basque","TRUE","баскский","","баскский","TRUE","巴斯克","","巴斯克","FALSE","Basque","","Basque","FALSE","basque","Kibaski","Kibaski","TRUE","ባስክ","ባስክኛ","ባስክኛ","TRUE","บาสก์","","บาสก์","FALSE","Basque.","Bahasa Basque","Bahasa Basque","TRUE","Basko","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Batak Toba","","","bbc","","","","","Batak Toba","","Batak Toba","FALSE","Batak Toba","Batak Toba","Batak Toba","TRUE","Batak Toba","","Batak Toba","FALSE","באטאק טובא","","באטאק טובא","FALSE","باتاك توبا","","باتاك توبا","FALSE","बटक तोबा","","बटक तोबा","FALSE","Batak Toba,","বাতক টোবা","বাতক টোবা","TRUE","ବାଟାକ୍ ଟୋବା","","ବାଟାକ୍ ଟୋବା","FALSE","","FALSE","Batak Toba","Bahasa Batak Toba","Bahasa Batak Toba","TRUE","Батак Тоба","батак-тоба","батак-тоба","TRUE","多巴巴塔克","","多巴巴塔克","FALSE","Batak Toba","","Batak Toba","FALSE","Batak Toba","Kibatak Toba","Kibatak Toba","TRUE","ባታክ ቶባ","ባታክ ቶባኛ","ባታክ ቶባኛ","TRUE","Batak Toba","","Batak Toba","FALSE","Batak Toba.","Bahasa Batak Toba","Bahasa Batak Toba","TRUE","Batak Toba.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Belarusian","Беларуская мова","Bielaruskaja mova","be","","","","","Bielorruso","","Bielorruso","FALSE","bielorrusso","Bielorruso","Bielorruso","TRUE","biélorusse","","biélorusse","FALSE","בלארוסית","","בלארוסית","FALSE","البيلاروسية","","البيلاروسية","FALSE","बेलारूसी","","बेलारूसी","FALSE","বেলারুশিয়","বেলারুশি","বেলারুশি","TRUE","ବେଲାରୁଷିଆନ୍","","ବେଲାରୁଷିଆନ୍","FALSE","","FALSE","Belarusia","Bahasa Belarusia","Bahasa Belarusia","TRUE","Белорусский","белорусский","белорусский","TRUE","白俄罗斯","","白俄罗斯","FALSE","Belarushiyanci","","Belarushiyanci","FALSE","Kibelarusi","Kibelarusi","Kibelarusi","TRUE","ቤላሩሲያን","ቤላሩሲያንኛ","ቤላሩሲያንኛ","TRUE","ชาวเบลารุส","","ชาวเบลารุส","FALSE","Belarus.","Bahasa Belarus","Bahasa Belarus","TRUE","Belarusian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bemba","ChiBemba","","bem","","","","","Bemba","","Bemba","FALSE","Bemba","Bemba","Bemba","TRUE","Bemba","","Bemba","FALSE","במבה","","במבה","FALSE","بمبا","","بمبا","FALSE","बेम्बा","","बेम्बा","FALSE","বেম্বা","বেম্বা","বেম্বা","TRUE","Bemba","","Bemba","FALSE","","FALSE","Bemba","Bahasa Bamba","Bahasa Bamba","TRUE","Bemba","бемба","бемба","TRUE","本巴","","本巴","FALSE","Bemba","","Bemba","FALSE","Bemba","Kibemba ","Kibemba ","TRUE","ቤምባ","ቤምባኛ","ቤምባኛ","TRUE","bemba","","bemba","FALSE","Bemba.","Bahasa Bemba","Bahasa Bemba","TRUE","Bemba.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bengali","বাংলা","Bangla","bn","Keyboard_bengali","true","","","bengalí","bengalí","bengalí","TRUE","bengali","Bengali","Bengali","TRUE","bengali","Bengali","Bengali","TRUE","בנגלית","","בנגלית","TRUE","بنغالي","البنغالية","البنغالية","FALSE","बंगाली","","बंगाली","FALSE","বাংলা","বাংলা","বাংলা","TRUE","ବଙ୍ଗାଳୀ","","ବଙ୍ଗାଳୀ","FALSE","","FALSE","Benggala","Bahasa Bengali","Bahasa Bengali","TRUE","бенгальский","","бенгальский","TRUE","孟加拉","","孟加拉","FALSE","Bengali","","Bengali","FALSE","Kibengali","Kibengali","Kibengali","TRUE","ቤንጋሊ","ቤንጋሊኛ","ቤንጋሊኛ","TRUE","เบงกาลี","","เบงกาลี","FALSE","Bengali","Bahasa Bengali","Bahasa Bengali","TRUE","Bengali.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Betawi","Bahasa Betawi","","bew","","","","","betawi","","betawi","FALSE","Betawi","Batawi","Batawi","TRUE","betawi","","betawi","FALSE","Betawi","","Betawi","FALSE","البيتاوي","","البيتاوي","FALSE","Betawi","","Betawi","FALSE","Betawi,","বেতাভি ","বেতাভি ","TRUE","Betawi","","Betawi","FALSE","","FALSE","betawi","Bahasa Betawi","Bahasa Betawi","TRUE","Betawi","бетави","бетави","TRUE","Betawi","","Betawi","FALSE","Betawi","","Betawi","FALSE","Betawi","Kibetawi","Kibetawi","TRUE","Betawi","ቤታዊኛ","ቤታዊኛ","TRUE","betawi","","betawi","FALSE","Betawi.","Bahasa Betawi","Bahasa Betawi","TRUE","Betawi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Biak","wós vyak","wós kovedi","bhw","","","","","Biak","","Biak","FALSE","Biak","Biak","Biak","TRUE","Biak","","Biak","FALSE","Biak","","Biak","FALSE","بياك","","بياك","FALSE","Biak","","Biak","FALSE","বিয়াক","বিয়াক","বিয়াক","TRUE","Biak","","Biak","FALSE","","FALSE","Biak","Bahasa Biak","Bahasa Biak","TRUE","Biak","биакский","биакский","TRUE","比亚克","","比亚克","FALSE","Biak","","Biak","FALSE","Biak","Kibiak","Kibiak","TRUE","Biak","ቢያክኛ","ቢያክኛ","TRUE","biak","","biak","FALSE","Biak","Bahasa Biak","Bahasa Biak","TRUE","Biak.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bikol","Bicol","Bicol Naga","bik","","","","","Bikol","","Bikol","FALSE","Bikol","Bicolano","Bicolano","TRUE","Bikol","","Bikol","FALSE","Bikol","","Bikol","FALSE","بيكولي","","بيكولي","FALSE","बिकोल","","बिकोल","FALSE","বিকোল","বিকোল","বিকোল","TRUE","Bikol","","Bikol","FALSE","","FALSE","Bikol","Bahasa Bikol","Bahasa Bikol","TRUE","Bikol","бикольский","бикольский","TRUE","Bikol","","Bikol","FALSE","Bikol","","Bikol","FALSE","Bikol","Kibikol","Kibikol","TRUE","Bikol","","Bikol","FALSE","บิกิค","","บิกิค","FALSE","Bikol.","Bahasa Bikol","Bahasa Bikol","TRUE","Bikol.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bislama","","","bi","","","","","Bislama","","Bislama","FALSE","Bislama","Bislamá","Bislamá","TRUE","bichlamar","","bichlamar","FALSE","ביסלמית","","ביסלמית","FALSE","البيسلامية","","البيسلامية","FALSE","बिस्लामा","","बिस्लामा","FALSE","বিসলামা","বিসলামা","বিসলামা","TRUE","Bislama","","Bislama","FALSE","","FALSE","Bislama","Bahasa Bislama","Bahasa Bislama","TRUE","Бислама","бислама","бислама","TRUE","比斯拉马语","","比斯拉马语","FALSE","bislama","","bislama","FALSE","Bislama","Bislama","Bislama","TRUE","ቢስላማኛ","ቢስላማኛ","ቢስላማኛ","TRUE","Bislama","","Bislama","FALSE","Bislama","Bahasa Bislama","Bahasa Bislama","TRUE","Bislama.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bodo","बड़ो","","brx","","","","","Bodo","","Bodo","FALSE","Bodo","Bodo","Bodo","TRUE","Bodo","","Bodo","FALSE","בודו","","בודו","FALSE","بودو","","بودو","FALSE","बोडो","","बोडो","FALSE","বোডো","বোরো ","বোরো ","TRUE","Bodo","","Bodo","FALSE","","FALSE","Bodo","Bahasa Bodo","Bahasa Bodo","TRUE","Бодо","бодо","бодо","TRUE","博多","","博多","FALSE","Bodo","","Bodo","FALSE","Bodo","Bodo","Bodo","TRUE","Bodo","","Bodo","FALSE","โคโด","","โคโด","FALSE","Bodo.","Bahasa Bodo","Bahasa Bodo","TRUE","Bodo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bosnian","Bosanski","","bos","","","","","bosnio","","bosnio","FALSE","Bosnian","Bósnio","Bósnio","TRUE","Bosnie","","Bosnie","FALSE","בוסנית","","בוסנית","FALSE","البوسنية","","البوسنية","FALSE","बोस्नियाई","","बोस्नियाई","FALSE","বসনীয়","বসনিয়ান","বসনিয়ান","TRUE","ବୋସୋନିଆନ୍","","ବୋସୋନିଆନ୍","FALSE","","FALSE","Bosnia","Bahasa Bosnia","Bahasa Bosnia","TRUE","боснийский","","боснийский","TRUE","波斯尼亚","","波斯尼亚","FALSE","Bosnian","","Bosnian","FALSE","Kibosnia","Kisbonia","Kisbonia","TRUE","ቦስንያን","","ቦስንያን","FALSE","ชาวบอสเนีย","","ชาวบอสเนีย","FALSE","Bosnian","Bahasa Bosnia","Bahasa Bosnia","TRUE","Bosnian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Buginese","Basa Ugi","","bug","","","","","buginés","","buginés","FALSE","buguinês","Buguinês","Buguinês","TRUE","Bugis","","Bugis","FALSE","בגינזית","","בגינזית","FALSE","البجينيزية","","البجينيزية","FALSE","बगिनीस","","बगिनीस","FALSE","বুগিনি","বুগিনিস","বুগিনিস","TRUE","Buginese","","Buginese","FALSE","","FALSE","Bugis","Bahasa Bugis","Bahasa Bugis","TRUE","Бугийский","бугинский","бугинский","TRUE","布吉文","","布吉文","FALSE","Buginese","","Buginese","FALSE","Buginese","Kibugini","Kibugini","TRUE","ቡጊኔዝ","","ቡጊኔዝ","FALSE","คนอ้วน","","คนอ้วน","FALSE","Buginese.","Bahasa Bugis","Bahasa Bugis","TRUE","Buginese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Bulgarian","","","bg","","","","","búlgaro","","búlgaro","FALSE","búlgaro","Búlgaro","Búlgaro","TRUE","bulgare","","bulgare","FALSE","בולגרי","","בולגרי","FALSE","البلغارية","","البلغارية","FALSE","बल्गेरियाई","","बल्गेरियाई","FALSE","বুলগেরীয়","বুলগেরীয়","বুলগেরীয়","TRUE","Bulgarian","","Bulgarian","FALSE","","FALSE","Bulgaria","Bahasa Bulgaria","Bahasa Bulgaria","TRUE","болгарский","","болгарский","TRUE","保加利亚语","","保加利亚语","FALSE","Bulgarian","","Bulgarian","FALSE","bulgarian","Kibulgaria","Kibulgaria","TRUE","ቡልጋርያኛ","ቡልጋርያኛ","ቡልጋርያኛ","TRUE","ชาวบัลแกเรีย","","ชาวบัลแกเรีย","FALSE","Bulgaria","Bahasa Bulgaria","Bahasa Bulgaria","TRUE","Bulgarian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Burmese","မြန်မာစာ","mranmabhasa","my","Keyboard_burmese02","true","","","birmano","birmano","birmano","TRUE","birmanês","Birmanês","Birmanês","TRUE","birman","Birman","Birman","TRUE","בורמזי","בורמזית","בורמזית","TRUE","البورمية","البورمية","البورمية","FALSE","बर्मी","","बर्मी","FALSE","বর্মী","বর্মী","বর্মী","TRUE","Burmese","","Burmese","FALSE","","FALSE","Birma","Bahasa Birma","Bahasa Birma","TRUE","бирманский","","бирманский","TRUE","缅甸语","","缅甸语","FALSE","Burma","","Burma","FALSE","Kiburma","Kiburma","Kiburma","TRUE","በርሚስ","","በርሚስ","FALSE","พม่า","","พม่า","FALSE","Burma.","Bahasa Burma","Bahasa Burma","TRUE","Burmese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Cantonese","广东话","","yue","Keyboard_chinese","true","cmn","","cantonés","cantonés","cantonés","TRUE","Cantonês","Cantonês","Cantonês","TRUE","Cantonais","Cantonais","Cantonais","TRUE","קנטונזית","","קנטונזית","TRUE","الكانتونية","الكانتونية","الكانتونية","FALSE","कैंटोनीज़","","कैंटोनीज़","FALSE","ক্যান্টোনিজ","ক্যান্টোনিজ","ক্যান্টোনিজ","TRUE","Cantonese","","Cantonese","FALSE","","FALSE","Kanton","Bahasa Kanton","Bahasa Kanton","TRUE","кантонский","","кантонский","TRUE","广东话","","广东话","FALSE","Kannada","","Kannada","FALSE","Kikantoni","Kikantoni","Kikantoni","TRUE","ካንቶኒዝ","","ካንቶኒዝ","FALSE","กวางตุ้ง","","กวางตุ้ง","FALSE","Kantonis","Bahasa Kantonis","Bahasa Kantonis","TRUE","Cantonese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Catalan","català","","ca","","","","","catalán","","catalán","FALSE","catalão","Catalão","Catalão","TRUE","catalan","","catalan","FALSE","קטלאנית","","קטלאנית","FALSE","الكاتالونية","","الكاتالونية","FALSE","कातालान","","कातालान","FALSE","কাতালান","ক্যাটালন","ক্যাটালন","TRUE","କାଟାଲାନ୍","","କାଟାଲାନ୍","FALSE","","FALSE","catalan","Bahasa Catalan","Bahasa Catalan","TRUE","каталонский","","каталонский","TRUE","加泰罗尼亚","","加泰罗尼亚","FALSE","Catalan","","Catalan","FALSE","Kikatalani","Kikatalani","Kikatalani","TRUE","ካታሊያን","","ካታሊያን","FALSE","คาตาลัน","","คาตาลัน","FALSE","Bahasa Catalan","Bahasa Catalonia","Bahasa Catalonia","TRUE","Catalan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Cebuano","Binisaya","","ceb","","","","","Cebuano","","Cebuano","FALSE","Cebuano","Cebuano","Cebuano","TRUE","Cebuano","","Cebuano","FALSE","קבואנו","","קבואנו","FALSE","السيبيونو","","السيبيونو","FALSE","सिबुआनो","","सिबुआनो","FALSE","চেবুয়ানো","সেবুয়ানো","সেবুয়ানো","TRUE","Cebuano","","Cebuano","FALSE","","FALSE","Cebuano","Bahasa Cebuano","Bahasa Cebuano","TRUE","Cebuano","себуано","себуано","TRUE","宿务","","宿务","FALSE","Harshen Cebuano","","Harshen Cebuano","FALSE","Cebuano","Sebuano","Sebuano","TRUE","ሴብዋኖ","","ሴብዋኖ","FALSE","เซบูวน","","เซบูวน","FALSE","Cebuano","Bahasa Cebu","Bahasa Cebu","TRUE","Cebuano.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Chichewa","Chicheŵa","","nya","","","","","chichewa","","chichewa","FALSE","Chichewa","Chichewa","Chichewa","TRUE","chichewa","","chichewa","FALSE","צ'יצ'ווה","","צ'יצ'ווה","FALSE","الشيشيوا","","الشيشيوا","FALSE","चिचेवा","","चिचेवा","FALSE","চীচেওয়া","চিছেওয়া","চিছেওয়া","TRUE","Chichewa","","Chichewa","FALSE","","FALSE","Chichewa","Bahasa Chichewa","Bahasa Chichewa","TRUE","Chichewa","чичева","чичева","TRUE","奇切瓦","","奇切瓦","FALSE","Chichewa","","Chichewa","FALSE","Chichewa","Chichewa","Chichewa","TRUE","ቺቼዋ","","ቺቼዋ","FALSE","chichewa","","chichewa","FALSE","Chichewa","Bahasa Cewa","Bahasa Cewa","TRUE","Chichewa.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Chokwe","","","cjk","","","","","chokwe","","chokwe","FALSE","Chokwe","Chokwe","Chokwe","TRUE","Chokwe","","Chokwe","FALSE","צ'וקווה","","צ'וקווה","FALSE","تشوكوي","","تشوكوي","FALSE","Chokwe","","Chokwe","FALSE","চোকেও","চকওয়ে","চকওয়ে","TRUE","Chokwe","","Chokwe","FALSE","","FALSE","Chokwe","Bahasa Chockwe","Bahasa Chockwe","TRUE","Chokwe","чокве","чокве","TRUE","绍奎","","绍奎","FALSE","Chokwe","","Chokwe","FALSE","Chokwe","Chokwe","Chokwe","TRUE","Chokwe","","Chokwe","FALSE","chokwe","","chokwe","FALSE","Chokwe.","Bahasa Chokwe","Bahasa Chokwe","TRUE","Chokwe.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Chuukese","Chuuk","","chk","","","","","chuukese","","chuukese","FALSE","Chuukese","Chuquês","Chuquês","TRUE","Chuuk","","Chuuk","FALSE","Chuukese","","Chuukese","FALSE","Chuukese","","Chuukese","FALSE","चूकीस","","चूकीस","FALSE","চুকি","চুকিস ","চুকিস ","TRUE","Chuukese","","Chuukese","FALSE","","FALSE","Chuukese","Bahasa Chuukese","Bahasa Chuukese","TRUE","чукотский","","чукотский","TRUE","Chuukese","","Chuukese","FALSE","Chuukese","","Chuukese","FALSE","Chuukese","Chuukizi","Chuukizi","TRUE","Chuukese","","Chuukese","FALSE","Chuukese","","Chuukese","FALSE","Chuukese.","Bahasa Chuukese","Bahasa Chuukese","TRUE","Himba","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Croatian","hrvatski","","hr","","","","","croata","","croata","FALSE","croata","Croata","Croata","TRUE","croate","","croate","FALSE","קרואטי","","קרואטי","FALSE","الكرواتية","","الكرواتية","FALSE","क्रोएशियाई","","क्रोएशियाई","FALSE","ক্রোয়েশীয়","ক্রোটদেশীয়","ক্রোটদেশীয়","TRUE","କ୍ରୋଆଟିଆନ୍","","କ୍ରୋଆଟିଆନ୍","FALSE","","FALSE","Kroasia","Bahasa Kroasia","Bahasa Kroasia","TRUE","хорватский","","хорватский","TRUE","克罗地亚","","克罗地亚","FALSE","Croatian","","Croatian","FALSE","Kikorasia","Kikroeshia","Kikroeshia","TRUE","ክሮኤሽያን","","ክሮኤሽያን","FALSE","ภาษาโครเอเชีย","","ภาษาโครเอเชีย","FALSE","Croatia.","Bahasa Croatia","Bahasa Croatia","TRUE","Croatian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Czech","čeština","","cs","","","","","checo","","checo","FALSE","tcheco","Checo","Checo","TRUE","tchèque","","tchèque","FALSE","צ'כיה","","צ'כיה","FALSE","تشيكي","","تشيكي","FALSE","चेक","","चेक","FALSE","চেক","চেক","চেক","TRUE","Czech","","Czech","FALSE","","FALSE","Ceko","Bahasa Ceko","Bahasa Ceko","TRUE","Чешский","чешский","чешский","TRUE","捷克","","捷克","FALSE","Czech","","Czech","FALSE","czech","Kicheki","Kicheki","TRUE","ቼክ","","ቼክ","FALSE","เช็ก","","เช็ก","FALSE","Czech.","Bahasa Czech","Bahasa Czech","TRUE","Czech.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dagaare","Dagaari","","dga","","","","","Dagaare","","Dagaare","FALSE","Dagaare","Dagaare","Dagaare","TRUE","Dagaare","","Dagaare","FALSE","Dagaare","","Dagaare","FALSE","داغاري","","داغاري","FALSE","Dagaare","","Dagaare","FALSE","Dagaare","ডাগারে","ডাগারে","TRUE","Dagaare","","Dagaare","FALSE","","FALSE","Dagaare","Bahasa Dagaare","Bahasa Dagaare","TRUE","Dagaare","дагари","дагари","TRUE","Dagaare","","Dagaare","FALSE","Dagaare","","Dagaare","FALSE","Dagaare","Dagaare","Dagaare","TRUE","Dagaare","","Dagaare","FALSE","Dagaare","","Dagaare","FALSE","Dagaare.","Bahasa Dagaare","Bahasa Dagaare","TRUE","Dagaare.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dagbani","Dagomba","","dag","","","","","Dagbani","","Dagbani","FALSE","dagbani","Dagani","Dagani","TRUE","Dagbani","","Dagbani","FALSE","Dagbani","","Dagbani","FALSE","Dagbani","","Dagbani","FALSE","Dagbani","","Dagbani","FALSE","Dagbani,","দাগবাণী","দাগবাণী","TRUE","Dagbani","","Dagbani","FALSE","","FALSE","Dagbani","Bahasa Dagbani","Bahasa Dagbani","TRUE","Dagbani","дагбани","дагбани","TRUE","Dagbani","","Dagbani","FALSE","Dagbani","","Dagbani","FALSE","Dagbani","Dagbani","Dagbani","TRUE","Dagbani","","Dagbani","FALSE","dagbani","","dagbani","FALSE","Dagbani.","Bahasa Dagbani","Bahasa Dagbani","TRUE","Dagbani","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Danish","dansk","","da","","","","","danés","","danés","FALSE","dinamarquês","Dinamarquês","Dinamarquês","TRUE","danois","","danois","FALSE","דַנִי","","דַנִי","FALSE","دانماركي","","دانماركي","FALSE","दानिश","","दानिश","FALSE","ডেনমার্কের","ড্যানিশ","ড্যানিশ","TRUE","ଡାନିସ୍","","ଡାନିସ୍","FALSE","","FALSE","Orang Denmark","Bahasa Denmark","Bahasa Denmark","TRUE","датский","","датский","TRUE","丹麦","","丹麦","FALSE","Danish","","Danish","FALSE","Denmark","Kidenmaki","Kidenmaki","TRUE","ዳኒሽ","","ዳኒሽ","FALSE","เดนมาร์ก","","เดนมาร์ก","FALSE","Denmark","Bahasa Denmark","Bahasa Denmark","TRUE","Danish","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dari","درى","","prs","","","","","Dari","","Dari","FALSE","Dari","Dari","Dari","TRUE","Dari","","Dari","FALSE","דארי","","דארי","FALSE","الضاري","","الضاري","FALSE","दारी","","दारी","FALSE","দারি","দারি","দারি","TRUE","Dari","","Dari","FALSE","","FALSE","Dari","Bahasa Dari","Bahasa Dari","TRUE","дари","","дари","TRUE","达里语","","达里语","FALSE","dari","","dari","FALSE","Dari","Dari","Dari","TRUE","ዳሪ","","ዳሪ","FALSE","ดาริ","","ดาริ","FALSE","Dari","Bahasa Dari","Bahasa Dari","TRUE","Dari.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dhivehi","","","dv","","","","has script called Thaana","dhivehi","","dhivehi","FALSE","Dhivehi","Diveí","Diveí","TRUE","Dhivehi","","Dhivehi","FALSE","דהיוהי","","דהיוהי","FALSE","الديفيهية","","الديفيهية","FALSE","धिवेही","","धिवेही","FALSE","দিভেহি","দিভেহি","দিভেহি","TRUE","Dhivehi","","Dhivehi","FALSE","","FALSE","Dhivehi","Bahasa Dhivehi","Bahasa Dhivehi","TRUE","Мальдивский","дивехи","дивехи","TRUE","迪维希语","","迪维希语","FALSE","Dhivehi","","Dhivehi","FALSE","Dhivehi","Dhivehi","Dhivehi","TRUE","Dhivehi","","Dhivehi","FALSE","Dhivehi","","Dhivehi","FALSE","Dhivehi.","Bahasa Divehi","Bahasa Divehi","TRUE","Dhivehi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dinka","Thuɔŋjäŋ","","din","","","","","Dinka","","Dinka","FALSE","Dinka","Dinca","Dinca","TRUE","Dinka","","Dinka","FALSE","דינקה","","דינקה","FALSE","الدينكا","","الدينكا","FALSE","दिन्का","","दिन्का","FALSE","ডিংকা","ডিনকা","ডিনকা","TRUE","Dinka","","Dinka","FALSE","","FALSE","Dinka","Bahasa Dinka","Bahasa Dinka","TRUE","Dinka","динка","динка","TRUE","丁卡","","丁卡","FALSE","Dinka","","Dinka","FALSE","Dinka","Dinka","Dinka","TRUE","ዱንካ","","ዱንካ","FALSE","Dinka","","Dinka","FALSE","Dinka.","Bahasa Dinka","Bahasa Dinka","TRUE","Dinka.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dogri","डोगरी"," ڈوگری‬","dgo","","","","","Dogri","","Dogri","FALSE","Dogri","Dogri","Dogri","TRUE","Dogri","","Dogri","FALSE","דוגרי","","דוגרי","FALSE","Dogri","","Dogri","FALSE","डोगरी","","डोगरी","FALSE","ডোগ্রি","ডোগ্রি","ডোগ্রি","TRUE","Dogri","","Dogri","FALSE","","FALSE","Dogri","Bahasa Dogri","Bahasa Dogri","TRUE","догри","","догри","TRUE","Dogri","","Dogri","FALSE","Dogri","","Dogri","FALSE","Dogri","Dogri","Dogri","TRUE","Dogri","","Dogri","FALSE","Dogri","","Dogri","FALSE","Dogri.","Bahasa Dogri","Bahasa Dogri","TRUE","Dogri.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dutch","Nederlands","","nl","Keyboard_dutch","true","","","holandés","holandés","holandés","TRUE","holandês","Holandês","Holandês","TRUE","néerlandais","Néerlandais","Néerlandais","TRUE","הוֹלַנדִי","הולנדית","הולנדית","TRUE","هولندي","الهولندية","الهولندية","FALSE","डच","","डच","FALSE","ডাচ","ডাচ","ডাচ","TRUE","ଡଚ୍","","ଡଚ୍","FALSE","","FALSE","Belanda","Bahasa Belanda","Bahasa Belanda","TRUE","нидерландский язык","голландский","голландский","TRUE","荷兰人","","荷兰人","FALSE","Dutch","","Dutch","FALSE","dutch","Kidachi","Kidachi","TRUE","ደች","","ደች","FALSE","ชาวดัตช์","","ชาวดัตช์","FALSE","Bahasa Dutch.","Bahasa Belanda","Bahasa Belanda","TRUE","Dutch.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dyula","Julakan","","dyu","","","","","dyula","","dyula","FALSE","Dyula","Diúla","Diúla","TRUE","dioula","","dioula","FALSE","Dyula","","Dyula","FALSE","Dyula","","Dyula","FALSE","Dyula","","Dyula","FALSE","ডিউলা","ডিউলা","ডিউলা","TRUE","Dyula","","Dyula","FALSE","","FALSE","Dyula","Bahasa Dyula","Bahasa Dyula","TRUE","Дюла","дьюла","дьюла","TRUE","Dyula","","Dyula","FALSE","Dyula","","Dyula","FALSE","Dyula","Dyula","Dyula","TRUE","Dyula","","Dyula","FALSE","ด่างาลา","","ด่างาลา","FALSE","Dyula.","Bahasa Dyula","Bahasa Dyula","TRUE","Dyula","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Dzongkha","","","dz","","","","","Dzongkha","","Dzongkha","FALSE","Dzongkha","Butanês","Butanês","TRUE","dzongkha","","dzongkha","FALSE","דזונקה","","דזונקה","FALSE","الزونخاية","","الزونخاية","FALSE","जोंगखा","","जोंगखा","FALSE","ভুটানি","ডজংখা","ডজংখা","TRUE","Dzongkha","","Dzongkha","FALSE","","FALSE","Dzongkha","Bahasa Dzongkha","Bahasa Dzongkha","TRUE","Dzongkha","дзонг-кэ","дзонг-кэ","TRUE","不丹文","","不丹文","FALSE","Dzongkha","","Dzongkha","FALSE","Kizongkha","Dzongkha","Dzongkha","TRUE","ድዞንግካ","","ድዞንግካ","FALSE","Dzongkha","","Dzongkha","FALSE","Dzongkha.","Bahasa Jongkha","Bahasa Jongkha","TRUE","Dzongkha.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Efik","","","efi","","","","","efik","","efik","FALSE","Efik","Efik","Efik","TRUE","efik","","efik","FALSE","Efik","","Efik","FALSE","Efik","","Efik","FALSE","एफिक","","एफिक","FALSE","এফিক","এফিক","এফিক","TRUE","Efik","","Efik","FALSE","","FALSE","Efik","Bahasa Efik","Bahasa Efik","TRUE","эфик","","эфик","TRUE","埃菲克","","埃菲克","FALSE","Efik","","Efik","FALSE","Efik","Efik","Efik","TRUE","Efik","","Efik","FALSE","efik","","efik","FALSE","Efik.","Bahasa Efik","Bahasa Efik","TRUE","Efik.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ekari","","Kapauku","ekg","","","","","ekari","","ekari","FALSE","Ekari","Ekari","Ekari","TRUE","Ekaris","","Ekaris","FALSE","Ekari","","Ekari","FALSE","Ekari","","Ekari","FALSE","Ekari","","Ekari","FALSE","Ekari,","একরি","একরি","TRUE","Ekari","","Ekari","FALSE","","FALSE","Ekari","Bahasa Ekari","Bahasa Ekari","TRUE","Ekari","экари","экари","TRUE","Ekari","","Ekari","FALSE","Ekari","","Ekari","FALSE","Ekari","Ekari","Ekari","TRUE","Ekari","","Ekari","FALSE","อีคาริ","","อีคาริ","FALSE","Ekari","Bahasa Ekari","Bahasa Ekari","TRUE","Ekari","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Estonian","eesti keel","","et","","","","","Estonia","","Estonia","FALSE","estoniano","Estoniano","Estoniano","TRUE","estonien","","estonien","FALSE","אסטוני","","אסטוני","FALSE","الإستونية","","الإستونية","FALSE","एस्तोनियावासी","","एस्तोनियावासी","FALSE","এস্তোনীয়","এস্তোনিয়ান","এস্তোনিয়ান","TRUE","Estonian","","Estonian","FALSE","","FALSE","Estonia","Bahasa Estonia","Bahasa Estonia","TRUE","эстонский","","эстонский","TRUE","爱沙尼亚语","","爱沙尼亚语","FALSE","Istoniyanci","","Istoniyanci","FALSE","estonian","Kiestonia","Kiestonia","TRUE","ኢስቶኒያን","","ኢስቶኒያን","FALSE","ชาวเอสโตเนีย","","ชาวเอสโตเนีย","FALSE","Estonia","Bahasa Estonia","Bahasa Estonia","TRUE","Estonian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ewe","Eʋegbe","","ee","","","","","Oveja","","Oveja","FALSE","Ovelha","Ewe","Ewe","TRUE","agnelle","","agnelle","FALSE","כִּבשָׂה","","כִּבשָׂה","FALSE","نعجة","","نعجة","FALSE","भेड़","","भेड़","FALSE","অজা","ইউ ","ইউ ","TRUE","Ewe","","Ewe","FALSE","","FALSE","biri-biri betina","Bahasa Ewe","Bahasa Ewe","TRUE","овца","эве","эве","TRUE","母羊","","母羊","FALSE","Ewe","","Ewe","FALSE","Kiwe","Ewe","Ewe","TRUE","ቄቦች","","ቄቦች","FALSE","ewe","","ewe","FALSE","Ewe","Bahasa Ewe","Bahasa Ewe","TRUE","Ewe.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ewondo (Kolo)","","","ewo","","","","","Ewondo (Kolo)","","Ewondo (Kolo)","FALSE","Ewondo (Kolo)","Ewondo (Kolo)","Ewondo (Kolo)","TRUE","Ewondo (Kolo)","","Ewondo (Kolo)","FALSE","Ewondo (Kolo)","","Ewondo (Kolo)","FALSE","Ewondo (كولو)","","Ewondo (كولو)","FALSE","इवोन्डो (कोलो)","","इवोन्डो (कोलो)","FALSE","ইওন্ডো (কোলো)","ইওন্ডো (কোলো)","ইওন্ডো (কোলো)","TRUE","Ewondo (Kolo)","","Ewondo (Kolo)","FALSE","","FALSE","Ewondo (Kolo)","Bahasa Ewondo (Kolo)","Bahasa Ewondo (Kolo)","TRUE","Ewondo (коло)","эвондо","эвондо","TRUE","Ewondo(科洛)","","Ewondo(科洛)","FALSE","Ewondo (Kolo)","","Ewondo (Kolo)","FALSE","Ewondo (Kolo)","Ewondo (Kolo)","Ewondo (Kolo)","TRUE","Ewondo (Kolo)","","Ewondo (Kolo)","FALSE","Ewondo (Kolo)","","Ewondo (Kolo)","FALSE","Ewondo (Kolo)","Bahasa Ewondo (Kolo)","Bahasa Ewondo (Kolo)","TRUE","Ewondo (Kolo)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Fang","Pangwe","Pahouin","fan","","","","","Colmillo","","Colmillo","FALSE","presa","Fang","Fang","TRUE","Croc","","Croc","FALSE","נִיב","","נִיב","FALSE","ناب","","ناب","FALSE","खांग","","खांग","FALSE","ফাং","ফ্যাং","ফ্যাং","TRUE","ମୁନୀଆ ଦାନ୍ତ","","ମୁନୀଆ ଦାନ୍ତ","FALSE","","FALSE","gigi taring","Bahasa Fang","Bahasa Fang","TRUE","клык","фанг","фанг","TRUE","方","","方","FALSE","Fang","","Fang","FALSE","Fang","Fang","Fang","TRUE","የዉሻ ክራንጫ","","የዉሻ ክራንጫ","FALSE","ฝาง","","ฝาง","FALSE","Fang","Bahasa Fang","Bahasa Fang","TRUE","Fang.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Fante","Mfante","","fat","","","","","Fante","","Fante","FALSE","Fante","Fante","Fante","TRUE","Fante","","Fante","FALSE","פאנטה","","פאנטה","FALSE","فانتسي","","فانتسي","FALSE","फान्टे","","फान्टे","FALSE","Fante","ফ্যান্টে ","ফ্যান্টে ","TRUE","Fante","","Fante","FALSE","","FALSE","Fante","Bahasa Fante","Bahasa Fante","TRUE","Fante","фанти","фанти","TRUE","芬迪","","芬迪","FALSE","Fante","","Fante","FALSE","Fante","Fante","Fante","TRUE","Fante","","Fante","FALSE","แฟน ๆ","","แฟน ๆ","FALSE","Fante.","Bahasa Fante","Bahasa Fante","TRUE","Fante.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Faroese","føroyskt","","fao","","","","","faroese","","faroese","FALSE","Faroese","Feroesa","Feroesa","TRUE","féroïen","","féroïen","FALSE","פארואזית","","פארואזית","FALSE","جزر فارو","","جزر فارو","FALSE","फिरोज़ी","","फिरोज़ी","FALSE","ফেরাউনি","ফেরোইজ ","ফেরোইজ ","TRUE","ଫାରୋଏସେ","","ଫାରୋଏସେ","FALSE","","FALSE","Faroe","Bahasa Faroe","Bahasa Faroe","TRUE","Фарерская","фарерский","фарерский","TRUE","法罗群岛","","法罗群岛","FALSE","Faroese","","Faroese","FALSE","Kifaroe","Kifaroe","Kifaroe","TRUE","ፋሮኛ","","ፋሮኛ","FALSE","ชาวฟาโร","","ชาวฟาโร","FALSE","Faroese.","Bahasa Faroe","Bahasa Faroe","TRUE","Faroese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Fijian","na vosa vaka-Viti","","fj","","","","","fiyiano","","fiyiano","FALSE","Fiji","Fiji","Fiji","TRUE","fidjien","","fidjien","FALSE","פיג'י","","פיג'י","FALSE","الفيجية","","الفيجية","FALSE","फिजी","","फिजी","FALSE","ফিজিও","ফিজিয়ান","ফিজিয়ান","TRUE","ଫିଜିଆନ୍","","ଫିଜିଆନ୍","FALSE","","FALSE","Fijian","Bahasa Fiji","Bahasa Fiji","TRUE","Fijian","фиджийский","фиджийский","TRUE","斐济","","斐济","FALSE","Fijian","","Fijian","FALSE","Kifiji","Kifiji","Kifiji","TRUE","ፊጂኛ","","ፊጂኛ","FALSE","ฟิจิ","","ฟิจิ","FALSE","Fijian","Bahasa Fiji","Bahasa Fiji","TRUE","Fijian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Filipino","Wikang Pilipino","","fil","","","","","filipina","","filipina","FALSE","Filipino","Filipino","Filipino","TRUE","Philippines","","Philippines","FALSE","פיליפיני","","פיליפיני","FALSE","الفلبينية","","الفلبينية","FALSE","filipino","","filipino","FALSE","ফিলিপিনো","ফিলিপিনো","ফিলিপিনো","TRUE","ଫିଲିପିନୋ","","ଫିଲିପିନୋ","FALSE","","FALSE","Filipina","Bahasa Filipina","Bahasa Filipina","TRUE","Филиппинский","филиппинский","филиппинский","TRUE","菲律宾","","菲律宾","FALSE","Filipino","","Filipino","FALSE","filipino","Kifilipino","Kifilipino","TRUE","ፊሊፒኖ","","ፊሊፒኖ","FALSE","ฟิลิปปินส์","","ฟิลิปปินส์","FALSE","Bahasa Filipina","Bahasa Filipina","Bahasa Filipina","TRUE","Filipino","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Finnish","Suomen kieli","","fi","","","","","finlandés","","finlandés","FALSE","finlandês","Finlandês","Finlandês","TRUE","finlandais","","finlandais","FALSE","פִינִית","","פִינִית","FALSE","اللغة الفنلندية","","اللغة الفنلندية","FALSE","फिनिश","","फिनिश","FALSE","ফিনিশ","ফিনিশ","ফিনিশ","TRUE","ଫିନ୍ନିସ୍","","ଫିନ୍ନିସ୍","FALSE","","FALSE","Finlandia","Bahasa Finlandia","Bahasa Finlandia","TRUE","финский","","финский","TRUE","芬兰","","芬兰","FALSE","Finnish","","Finnish","FALSE","Kifini","Kifini","Kifini","TRUE","ፊኒሽ","","ፊኒሽ","FALSE","ฟินแลนด์","","ฟินแลนด์","FALSE","Finland.","Bahasa Finland","Bahasa Finland","TRUE","Finnish.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Fon","Fɔngbè","","fon","","","","","fon","","fon","FALSE","Fon","Fon","Fon","TRUE","Fon","","Fon","FALSE","Fon","","Fon","FALSE","الفون","","الفون","FALSE","Fon","","Fon","FALSE","ফন","ফন","ফন","TRUE","FON","","FON","FALSE","","FALSE","Fon","Bahasa Fon","Bahasa Fon","TRUE","Fon","фон","фон","TRUE","丰文","","丰文","FALSE","Fon","","Fon","FALSE","fon","Fon","Fon","TRUE","ፎን","","ፎን","FALSE","ต้อ","","ต้อ","FALSE","Fon","Bahasa Fon","Bahasa Fon","TRUE","Fon.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"French","français","","fr","Keyboard_french","true","","","francés","francés","francés","TRUE","francês","Francês","Francês","TRUE","français","Français","Français","TRUE","צָרְפָתִית","צרפתית","צרפתית","TRUE","فرنسي","الفرنسية","الفرنسية","FALSE","फ्रेंच","","फ्रेंच","FALSE","ফরাসি","ফরাসি","ফরাসি","TRUE","ଫ୍ରେଞ୍ଚ","","ଫ୍ରେଞ୍ଚ","FALSE","","FALSE","Perancis","Bahasa Perancis","Bahasa Perancis","TRUE","французский язык","французский","французский","TRUE","法国","","法国","FALSE","Faransa","","Faransa","FALSE","Kifaransa","Kifaransa","Kifaransa","TRUE","ፈረንሳይኛ","ፈረንሳይኛ","ፈረንሳይኛ","TRUE","เกี่ยวกับฝรั่งเศส","","เกี่ยวกับฝรั่งเศส","FALSE","Bahasa Perancis","Bahasa Perancis","Bahasa Perancis","TRUE","Pranses","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Frisian","Frysk","","fry","","","","","frisio","","frisio","FALSE","frísio","Frísia","Frísia","TRUE","frison","","frison","FALSE","פריסיאן","","פריסיאן","FALSE","الفريزية","","الفريزية","FALSE","फ़्रिसियाई","","फ़्रिसियाई","FALSE","ফ্রিসিয়","ফরিশিয়ান","ফরিশিয়ান","TRUE","ଫ୍ରିସିଆନ୍","","ଫ୍ରିସିଆନ୍","FALSE","","FALSE","Frisian","Bahasa Frisia","Bahasa Frisia","TRUE","фризский","","фризский","TRUE","弗里斯兰","","弗里斯兰","FALSE","K'abilan Firsi","","K'abilan Firsi","FALSE","cha Magharibi","Kifrisia","Kifrisia","TRUE","ፍሪስኛ","","ፍሪስኛ","FALSE","ชาวฟริส","","ชาวฟริส","FALSE","Frisian.","Bahasa Frisian","Bahasa Frisian","TRUE","Frisian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Fula(h)/Fulani","Fulfulde* ","","ff","","","","","Fula (h) / Fulani","","Fula (h) / Fulani","FALSE","Fula (h) / fula","Fula","Fula","TRUE","Peul (h) / peul","","Peul (h) / peul","FALSE","פולה (ח) / פולאני","","פולה (ח) / פולאני","FALSE","فولا (ح) / الفولاني","","فولا (ح) / الفولاني","FALSE","Fula (ज) / फुलानी","","Fula (ज) / फुलानी","FALSE","ফুলা (জ) / ফুলানি","ফুলা (জ) / ফুলানী","ফুলা (জ) / ফুলানী","TRUE","Fula (H) / Fulani","","Fula (H) / Fulani","FALSE","","FALSE","Fula (h) / Fulani","Bahasa Fula (h) / Fulani","Bahasa Fula (h) / Fulani","TRUE","Фула (ч) / Фулань","фула","фула","TRUE","福拉(H)/拉尼","","福拉(H)/拉尼","FALSE","Fula (h) / Fulani","","Fula (h) / Fulani","FALSE","Fula (h) / Fulani","Fula (h) Fulani","Fula (h) Fulani","TRUE","የሃውሳና (ሸ) / Fulani","","የሃውሳና (ሸ) / Fulani","FALSE","ฟูลา (H) / ฟุลัง","","ฟูลา (H) / ฟุลัง","FALSE","Fula (h) / fulani","Bahasa Fula","Bahasa Fula","TRUE","Fula (h) / Fulani","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ga","Gã","","gaa","","","","","Georgia","","Georgia","FALSE","Ga","Ga","Ga","TRUE","Géorgie","","Géorgie","FALSE","ga","","ga","FALSE","الجا","","الجا","FALSE","गा","","गा","FALSE","গা","গা","গা","TRUE","GA","","GA","FALSE","","FALSE","Ga","Bahasa Ga","Bahasa Ga","TRUE","Джорджия","га","га","TRUE","嘎","","嘎","FALSE","ga","","ga","FALSE","Ga","Ga","Ga","TRUE","ጋ","","ጋ","FALSE","กา","","กา","FALSE","Ga.","Bahasa Ga","Bahasa Ga","TRUE","ga","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Galician","lingua Galega","","glg","","","","","gallego","","gallego","FALSE","galego","Galego","Galego","TRUE","Galice","","Galice","FALSE","גליציאנית","","גליציאנית","FALSE","الجاليكية","","الجاليكية","FALSE","गैलिशियन्","","गैलिशियन्","FALSE","গ্যালিশিয়","গ্যালিশিয়ান","গ্যালিশিয়ান","TRUE","Galician","","Galician","FALSE","","FALSE","galician","Bahasa Galisia","Bahasa Galisia","TRUE","Галицкая","галисийский","галисийский","TRUE","加利西亚","","加利西亚","FALSE","Bagalike","","Bagalike","FALSE","Kigalisia","Kigalisia","Kigalisia","TRUE","ጋላሺያን","","ጋላሺያን","FALSE","กาลิเซีย","","กาลิเซีย","FALSE","Galicia.","Bahasa Galicia","Bahasa Galicia","TRUE","Galician.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Garifuna","","Kali'ina","cab","","","","Kali'ina ??","Garifuna","","Garifuna","FALSE","Garifuna","Garífuna ","Garífuna ","TRUE","garifuna","","garifuna","FALSE","Garifuna","","Garifuna","FALSE","الغاريفونا","","الغاريفونا","FALSE","Garifuna","","Garifuna","FALSE","Garifuna,","গারিফিং ","গারিফিং ","TRUE","Garifuna","","Garifuna","FALSE","","FALSE","Garifuna","Bahasa Garifuna","Bahasa Garifuna","TRUE","Гарифуна","гарифуна","гарифуна","TRUE","加里富纳","","加里富纳","FALSE","Garifuna","","Garifuna","FALSE","Garifuna","Garifuna","Garifuna","TRUE","በጋሪፉና","","በጋሪፉና","FALSE","garifuna","","garifuna","FALSE","Garifuna.","Bahasa Garifuna","Bahasa Garifuna","TRUE","Garifuna.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gbaya","Ngbàkà","Manza","gba","","","","","gbaya","","gbaya","FALSE","Gbaya","Gbaya","Gbaya","TRUE","Gbaya","","Gbaya","FALSE","Gbaya","","Gbaya","FALSE","Gbaya","","Gbaya","FALSE","Gbaya","","Gbaya","FALSE","বায়ার","জিবয়া","জিবয়া","TRUE","Gbaya","","Gbaya","FALSE","","FALSE","Gbaya","Bahasa Gbaya","Bahasa Gbaya","TRUE","Gbaya","гбайя","гбайя","TRUE","Gbaya","","Gbaya","FALSE","Gbaya","","Gbaya","FALSE","Gbaya","Gbaya","Gbaya","TRUE","Gbaya","","Gbaya","FALSE","gbaya","","gbaya","FALSE","GBAYA","Bahasa Gbaya","Bahasa Gbaya","TRUE","Gbaya","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Georgian","ქართული","Kartuli","ka","Keyboard_georgian","true","","Longer version: ქართული ენა, kartuli ena; Keyboard_basic_kbdgeome doesn't work","georgiano","georgiano","georgiano","TRUE","georgiano","Georgiana","Georgiana","TRUE","géorgien","Géorgien","Géorgien","TRUE","הגאורגי","גאורגית","גאורגית","TRUE","الجورجية","الجورجية","الجورجية","FALSE","जॉर्जियाई","","जॉर्जियाई","FALSE","জর্জিয়ান","জর্জিয়ান","জর্জিয়ান","TRUE","ଜର୍ଜିଆନ୍","","ଜର୍ଜିଆନ୍","FALSE","","FALSE","Georgia","Bahasa Georgia","Bahasa Georgia","TRUE","грузинский","","грузинский","TRUE","格鲁吉亚","","格鲁吉亚","FALSE","Jojiyanci","","Jojiyanci","FALSE","Kijiojia","Kijiojia","Kijiojia","TRUE","ጆርጅያን","","ጆርጅያን","FALSE","จอร์เจีย","","จอร์เจีย","FALSE","Georgia","Bahasa Georgia","Bahasa Georgia","TRUE","Georgian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"German","Deutsch","","de","Keyboard_european","","","","alemán","alemán","alemán","TRUE","alemão","Alemão","Alemão","TRUE","allemand","Allemand","Allemand","TRUE","גֶרמָנִיָת","גרמנית","גרמנית","TRUE","ألمانية","الألمانية","الألمانية","FALSE","जर्मन","","जर्मन","FALSE","জার্মান","জার্মান","জার্মান","TRUE","ଜର୍ମାନ୍","","ଜର୍ମାନ୍","FALSE","","FALSE","Jerman","Bahasa Jerman","Bahasa Jerman","TRUE","Немецкий","немецкий","немецкий","TRUE","德语","","德语","FALSE","Jamus","","Jamus","FALSE","german","Kijerumani","Kijerumani","TRUE","ጀርመንኛ","ጀርመንኛ","ጀርመንኛ","FALSE","ภาษาเยอรมัน","","ภาษาเยอรมัน","FALSE","Jerman","Bahasa Jerman","Bahasa Jerman","TRUE","Aleman","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gonja","Ngbanyito","","gjn","","","","","gonja","","gonja","FALSE","Gonja","Gonja","Gonja","TRUE","gonja","","gonja","FALSE","Gonja","","Gonja","FALSE","غونغا","","غونغا","FALSE","gonja","","gonja","FALSE","Gonja","গনিয়া ","গনিয়া ","TRUE","Gonja","","Gonja","FALSE","","FALSE","gonja","Bahasa Gonja","Bahasa Gonja","TRUE","Gonja","гонжа","гонжа","TRUE","Gonja","","Gonja","FALSE","Gonja","","Gonja","FALSE","gonja","Gonja","Gonja","TRUE","Gonja","","Gonja","FALSE","กอนจา","","กอนจา","FALSE","Gonja","Bahasa Gonja","Bahasa Gonja","TRUE","Gonja.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gorontalo","Gorontalo","","gor","","","","","Gorontalo","","Gorontalo","FALSE","Gorontalo","Gorontalo","Gorontalo","TRUE","Gorontalo","","Gorontalo","FALSE","גורונטלו","","גורונטלו","FALSE","جورونتالو","","جورونتالو","FALSE","गोरोन्तालो","","गोरोन्तालो","FALSE","গোরোন্তালো","গরণটালো ","গরণটালো ","TRUE","Gorontalo ରେ","","Gorontalo ରେ","FALSE","","FALSE","Gorontalo","Bahasa Gorontalo","Bahasa Gorontalo","TRUE","Горонтало","горонтало","горонтало","TRUE","哥伦打洛","","哥伦打洛","FALSE","Gorontalo","","Gorontalo","FALSE","Gorontalo","Gorontalo","Gorontalo","TRUE","Gorontalo","","Gorontalo","FALSE","gorontalo","","gorontalo","FALSE","Gorontalo.","Bahasa Gorontalo","Bahasa Gorontalo","TRUE","Gorontalo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gourmanchema","Gourmanchema","","gux","","","","","Gourmanchema","","Gourmanchema","FALSE","Gourmanchema","Gourmanchema","Gourmanchema","TRUE","Gourmanchema","","Gourmanchema","FALSE","Gourmanchema","","Gourmanchema","FALSE","Gourmanchema","","Gourmanchema","FALSE","Gourmanchema","","Gourmanchema","FALSE","Gourmanchema","গোরমনচমা","গোরমনচমা","TRUE","Gourmanchema","","Gourmanchema","FALSE","","FALSE","Gourmanchema","Bahasa Gourmanchema","Bahasa Gourmanchema","TRUE","Gourmanchema","гурманчема","гурманчема","TRUE","Gourmanchema","","Gourmanchema","FALSE","Gourmanchema","","Gourmanchema","FALSE","Gourmanchema","Gourmanchema","Gourmanchema","TRUE","Gourmanchema","","Gourmanchema","FALSE","gourmanchema","","gourmanchema","FALSE","Gourmanchema","Bahasa Gourmanchema","Bahasa Gourmanchema","TRUE","Gourmanchema.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Greek","ελληνικά","","el","","","","","griego","","griego","FALSE","grego","Grego","Grego","TRUE","grec","","grec","FALSE","יווני","","יווני","FALSE","اليونانية","","اليونانية","FALSE","यूनानी","","यूनानी","FALSE","গ্রিক","গ্রীক","গ্রীক","TRUE","ଗ୍ରୀକ୍","","ଗ୍ରୀକ୍","FALSE","","FALSE","Yunani","Bahasa Yunani","Bahasa Yunani","TRUE","греческий","","греческий","TRUE","希腊语","","希腊语","FALSE","Greek","","Greek","FALSE","greek","Kigiriki","Kigiriki","TRUE","ግሪክኛ","ግሪክኛ","ግሪክኛ","TRUE","กรีก","","กรีก","FALSE","Greek","Bahasa Yunani","Bahasa Yunani","TRUE","Griyego","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Guarani","Guaraní","avañe’ẽ","gn","Keyboard_european","","","","guaraní","guaraní","guaraní","TRUE","Guarani","Guarani","Guarani","TRUE","Guarani","Guarani","Guarani","TRUE","גוארני","","גוארני","TRUE","غواراني","الغوارانية","الغوارانية","FALSE","गुआरानी","","गुआरानी","FALSE","গুয়ারানি","গ্যারানি","গ্যারানি","TRUE","ଗୌରାନି","","ଗୌରାନି","FALSE","","FALSE","Guarani","Bahasa Guarani","Bahasa Guarani","TRUE","Гуарани","гуарани","гуарани","TRUE","瓜拉尼","","瓜拉尼","FALSE","Guwaraniyanci","","Guwaraniyanci","FALSE","Guarani","Kiguarani","Kiguarani","TRUE","ጉራኒኛ","ጉራኒኛ","ጉራኒኛ","TRUE","guarani","","guarani","FALSE","Guarani.","Bahasa Guarani","Bahasa Guarani","TRUE","Guarani","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Guinea-Bissau Creole","Crioulo","","pov","","","","","Guinea Bissau criolla","","Guinea Bissau criolla","FALSE","Crioulo da Guiné-Bissau","Crioulo da Guiné-Bissau","Crioulo da Guiné-Bissau","TRUE","Guinée-Bissau Créole","","Guinée-Bissau Créole","FALSE","גינאה ביסאו קריאולי","","גינאה ביסאו קריאולי","FALSE","غينيا بيساو الكريول","","غينيا بيساو الكريول","FALSE","गिनी-बिसाऊ क्रियोल","","गिनी-बिसाऊ क्रियोल","FALSE","গিনি-বিসাউ ক্রেওল","গিনি-বসাউ ক্রিওল","গিনি-বসাউ ক্রিওল","TRUE","ଗିନି-ବିସାଉ Creole","","ଗିନି-ବିସାଉ Creole","FALSE","","FALSE","Guinea-Bissau Creole","Bahasa Kreol Guinea-Bissau","Bahasa Kreol Guinea-Bissau","TRUE","Гвинея-Бисау креольский","","Гвинея-Бисау креольский","TRUE","几内亚比绍克里奥尔语","","几内亚比绍克里奥尔语","FALSE","Guinea-Bissau Creole","","Guinea-Bissau Creole","FALSE","Ginebisau Creole","Kikreoli cha Guinea-Bissau","Kikreoli cha Guinea-Bissau","TRUE","ጊኒ-ቢሳው ክሪኦል","","ጊኒ-ቢሳው ክሪኦል","FALSE","กินีบิสเซาครีโอล","","กินีบิสเซาครีโอล","FALSE","Guinea-Bissau Creole","Bahasa Kreol Guinea-Bissau","Bahasa Kreol Guinea-Bissau","TRUE","Guinea-Bissau Creole.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Gujarati","Gujarātī","","guj","","","","*in own script","gujarati","","gujarati","FALSE","Gujarati","Guzerate ","Guzerate ","TRUE","gujarati","","gujarati","FALSE","גוג'ראטית","","גוג'ראטית","FALSE","الغوجاراتية","","الغوجاراتية","FALSE","गुजराती","","गुजराती","FALSE","গুজরাটি","গুজরাটি","গুজরাটি","TRUE","ଗୁଜରାତୀ","","ଗୁଜରାତୀ","FALSE","","FALSE","Gujarati","Bahasa Gujarat","Bahasa Gujarat","TRUE","гуджарати","","гуджарати","TRUE","古吉拉特语","","古吉拉特语","FALSE","Gujarati","","Gujarati","FALSE","Kigujarati","Kigujarati","Kigujarati","TRUE","ጉጅራቲ","","ጉጅራቲ","FALSE","คุชราต","","คุชราต","FALSE","Gujarati","Bahasa Gujarat","Bahasa Gujarat","TRUE","Gujarati","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Hausa","Harshen Hausa","هَرْشَن هَوْسَ","ha","Keyboard_naijanfd10","true","","","Hausa","hausa","hausa","TRUE","Hausa","Hauça","Hauça","TRUE","haoussa","Hausa","Hausa","TRUE","האוסה","","האוסה","TRUE","الهوسا","لغة الهوسا","لغة الهوسا","FALSE","होउसा","","होउसा","FALSE","হাউসা","হাউসা","হাউসা","TRUE","Hausa","","Hausa","FALSE","","FALSE","Hausa","Bahasa Hausa","Bahasa Hausa","TRUE","хауса","","хауса","TRUE","豪萨语","","豪萨语","FALSE","Hausa","","Hausa","FALSE","Hausa","Kihausa","Kihausa","TRUE","ሃውሳ","","ሃውሳ","FALSE","hausa","","hausa","FALSE","Hausa.","Bahasa Hausa","Bahasa Hausa","TRUE","Hausa","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Hebrew","עברית","","he","","","","","hebreo","hebreo","hebreo","TRUE","hebraico","Hebraico","Hebraico","TRUE","hébreu","Hébreu","Hébreu","TRUE","עִברִית","עברית","עברית","TRUE","اللغة العبرية","العبرية","العبرية","FALSE","यहूदी","","यहूदी","FALSE","হিব্রু","হিব্রু","হিব্রু","TRUE","ହେବ୍ର୍ୟୁ","","ହେବ୍ର୍ୟୁ","FALSE","","FALSE","Ibrani","Bahasa Ibrani","Bahasa Ibrani","TRUE","иврит","","иврит","TRUE","希伯来语","","希伯来语","FALSE","Hebrew","","Hebrew","FALSE","Hebrew","Kiebrania","Kiebrania","TRUE","ሂብሩ","","ሂብሩ","FALSE","ชาวฮีบรู","","ชาวฮีบรู","FALSE","Ibrani","Bahasa Ibrani","Bahasa Ibrani","TRUE","Hebreo","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Herero","Otjiherero","","hz","","","","","herero","","herero","FALSE","Herero","Herero","Herero","TRUE","Herero","","Herero","FALSE","הררו","","הררו","FALSE","هيريرو","","هيريرو","FALSE","हेरेरो","","हेरेरो","FALSE","হেরেরো","হিরো","হিরো","TRUE","Herero","","Herero","FALSE","","FALSE","Herero","Bahasa Herero","Bahasa Herero","TRUE","гереро","","гереро","TRUE","赫勒娄族","","赫勒娄族","FALSE","Herero","","Herero","FALSE","Herero","Kiherero","Kiherero","TRUE","ሄሬሮ","","ሄሬሮ","FALSE","herero","","herero","FALSE","Herero.","Bahasa Herero","Bahasa Herero","TRUE","Herero","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Hindi","हिन्दी","Hindī","hi","Keyboard_dev_inscript","true","","","hindi","hindi","hindi","TRUE","hindi","Hindi","Hindi","TRUE","hindi","Hindi","Hindi","TRUE","הינדי","","הינדי","TRUE","الهندية","الهندية","الهندية","FALSE","हिन्दी","","हिन्दी","FALSE","হিন্দি","হিন্দি","হিন্দি","TRUE","ହିନ୍ଦୀ","","ହିନ୍ଦୀ","FALSE","","FALSE","Hindi","Bahasa Hindi","Bahasa Hindi","TRUE","хинди","","хинди","TRUE","印地语","","印地语","FALSE","Hindi","","Hindi","FALSE","hindi","Kihindi","Kihindi","TRUE","ሂንዲ","","ሂንዲ","FALSE","ภาษาฮินดี","","ภาษาฮินดี","FALSE","Hindi.","Bahasa Hindi","Bahasa Hindi","TRUE","Hindi","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Hiri Motu","Hiri Motu","","ho","","","","","Hiri motu","","Hiri motu","FALSE","hiri Motu","Hiri Motu","Hiri Motu","TRUE","Hiri motu","","Hiri motu","FALSE","ירי מוטו","","ירי מוטו","FALSE","هيري موتو","","هيري موتو","FALSE","हिरी मोटू","","हिरी मोटू","FALSE","হিরি মোতু","হিরি মোটু","হিরি মোটু","TRUE","Hiri Motu","","Hiri Motu","FALSE","","FALSE","Hiri Motu","Bahasa Hiri Motu","Bahasa Hiri Motu","TRUE","Hiri Моту","хиримоту","хиримоту","TRUE","希里摩图语","","希里摩图语","FALSE","Hiri Motu","","Hiri Motu","FALSE","Kihiri Motu","Hiri Motu","Hiri Motu","TRUE","ሂሪ","","ሂሪ","FALSE","Hiri Motu","","Hiri Motu","FALSE","Hiri motu.","Bahasa Hiri Motu","Bahasa Hiri Motu","TRUE","HIRI MOTU.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Huli","Huli-Hulidana","Huri","hui","","","","","huli","","huli","FALSE","Huli","Huli","Huli","TRUE","Huli","","Huli","FALSE","חולים","","חולים","FALSE","حولي","","حولي","FALSE","हुली","","हुली","FALSE","Huli","হুলি","হুলি","TRUE","Huli","","Huli","FALSE","","FALSE","Huli","Bahasa Huli","Bahasa Huli","TRUE","Хули","хули","хули","TRUE","湖里","","湖里","FALSE","Huli","","Huli","FALSE","Huli","Huli","Huli","TRUE","Huli","","Huli","FALSE","ฮีลี่","","ฮีลี่","FALSE","Huli.","Bahasa Huli","Bahasa Huli","TRUE","Huli.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Hungarian","Magyar","","hun","","","","","húngaro","","húngaro","FALSE","húngaro","Húngaro","Húngaro","TRUE","hongrois","","hongrois","FALSE","הוּנגָרִי","","הוּנגָרִי","FALSE","الهنغارية","","الهنغارية","FALSE","हंगेरी","","हंगेरी","FALSE","হাঙ্গেরীয়","হাঙ্গেরীয়","হাঙ্গেরীয়","TRUE","ହଙ୍ଗେରିଆନ୍","","ହଙ୍ଗେରିଆନ୍","FALSE","","FALSE","Hongaria","Bahasa Hongaria","Bahasa Hongaria","TRUE","Венгерский","венгерский","венгерский","TRUE","匈牙利","","匈牙利","FALSE","Hungarian","","Hungarian","FALSE","hungarian","Kihungari","Kihungari","TRUE","ሃንጋሪያን","","ሃንጋሪያን","FALSE","ชาวฮังการี","","ชาวฮังการี","FALSE","Hungary.","Bahasa Hungary","Bahasa Hungary","TRUE","Hungarian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Iban","jaku Iban","","iba","","","","","Iban","","Iban","FALSE","Iban","Iban","Iban","TRUE","iban","","iban","FALSE","איבאן","","איבאן","FALSE","ايبان","","ايبان","FALSE","इबान","","इबान","FALSE","ইবান","ইবান","ইবান","TRUE","IBAN","","IBAN","FALSE","","FALSE","Iban","Bahasa Iban","Bahasa Iban","TRUE","Iban","ибанский","ибанский","TRUE","伊班","","伊班","FALSE","Iban","","Iban","FALSE","Iban","Iban","Iban","TRUE","IBAN","","IBAN","FALSE","ฉัน","","ฉัน","FALSE","Iban","Bahasa Iban","Bahasa Iban","TRUE","Iban","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ibanag","","","ibg","","","","","ibanag","","ibanag","FALSE","Ibanag","Ibanag","Ibanag","TRUE","Ibanag","","Ibanag","FALSE","Ibanag","","Ibanag","FALSE","Ibanag","","Ibanag","FALSE","Ibanag","","Ibanag","FALSE","Ibanag,","ইবানাগ ","ইবানাগ ","TRUE","Ibanag","","Ibanag","FALSE","","FALSE","Ibanag","Bahasa Ibanag","Bahasa Ibanag","TRUE","Ibanag","ибанагский","ибанагский","TRUE","Ibanag","","Ibanag","FALSE","Ibanag","","Ibanag","FALSE","Ibanag","Ibanag","Ibanag","TRUE","Ibanag","","Ibanag","FALSE","ยกตัวอย่าง","","ยกตัวอย่าง","FALSE","Ibanag.","Bahasa Ibanag","Bahasa Ibanag","TRUE","Ibanag","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ibibio","","","ibb","","","","","ibibio","","ibibio","FALSE","Ibibio","Ibibio","Ibibio","TRUE","Ibibio","","Ibibio","FALSE","איביביו","","איביביו","FALSE","الإيبيبيوية","","الإيبيبيوية","FALSE","ईबिबियो","","ईबिबियो","FALSE","ইবিবিও","আইবিবিও","আইবিবিও","TRUE","ଲବିବିଓ","","ଲବିବିଓ","FALSE","","FALSE","Ibibio","Bahasa Ibilio","Bahasa Ibilio","TRUE","Ibibio","ибибио","ибибио","TRUE","伊比比欧","","伊比比欧","FALSE","Ibibio","","Ibibio","FALSE","Ibibio","Ibibio","Ibibio","TRUE","Ibibio","","Ibibio","FALSE","ibibio","","ibibio","FALSE","Ibibio.","Bahasa Ibibio","Bahasa Ibibio","TRUE","Ibibio","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Icelandic","Íslenskt tungumál","","is","","","","","islandés","","islandés","FALSE","islandês","Islandês","Islandês","TRUE","islandais","","islandais","FALSE","איסלנדי","","איסלנדי","FALSE","أيسلندي","","أيسلندي","FALSE","आइसलैंड का","","आइसलैंड का","FALSE","আইসল্যান্ডীয়","আইসল্যান্ডিক","আইসল্যান্ডিক","TRUE","Icelandic","","Icelandic","FALSE","","FALSE","bahasa Islandia","Bahasa Islandia","Bahasa Islandia","TRUE","исландский","","исландский","TRUE","冰岛的","","冰岛的","FALSE","Icelandic","","Icelandic","FALSE","Kiaislandi","Kiaislandi","Kiaislandi","TRUE","አይስላንዲ ክ","","አይስላንዲ ክ","FALSE","เกี่ยวกับไอซ์แลนด์","","เกี่ยวกับไอซ์แลนด์","FALSE","Icelandic.","Bahasa Iceland","Bahasa Iceland","TRUE","Icelandic.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Igbo","Asụsụ Igbo","","ig","Keyboard_naijanfd10","true","","","Igbo","igbo","igbo","TRUE","Igbo","Igbo","Igbo","TRUE","Igbo","Igbo","Igbo","TRUE","אגדתי","איגבו","איגבו","TRUE","الإيبو","الإغبو","الإغبو","FALSE","ईग्बो","","ईग्बो","FALSE","ইগ্বো","ইগবো","ইগবো","TRUE","Igbo","","Igbo","FALSE","","FALSE","Igbo","Bahasa Igbo","Bahasa Igbo","TRUE","Игбо","игбо","игбо","TRUE","伊博","","伊博","FALSE","Igbo","","Igbo","FALSE","Igbo","Kiigbo","Kiigbo","TRUE","ኢግቦኛ","ኢግቦኛ","ኢግቦኛ","TRUE","ไอสว่าน","","ไอสว่าน","FALSE","Igbo.","Bahasa Igbo","Bahasa Igbo","TRUE","Igbo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ilokano","Iloko ","Pagsasao nga Ilokano","ilo","","","","","Ilokano","","Ilokano","FALSE","ilokano","Ilocano","Ilocano","TRUE","ilokano","","ilokano","FALSE","Ilokano","","Ilokano","FALSE","Ilokano","","Ilokano","FALSE","Ilokano","","Ilokano","FALSE","Ilokano","ইলোকানো","ইলোকানো","TRUE","Ilokano","","Ilokano","FALSE","","FALSE","Ilokano","Bahasa Ilokano","Bahasa Ilokano","TRUE","Ilokano","илоканский","илоканский","TRUE","Ilokano","","Ilokano","FALSE","Ilokano","","Ilokano","FALSE","Ilokano","Ilokano","Ilokano","TRUE","Ilokano","","Ilokano","FALSE","ilokano","","ilokano","FALSE","Ilokano.","Bahasa Ilokano","Bahasa Ilokano","TRUE","Ilokano.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Indonesian","Bahasa Indonesia","","id","Keyboard_basic_kbdus","","","","indonesio","indonesio","indonesio","TRUE","indonésio","Indonésio","Indonésio","TRUE","indonésien","Indonésien","Indonésien","TRUE","אינדונזי","אינדונזית","אינדונזית","TRUE","الأندونيسية","الإندونيسية","الإندونيسية","FALSE","इन्डोनेशियाई","","इन्डोनेशियाई","FALSE","ইন্দোনেশিয়াসম্বন্ধীয়","ইন্দোনেশীয়","ইন্দোনেশীয়","TRUE","ଇଣ୍ଡୋନେସିଆନ୍","","ଇଣ୍ଡୋନେସିଆନ୍","FALSE","","FALSE","bahasa Indonesia","Bahasa Indonesia","Bahasa Indonesia","TRUE","индонезийский","","индонезийский","TRUE","印度尼西亚","","印度尼西亚","FALSE","Indonesian","","Indonesian","FALSE","Indonesia","Kiindonesia","Kiindonesia","TRUE","ኢንዶኔዥያን","","ኢንዶኔዥያን","FALSE","ชาวอินโดนีเซีย","","ชาวอินโดนีเซีย","FALSE","Bahasa Indonesia.","Bahasa Indonesia","Bahasa Indonesia","TRUE","Indonesian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Irish","Gaeilge","","gle","","","","","irlandesa","","irlandesa","FALSE","irlandês","Irlandês","Irlandês","TRUE","irlandais","","irlandais","FALSE","אִירִית","","אִירִית","FALSE","الأيرلندية","","الأيرلندية","FALSE","आयरिश","","आयरिश","FALSE","আইরিশ","আইরিশ","আইরিশ","TRUE","ଇରିସ୍","","ଇରିସ୍","FALSE","","FALSE","orang Irlandia","Bahasa Irlandia","Bahasa Irlandia","TRUE","ирландский","","ирландский","TRUE","爱尔兰的","","爱尔兰的","FALSE","Irish","","Irish","FALSE","irish","Kiayalandi","Kiayalandi","TRUE","አይሪሽ","","አይሪሽ","FALSE","ชาวไอริช","","ชาวไอริช","FALSE","Ireland","Bahasa Ireland","Bahasa Ireland","TRUE","Irish","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Italian","Italiano","","it","","","","","italiano","","italiano","FALSE","italiano","Italiano","Italiano","TRUE","italien","","italien","FALSE","אִיטַלְקִית","","אִיטַלְקִית","FALSE","الإيطالي","","الإيطالي","FALSE","इतालवी","","इतालवी","FALSE","ইতালীয়","ইতালিয়ান","ইতালিয়ান","TRUE","ଇଟାଲୀୟ","","ଇଟାଲୀୟ","FALSE","","FALSE","Italia","Bahasa Italia","Bahasa Italia","TRUE","итальянский","","итальянский","TRUE","意大利","","意大利","FALSE","Italian","","Italian","FALSE","Italia","Kiitaliano","Kiitaliano","TRUE","ጣሊያንኛ","ጣሊያንኛ","ጣሊያንኛ","TRUE","ภาษาอิตาลี","","ภาษาอิตาลี","FALSE","Bahasa Itali","Bahasa Itali","Bahasa Itali","TRUE","Italian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Japanese","日本語","Nihongo","ja","Keyboard_japanese","true","","","japonés","japonés","japonés","TRUE","japonês","Japonês","Japonês","TRUE","Japonais","Japonais","Japonais","TRUE","יַפָּנִית","יפנית","יפנית","TRUE","اليابانية","اليابانية","اليابانية","FALSE","जापानी","","जापानी","FALSE","জাপানি","জাপানি","জাপানি","TRUE","ଜାପାନୀ","","ଜାପାନୀ","FALSE","","FALSE","Jepang","Bahasa Jepang","Bahasa Jepang","TRUE","японский язык","японский","японский","TRUE","日本","","日本","FALSE","Japan","","Japan","FALSE","Kijapani","Kijapani","Kijapani","TRUE","ጃፓንኛ","ጃፓንኛ","ጃፓንኛ","TRUE","ญี่ปุ่น","","ญี่ปุ่น","FALSE","Jepun","Bahasa Jepun","Bahasa Jepun","TRUE","Japanese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Javanese","wong jawa","boso jowo (jawa)","jav","","","","","javanés","","javanés","FALSE","javanês","Javanês","Javanês","TRUE","Javanais","","Javanais","FALSE","יָאוָנִי","","יָאוָנִי","FALSE","جاوي","","جاوي","FALSE","जावानीस","","जावानीस","FALSE","জাভানি","যবদ্বীপীয়","যবদ্বীপীয়","TRUE","ଜାଭାନିଜ୍","","ଜାଭାନିଜ୍","FALSE","","FALSE","Jawa","Bahasa Jawa","Bahasa Jawa","TRUE","яванский","","яванский","TRUE","爪哇","","爪哇","FALSE","Javanisanci","","Javanisanci","FALSE","Javanese","Kijava","Kijava","TRUE","ጃቫኒስ","","ጃቫኒስ","FALSE","ชาวชวา","","ชาวชวา","FALSE","Jawa","Bahasa Jawa","Bahasa Jawa","TRUE","Javanese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Jola-Fognyi","Kujóolay","","dyo","","","","","Jola-Fognyi","","Jola-Fognyi","FALSE","Jola-Fognyi","Jola-Fognyi","Jola-Fognyi","TRUE","Jola-Fognyi","","Jola-Fognyi","FALSE","יולה-Fognyi","","יולה-Fognyi","FALSE","الجولا-Fognyi","","الجولا-Fognyi","FALSE","जोला-Fognyi","","जोला-Fognyi","FALSE","জোলা-Fognyi","জোলা-ফোগনি","জোলা-ফোগনি","TRUE","Jola-Fognyi","","Jola-Fognyi","FALSE","","FALSE","Jola-Fognyi","Bahasa Jola-Fognyi","Bahasa Jola-Fognyi","TRUE","Йол-Fognyi","джола-фони","джола-фони","TRUE","Jola-Fognyi","","Jola-Fognyi","FALSE","Jola-Fognyi","","Jola-Fognyi","FALSE","Jola-Fognyi","Jola-Fognyi","Jola-Fognyi","TRUE","ዮላ-Fognyi","","ዮላ-Fognyi","FALSE","jola-fognyi","","jola-fognyi","FALSE","Jola-Fognyi.","Bahasa Jola-Fognyi","Bahasa Jola-Fognyi","TRUE","Jola-fognyi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kachin (Jingpho)","Jìngphòʔ gà","ဈိာင်ေဖါစ်","kac","","","","","Kachin (Jingpho)","","Kachin (Jingpho)","FALSE","Kachin (Jingpho)","Kachin ","Kachin ","TRUE","Kachin (Jingpho)","","Kachin (Jingpho)","FALSE","קאצ'ין (Jingpho)","","קאצ'ין (Jingpho)","FALSE","كاشين (Jingpho)","","كاشين (Jingpho)","FALSE","काचिन (Jingpho)","","काचिन (Jingpho)","FALSE","কাচিন (Jingpho)","কাচিন (জিংফো)","কাচিন (জিংফো)","TRUE","Kachin (Jingpho)","","Kachin (Jingpho)","FALSE","","FALSE","Kachin (Jingpho)","Bahasa Kachin (Jingpho)","Bahasa Kachin (Jingpho)","TRUE","Качин (Jingpho)","качинский","качинский","TRUE","克钦(Jingpho)","","克钦(Jingpho)","FALSE","Kachin (Jingpho)","","Kachin (Jingpho)","FALSE","Kachin (Jingpho)","Kachin (Jingpho)","Kachin (Jingpho)","TRUE","Kachin (Jingpho)","","Kachin (Jingpho)","FALSE","Kachin (Jingpho)","","Kachin (Jingpho)","FALSE","Kachin (Jingpho)","Bahasa Kachin (Jingpho)","Bahasa Kachin (Jingpho)","TRUE","Kachin (Jingpho)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kaili-Ledo/ Ledo-Kaili","Ledo Kaili","Palu","lew","","","","","Kaili-Ledo / Ledo-Kaili","","Kaili-Ledo / Ledo-Kaili","FALSE","Kaili-Ledo / Ledo-Kaili","Kaili-Ledo/ Ledo-Kaili","Kaili-Ledo/ Ledo-Kaili","TRUE","Kaili-Ledo / Ledo-Kaili","","Kaili-Ledo / Ledo-Kaili","FALSE","Kaili-Ledo / Ledo-Kaili","","Kaili-Ledo / Ledo-Kaili","FALSE","كايلى-يدو / ليدو-كايلى","","كايلى-يدو / ليدو-كايلى","FALSE","कैली-लेडो / लेडो-कैली","","कैली-लेडो / लेडो-कैली","FALSE","Kaili,-Ledo / Ledo Kaili,-","কেলি-লেদো / লেদো-কেলি","কেলি-লেদো / লেদো-কেলি","TRUE","Kaili-Ledo / Ledo-Kaili","","Kaili-Ledo / Ledo-Kaili","FALSE","","FALSE","Kaili Ledo-/ Ledo-Kaili","Bahasa Kaili Ledo-/ Ledo-Kaili","Bahasa Kaili Ledo-/ Ledo-Kaili","TRUE","Kaili-Ледо / Ледо-Kaili","кайли-ледо","кайли-ледо","TRUE","凯里 - 雷多/利多,凯里","","凯里 - 雷多/利多,凯里","FALSE","Kaili-Ledo / Ledo-Kaili","","Kaili-Ledo / Ledo-Kaili","FALSE","Kaili-Ledo / Ledo Kaili-","Kaili-Ledo/ Ledo-Kaili","Kaili-Ledo/ Ledo-Kaili","TRUE","Kaili-Ledo / Ledo-Kaili","","Kaili-Ledo / Ledo-Kaili","FALSE","kaili-ledo / ledo-kaili","","kaili-ledo / ledo-kaili","FALSE","Kaili-Ledo / Ledo-Kaili","Bahasa Kaili-Ledo / Ledo-Kaili","Bahasa Kaili-Ledo / Ledo-Kaili","TRUE","Kaili-ledo / ledo-kaili.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kalaallisut (Greenlandic)","Kalaallisut","","kl","","","","","Kalaallisut (Groenlandia)","","Kalaallisut (Groenlandia)","FALSE","Kalaallisut (Gronelândia)","Gronelandês","Gronelandês","TRUE","Kalaallisut (groenlandais)","","Kalaallisut (groenlandais)","FALSE","קאלאאליסוט (גרינלנדית)","","קאלאאליסוט (גרינלנדית)","FALSE","الكالاليست (غرينلاند)","","الكالاليست (غرينلاند)","FALSE","ग्रीनलैंडिक (ग्रीनलैंडिक)","","ग्रीनलैंडिक (ग्रीनलैंडिक)","FALSE","ক্যালাল্লিসুট (গ্রীনল্যান্ডিক)","ক্যালালিসুট (গ্রিনল্যান্ড)","ক্যালালিসুট (গ্রিনল্যান্ড)","TRUE","Kalaallisut (Greenlandic)","","Kalaallisut (Greenlandic)","FALSE","","FALSE","Kalaallisut (Greenland)","Bahasa Kalaallisut (Greenland)","Bahasa Kalaallisut (Greenland)","TRUE","Гренландский (гренландский)","калаалисут","калаалисут","TRUE","格陵兰(格陵兰)","","格陵兰(格陵兰)","FALSE","Kalaallisut (Greenlandic)","","Kalaallisut (Greenlandic)","FALSE","Kalaallisut (Greenlandic)","Kalaallisut (Greenlandic)","Kalaallisut (Greenlandic)","TRUE","ካላሊሱትኛ (በግሪንላንድኛ)","","ካላሊሱትኛ (በግሪንላንድኛ)","FALSE","Kalaallisut (กรีนแลนด์)","","Kalaallisut (กรีนแลนด์)","FALSE","Kalaallisut (Greenlandic)","Bahasa Kalaallisut (Greenland)","Bahasa Kalaallisut (Greenland)","TRUE","Kalaallisut (Greenlandic)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kannada","ಕನ್ನಡ","","kn","","","","","kannada","","kannada","FALSE","Kannada","Canarês","Canarês","TRUE","kannada","","kannada","FALSE","קאנדה","","קאנדה","TRUE","الكانادا","","الكانادا","FALSE","कन्नड़","","कन्नड़","FALSE","কন্নড","কান্নাডা","কান্নাডা","TRUE","କନ୍ନଡ","","କନ୍ନଡ","FALSE","","FALSE","Kannada","Bahasa Kannada","Bahasa Kannada","TRUE","каннада","","каннада","TRUE","卡纳达语","","卡纳达语","FALSE","kannada","","kannada","FALSE","kannada","Kikanada","Kikanada","TRUE","ካናዳ","","ካናዳ","FALSE","ประเทศกันนาดา","","ประเทศกันนาดา","FALSE","Kannada.","Bahasa Kannada","Bahasa Kannada","TRUE","Kannada","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kanuri","","","kr","","","","","Kanuri","","Kanuri","FALSE","Kanuri","Canúri ","Canúri ","TRUE","Kanuri","","Kanuri","FALSE","קנורי","","קנורי","FALSE","الكانوري","","الكانوري","FALSE","कनूरी","","कनूरी","FALSE","কানুরি","কানুরি","কানুরি","TRUE","କାନୁରି","","କାନୁରି","FALSE","","FALSE","Kanuri","Bahasa Kanuri","Bahasa Kanuri","TRUE","канури","","канури","TRUE","卡努里","","卡努里","FALSE","kanuri","","kanuri","FALSE","Kanuri","Kanuri","Kanuri","TRUE","Kanuri","","Kanuri","FALSE","กานีร์","","กานีร์","FALSE","Kanuri","Bahasa Kanuri","Bahasa Kanuri","TRUE","Kanuri","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kapampangan","","","pam","","","","","Kapampangan","","Kapampangan","FALSE","Kapampangan","Pampango","Pampango","TRUE","Kapampangan","","Kapampangan","FALSE","Kapampangan","","Kapampangan","FALSE","Kapampangan","","Kapampangan","FALSE","Kapampangan","","Kapampangan","FALSE","Kapampangan","কাপম্পাঙ্গন","কাপম্পাঙ্গন","TRUE","Kapampangan","","Kapampangan","FALSE","","FALSE","Kapampangan","Bahasa Kapampangan","Bahasa Kapampangan","TRUE","Kapampangan","капампанган","капампанган","TRUE","Kapampangan","","Kapampangan","FALSE","Kapampangan","","Kapampangan","FALSE","Kapampangan","Kapampangan","Kapampangan","TRUE","Kapampangan","","Kapampangan","FALSE","kapampangan","","kapampangan","FALSE","Kapampangan.","Bahasa Kapampangan","Bahasa Kapampangan","TRUE","Kapampangan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Karakalpak","Қарақалпақ тили / Qaraqalpaq tili","قاراقالپاق تىلى","kaa","","","","","Karakalpak","","Karakalpak","FALSE","Karakalpak","Caracalpaque","Caracalpaque","TRUE","karakalpak","","karakalpak","FALSE","Karakalpak","","Karakalpak","FALSE","Karakalpak","","Karakalpak","FALSE","Karakalpak","","Karakalpak","FALSE","Karakalpak","করাককল্পক ","করাককল্পক ","TRUE","Karakalpak","","Karakalpak","FALSE","","FALSE","Karakalpak","Bahasa Karakalpak","Bahasa Karakalpak","TRUE","Каракалпак","каракалпакский","каракалпакский","TRUE","卡拉卡尔帕克","","卡拉卡尔帕克","FALSE","Karakalpak","","Karakalpak","FALSE","Karakalpak","Karakalpak","Karakalpak","TRUE","Karakalpak","","Karakalpak","FALSE","Karakalpak","","Karakalpak","FALSE","Karakalpak","Bahasa Karakalpak","Bahasa Karakalpak","TRUE","Karakalpak","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kasem","","Kasena","xsm","","","","","Kasem","","Kasem","FALSE","Kasem","Kasem","Kasem","TRUE","Kasem","","Kasem","FALSE","קאסם","","קאסם","FALSE","قاسم","","قاسم","FALSE","Kasem","","Kasem","FALSE","কাশেম","কাসেম","কাসেম","TRUE","Kasem","","Kasem","FALSE","","FALSE","Kasem","Bahasa Kasem ","Bahasa Kasem ","TRUE","Касем","касена","касена","TRUE","格森","","格森","FALSE","Kasem","","Kasem","FALSE","Kasem","Kasem","Kasem","TRUE","Kasem","","Kasem","FALSE","เกษม","","เกษม","FALSE","Kasem","Bahasa Kasem","Bahasa Kasem","TRUE","Kasem","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kashmiri","कॉशुर ","كٲشُر","ks","","","","","Cachemira","","Cachemira","FALSE","Kashmiri","Caxemira","Caxemira","TRUE","Kashmiri","","Kashmiri","FALSE","קשמירית","","קשמירית","FALSE","كشمير","","كشمير","FALSE","कश्मीरी","","कश्मीरी","FALSE","কাশ্মীরি","কাশ্মীরি","কাশ্মীরি","TRUE","କାଶ୍ମିରୀ","","କାଶ୍ମିରୀ","FALSE","","FALSE","Kashmir","Bahasa Kashmir","Bahasa Kashmir","TRUE","Kashmiri","кашмирский","кашмирский","TRUE","克什米尔","","克什米尔","FALSE","yankin Kashmiri","","yankin Kashmiri","FALSE","Kashmiri","Kikashmiri","Kikashmiri","TRUE","ካሽሚርኛ","ካሽሚርኛ","ካሽሚርኛ","TRUE","kashmiri","","kashmiri","FALSE","Kashmir.","Bahasa Kashmir","Bahasa Kashmir","TRUE","Kashmiri","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kâte","","","kmg","","","","","Kate","","Kate","FALSE","Kate","Kate","Kate","TRUE","kate","","kate","FALSE","קייט","","קייט","FALSE","كيت","","كيت","FALSE","Kâte","","Kâte","FALSE","Kâte,","কেট ","কেট ","TRUE","ନାମଗୁଡିକ","","ନାମଗୁଡିକ","FALSE","","FALSE","KATE","Bahasa Kate","Bahasa Kate","TRUE","Катя","кате","кате","TRUE","凯特","","凯特","FALSE","Kâte","","Kâte","FALSE","Kâte","Kâte","Kâte","TRUE","ኬት","","ኬት","FALSE","kâte","","kâte","FALSE","Kâte.","Bahasa Kâte","Bahasa Kâte","TRUE","Kâte.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kazakh","Қазақ тілі / Qazaq tili","قازاق ٴتىلى","kk","","","","","kazaja","","kazaja","FALSE","Kazakh","Cazaque","Cazaque","TRUE","kazakh","","kazakh","FALSE","קזחית","","קזחית","FALSE","الكازاخية","","الكازاخية","FALSE","कजाख","","कजाख","FALSE","কাজাখ","কাজাখ","কাজাখ","TRUE","Kazakh","","Kazakh","FALSE","","FALSE","Kazakh","Bahasa Kazakh","Bahasa Kazakh","TRUE","казах","казахский","казахский","TRUE","哈萨克人","","哈萨克人","FALSE","Kazakh","","Kazakh","FALSE","Kazakh","Kikazaki","Kikazaki","TRUE","ካዛክሀ","","ካዛክሀ","FALSE","คาซัค","","คาซัค","FALSE","Kazakh.","Bahasa Kazakh","Bahasa Kazakh","TRUE","Kazakh.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kendayan/Salako","Kanayatn","Bahasa Badameà (Ahe, Banana, Belangin, etc.)","knx","","","","","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","Kendayan/Salako","Kendayan/Salako","TRUE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","কেন্ডায়ান / সালাকো","কেন্ডায়ান / সালাকো","TRUE","Kendayan / Salako","","Kendayan / Salako","FALSE","","FALSE","Kendayan / Salako","Bahasa Kendayan / Salako","Bahasa Kendayan / Salako","TRUE","Kendayan / Salako","кендаян","кендаян","TRUE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","Kendayan/Salako","Kendayan/Salako","TRUE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako","","Kendayan / Salako","FALSE","Kendayan / Salako.","Bahasa Kendayan / Salako","Bahasa Kendayan / Salako","TRUE","KENDAY / SALAKO.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Khasi","Ka Ktien Khasi","","kha","","","","","khasi","","khasi","FALSE","Khasi","Khasi","Khasi","TRUE","khasi","","khasi","FALSE","קאסי","","קאסי","FALSE","الكازية","","الكازية","FALSE","खासी","","खासी","FALSE","খাসি","খাসি","খাসি","TRUE","ଖାସି","","ଖାସି","FALSE","","FALSE","Khasi","Bahasa Khasi","Bahasa Khasi","TRUE","Khasi","кхаси","кхаси","TRUE","卡西","","卡西","FALSE","Khasi","","Khasi","FALSE","Khasi","Khasi","Khasi","TRUE","Khasi","","Khasi","FALSE","khasi","","khasi","FALSE","Khasi.","Bahasa Khasi","Bahasa Khasi","TRUE","Khasi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Khmer","ភាសាខ្មែរ","Cambodian","km","Keyboard_khmer10","true","","","Khmer","camboyano","camboyano","TRUE","Khmer","Quemer","Quemer","TRUE","khmer","Khmer","Khmer","TRUE","קמר","חמר (קמר)","חמר (קמר)","TRUE","الخمير","الخميرية","الخميرية","FALSE","खमेर","","खमेर","FALSE","খেমের","কমেযার ","কমেযার ","TRUE","Khmer","","Khmer","FALSE","","FALSE","khmer","Bahasa Khmer","Bahasa Khmer","TRUE","кхмерский","","кхмерский","TRUE","高棉","","高棉","FALSE","Khmer","","Khmer","FALSE","Khmer","Khmeri","Khmeri","TRUE","ክመርኛ","ክመርኛ","ክመርኛ","TRUE","เขมร","","เขมร","FALSE","Khmer.","Bahasa Khmer","Bahasa Khmer","TRUE","Khmer.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Khowar","کھووار","","khw","","","","","Khowar","","Khowar","FALSE","Khowar","Khowar","Khowar","TRUE","Khowar","","Khowar","FALSE","Khowar","","Khowar","FALSE","Khowar","","Khowar","FALSE","Khowar","","Khowar","FALSE","Khowar,","খোয়ার","খোয়ার","TRUE","Khowar","","Khowar","FALSE","","FALSE","Khowar","Bahasa Khowar","Bahasa Khowar","TRUE","Khowar","кховар","кховар","TRUE","Khowar","","Khowar","FALSE","Khowar","","Khowar","FALSE","Khowar","Khowar","Khowar","TRUE","Khowar","","Khowar","FALSE","khowar","","khowar","FALSE","Khowar","Bahasa Khowar","Bahasa Khowar","TRUE","Khowar.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kikuyu","Gĩkũyũ","","ki","","","","","Kikuyu","","Kikuyu","FALSE","Kikuyu","Kikuyu","Kikuyu","TRUE","Kikuyu","","Kikuyu","FALSE","קיקויו","","קיקויו","FALSE","الكيكويو","","الكيكويو","FALSE","किकुयू","","किकुयू","FALSE","কিকু্ইয়ু","ককুয়ু","ককুয়ু","TRUE","Kikuyu","","Kikuyu","FALSE","","FALSE","Kikuyu","Bahasa Kikuyu","Bahasa Kikuyu","TRUE","кикуйю","","кикуйю","TRUE","基库尤","","基库尤","FALSE","Kikuyu","","Kikuyu","FALSE","Kikuyu","Kikuyu","Kikuyu","TRUE","Kikuyu","","Kikuyu","FALSE","kikuyu","","kikuyu","FALSE","Kikuyu.","Bahasa Kikuyu","Bahasa Kikuyu","TRUE","Kikuyu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kimbundu","","","kmb","","","","","kimbundo","","kimbundo","FALSE","Kimbundu","Kimbundu","Kimbundu","TRUE","kimbundu","","kimbundu","FALSE","קימבונדו","","קימבונדו","FALSE","كيمبوندو","","كيمبوندو","FALSE","किम्बन्दु","","किम्बन्दु","FALSE","কিম্বুন্দু","কিম্বুন্ডু","কিম্বুন্ডু","TRUE","Kimbundu","","Kimbundu","FALSE","","FALSE","Kimbundu","Bahasa Kimbundu","Bahasa Kimbundu","TRUE","Северный мбунду","северный мбунду","северный мбунду","TRUE","金邦杜","","金邦杜","FALSE","kimbundu","","kimbundu","FALSE","Kimbundu","Kimbundu","Kimbundu","TRUE","Kimbundu","","Kimbundu","FALSE","Kimbundu","","Kimbundu","FALSE","Kimbundu.","Bahasa Kimbundu","Bahasa Kimbundu","TRUE","Kimbundu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kinaray-a","Kinaray-a","","krj","","","","","Kinaray-A","","Kinaray-A","FALSE","Kinaray-a","Kinaray-a","Kinaray-a","TRUE","Kinaray-a","","Kinaray-a","FALSE","Kinaray-a","","Kinaray-a","FALSE","Kinaray واحد","","Kinaray واحد","FALSE","Kinaray-एक","","Kinaray-एक","FALSE","Kinaray-A","কিনারেয়-অ ","কিনারেয়-অ ","TRUE","Kinaray-ଏକ","","Kinaray-ଏକ","FALSE","","FALSE","Kinaray-a","Bahasa Kinaray-a","Bahasa Kinaray-a","TRUE","Kinaray-а","кинарайя","кинарайя","TRUE","Kinaray-A","","Kinaray-A","FALSE","Kinaray-a","","Kinaray-a","FALSE","Kinaray-a","Kinaray-a","Kinaray-a","TRUE","Kinaray-ሀ","","Kinaray-ሀ","FALSE","คินารีย์ - เอ","","คินารีย์ - เอ","FALSE","Kinaray-A.","Bahasa Kinaray-a","Bahasa Kinaray-a","TRUE","Kinaray-A.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kinyarwanda","Kinyarwanda","","rw","","","","","kinyarwanda","","kinyarwanda","FALSE","kinyarwanda","Kinyarwanda","Kinyarwanda","TRUE","kinyarwanda","","kinyarwanda","FALSE","קנירואנדית","","קנירואנדית","FALSE","الكينيارواندية","","الكينيارواندية","FALSE","किन्यारवाण्डा","","किन्यारवाण्डा","FALSE","কিনয়ারোয়ান্ডা","কিনারওয়ানদা","কিনারওয়ানদা","TRUE","Kinyarwanda","","Kinyarwanda","FALSE","","FALSE","Kinyarwanda","Bahasa Kinyarwanda","Bahasa Kinyarwanda","TRUE","киньяруанда","","киньяруанда","TRUE","卢旺达语","","卢旺达语","FALSE","Kinyarwanda","","Kinyarwanda","FALSE","Kinyarwanda","Kinyarwanda","Kinyarwanda","TRUE","ኪንያዋንዳኛ","","ኪንያዋንዳኛ","FALSE","kinyarwanda","","kinyarwanda","FALSE","Kinyarwanda.","Bahasa Kinyarwanda","Bahasa Kinyarwanda","TRUE","Kinyarwanda","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kiribati","Taetae ni Kiribati","","gil","","","","","Kiribati","","Kiribati","FALSE","Kiribati","Kiribatiano","Kiribatiano","TRUE","Kiribati","","Kiribati","FALSE","קיריבטי","","קיריבטי","FALSE","كيريباس","","كيريباس","FALSE","किरिबाती","","किरिबाती","FALSE","কিরিবাতি","কিরিবাতি","কিরিবাতি","TRUE","କିରିବାଟି","","କିରିବାଟି","FALSE","","FALSE","Kiribati","Bahasa Kiribati","Bahasa Kiribati","TRUE","Кирибати","кирибати","кирибати","TRUE","基里巴斯","","基里巴斯","FALSE","Kiribati","","Kiribati","FALSE","Kiribati","Kiribati","Kiribati","TRUE","ኪሪባቲ","","ኪሪባቲ","FALSE","คิริบาติ","","คิริบาติ","FALSE","Kiribati.","Bahasa Kiribati","Bahasa Kiribati","TRUE","Kiribati","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kirundi","Kirundi","","rn","","","","","kirundi","","kirundi","FALSE","Kirundi","Kirundi","Kirundi","TRUE","kirundi","","kirundi","FALSE","קירונדי","","קירונדי","FALSE","كيروندي","","كيروندي","FALSE","किरुंडी","","किरुंडी","FALSE","কিরুন্ডি","কিরুন্ডি ","কিরুন্ডি ","TRUE","Kirundi","","Kirundi","FALSE","","FALSE","Kirundi","Bahasa Kirundi","Bahasa Kirundi","TRUE","кирунди","","кирунди","TRUE","基隆迪","","基隆迪","FALSE","Harshen Kirundi","","Harshen Kirundi","FALSE","Kirundi","Kirundi","Kirundi","TRUE","ኪሩንዲ","","ኪሩንዲ","FALSE","Kirundi","","Kirundi","FALSE","Kirundi.","Bahasa Kirundi","Bahasa Kirundi","TRUE","Kirundi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kituba (DRC)","Kikongo ya leta","","ktu","","","","Keep both Kituba entries","Kituba (RDC)","","Kituba (RDC)","FALSE","Kituba (RDC)","Kituba","Kituba","TRUE","Kituba (RDC)","","Kituba (RDC)","FALSE","Kituba (DRC)","","Kituba (DRC)","FALSE","كيتوبا (DRC)","","كيتوبا (DRC)","FALSE","Kituba (डीआरसी)","","Kituba (डीआरसी)","FALSE","Kituba, (ডিআরসি)","কিতুবা (ডিআরসি)","কিতুবা (ডিআরসি)","TRUE","Kituba (DRC)","","Kituba (DRC)","FALSE","","FALSE","Kituba (DRC)","Bahasa Kituba (DRC)","Bahasa Kituba (DRC)","TRUE","Китуба (ДРК)","","Китуба (ДРК)","TRUE","Kituba(DRC)","","Kituba(DRC)","FALSE","Kituba (DRC)","","Kituba (DRC)","FALSE","Kituba (DRC)","Kituba (DRC)","Kituba (DRC)","TRUE","Kituba (ኮንጎ)","","Kituba (ኮንጎ)","FALSE","Kituba (DRC)","","Kituba (DRC)","FALSE","Kituba (DRC)","Bahasa Kituba (DRC)","Bahasa Kituba (DRC)","TRUE","Kituba (DRC)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kituba (RC)","Kikongo ya leta","","mkw","","","","Keep both Kituba entries","Kituba (RC)","","Kituba (RC)","FALSE","Kituba (RC)","Kituba","Kituba","TRUE","Kituba (RC)","","Kituba (RC)","FALSE","Kituba (RC)","","Kituba (RC)","FALSE","كيتوبا (RC)","","كيتوبا (RC)","FALSE","Kituba (आरसी)","","Kituba (आरसी)","FALSE","Kituba, (রেসিন)","কিতুবা (আরসি)","কিতুবা (আরসি)","TRUE","Kituba (RC)","","Kituba (RC)","FALSE","","FALSE","Kituba (RC)","Bahasa Kituba (RC)","Bahasa Kituba (RC)","TRUE","Китуба (RC)","","Китуба (RC)","TRUE","Kituba(RC)","","Kituba(RC)","FALSE","Kituba (RC)","","Kituba (RC)","FALSE","Kituba (RC)","Kituba (RC)","Kituba (RC)","TRUE","Kituba (RC)","","Kituba (RC)","FALSE","Kituba (RC)","","Kituba (RC)","FALSE","Kituba (RC)","Bahasa Kituba (RC)","Bahasa Kituba (RC)","TRUE","Kituba (rc)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kongo","Kikongo","","kg","","","","","Kongo","","Kongo","FALSE","Kongo","Kongo","Kongo","TRUE","Kongo","","Kongo","FALSE","קונגו","","קונגו","FALSE","كونغو","","كونغو","FALSE","कॉन्गो","","कॉन्गो","FALSE","কঙ্গো","কঙ্গো","কঙ্গো","TRUE","Kongo","","Kongo","FALSE","","FALSE","Kongo","Bahasa Kongo","Bahasa Kongo","TRUE","Kongo","конго","конго","TRUE","金刚","","金刚","FALSE","Kongo","","Kongo","FALSE","Kongo","Kikongo","Kikongo","TRUE","ኮንጎ","","ኮንጎ","FALSE","กงโก้","","กงโก้","FALSE","Kongo.","Bahasa Kongo","Bahasa Kongo","TRUE","Kongo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Konkani","कोंकणी / ಕೊಂಕಣಿ ","കൊങ്കണി / كونكڼى","knn","","","","","konkani","","konkani","FALSE","concani","Concani","Concani","TRUE","konkani","","konkani","FALSE","בקונקאני","","בקונקאני","FALSE","الكونكانية","","الكونكانية","FALSE","कोंकणी","","कोंकणी","FALSE","কোঙ্কানি","কোঙ্কানি","কোঙ্কানি","TRUE","କଙ୍କଣୀ","","କଙ୍କଣୀ","FALSE","","FALSE","Konkani","Bahasa Konkani","Bahasa Konkani","TRUE","конкани","","конкани","TRUE","孔卡尼语","","孔卡尼语","FALSE","Konkani","","Konkani","FALSE","Konkani","Konkani","Konkani","TRUE","Konkani","","Konkani","FALSE","konkani","","konkani","FALSE","Konkani.","Bahasa Konkani","Bahasa Konkani","TRUE","Konki","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Korean","한국어 ","조선말","ko","","","","","coreano","","coreano","FALSE","coreano","Coreano","Coreano","TRUE","coréen","","coréen","FALSE","קוריאני","","קוריאני","FALSE","الكورية","","الكورية","FALSE","कोरियाई","","कोरियाई","FALSE","কোরিয়ান","কোরিয়ান","কোরিয়ান","TRUE","କୋରୀୟ","","କୋରୀୟ","FALSE","","FALSE","Korea","Bahasa Korea","Bahasa Korea","TRUE","Корейский","корейский","корейский","TRUE","韩国人","","韩国人","FALSE","Korean","","Korean","FALSE","Kikorea","Kikorea","Kikorea","TRUE","ኮሪያኛ","","ኮሪያኛ","FALSE","เกาหลี","","เกาหลี","FALSE","Korea","Bahasa Korea","Bahasa Korea","TRUE","Koreano","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kosraean","Kusaie","Kosrae","kos","","","","","Kosraean","","Kosraean","FALSE","Kosraean","Kosreano","Kosreano","TRUE","Kosraean","","Kosraean","FALSE","קוסראיאן","","קוסראיאן","FALSE","Kosraean","","Kosraean","FALSE","कोसरैन","","कोसरैन","FALSE","কোস্রাইন","কোস্রিয়ান","কোস্রিয়ান","TRUE","Kosraean","","Kosraean","FALSE","","FALSE","Kosraean","Bahasa Kosraean","Bahasa Kosraean","TRUE","Kosraean","косяэ","косяэ","TRUE","Kosraean","","Kosraean","FALSE","Kosraean","","Kosraean","FALSE","Kosraean","Kosrai","Kosrai","TRUE","Kosraean","","Kosraean","FALSE","Kosraean","","Kosraean","FALSE","Kosraean","Bahasa Kosrae","Bahasa Kosrae","TRUE","Kosraean.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Krio","","","kri","","","","","krio","","krio","FALSE","Krio","Krio","Krio","TRUE","Krio","","Krio","FALSE","קריו","","קריו","FALSE","كريو","","كريو","FALSE","क्रियो","","क्रियो","FALSE","Krio,","ক্রিও","ক্রিও","TRUE","Krio","","Krio","FALSE","","FALSE","Krio","Bahasa Krio","Bahasa Krio","TRUE","Krio","крио","крио","TRUE","克里奥尔语","","克里奥尔语","FALSE","Krio","","Krio","FALSE","Krio","Krio","Krio","TRUE","የክሪዮ","","የክሪዮ","FALSE","Krio","","Krio","FALSE","Krio.","Bahasa Krio","Bahasa Krio","TRUE","Krio","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kriol","","","rop","","","","","kriol","","kriol","FALSE","Kriol","Kriol","Kriol","TRUE","kriol","","kriol","FALSE","Kriol","","Kriol","FALSE","Kriol","","Kriol","FALSE","क्रीओल","","क्रीओल","FALSE","Kriol,","ক্রিওল","ক্রিওল","TRUE","Kriol","","Kriol","FALSE","","FALSE","Kriol","Bahasa Kriol","Bahasa Kriol","TRUE","Kriol","криол","криол","TRUE","Kriol","","Kriol","FALSE","Kriol","","Kriol","FALSE","Kriol","Kriol","Kriol","TRUE","Kriol","","Kriol","FALSE","kriol","","kriol","FALSE","Kriol.","Bahasa Kriol","Bahasa Kriol","TRUE","Kriol","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kriol (Belize)","","","bzj","","","","","Kriol (Belice)","","Kriol (Belice)","FALSE","Kriol (Belize)","Kriol Belize","Kriol Belize","TRUE","Kriol (Belize)","","Kriol (Belize)","FALSE","Kriol (בליז)","","Kriol (בליז)","FALSE","Kriol (بليز)","","Kriol (بليز)","FALSE","क्रीओल (बेलीज़)","","क्रीओल (बेलीज़)","FALSE","Kriol, (বেলিজ)","ক্রিওল (বেলিজ)","ক্রিওল (বেলিজ)","TRUE","Kriol (ବେଲିଜ)","","Kriol (ବେଲିଜ)","FALSE","","FALSE","Kriol (Belize)","Bahasa Kriol (Belize)","Bahasa Kriol (Belize)","TRUE","Kriol (Белиз)","белизский креольский","белизский креольский","TRUE","Kriol(伯利兹)","","Kriol(伯利兹)","FALSE","Kriol (Belize)","","Kriol (Belize)","FALSE","Kriol (Belize)","Kikrioli (Belize)","Kikrioli (Belize)","TRUE","Kriol (ቤሊዝ)","","Kriol (ቤሊዝ)","FALSE","Kriol (เบลีซ)","","Kriol (เบลีซ)","FALSE","KRIOL (BELIZE)","Bahasa Kriol (Belize)","Bahasa Kriol (Belize)","TRUE","Kriol (Belize)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kunama","","","kun","","","","","kunama","","kunama","FALSE","Kunama","Kunama","Kunama","TRUE","Kunama","","Kunama","FALSE","Kunama","","Kunama","FALSE","كوناما","","كوناما","FALSE","Kunama","","Kunama","FALSE","Kunama,","কুনামা","কুনামা","TRUE","Kunama","","Kunama","FALSE","","FALSE","Kunama","Bahasa Kunama","Bahasa Kunama","TRUE","Kunama","кунама","кунама","TRUE","Kunama","","Kunama","FALSE","Kunama","","Kunama","FALSE","Kunama","Kunama","Kunama","TRUE","Kunama","","Kunama","FALSE","Kunama","","Kunama","FALSE","Kunama.","Bahasa Kunama","Bahasa Kunama","TRUE","Kunama","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kurdish","Kurdî","کوردی","ku","","","","","kurdo","","kurdo","FALSE","curdo","Curdo","Curdo","TRUE","kurde","","kurde","FALSE","כּוּרדִי","","כּוּרדִי","FALSE","كردي","","كردي","FALSE","कुर्द","","कुर्द","FALSE","কুর্দি","কুর্দি","কুর্দি","TRUE","କୁଦ୍ଦିର୍ଶ୍","","କୁଦ୍ଦିର୍ଶ୍","FALSE","","FALSE","Kurd","Bahasa Kurdi","Bahasa Kurdi","TRUE","курдский","","курдский","TRUE","库尔德","","库尔德","FALSE","Kurdish","","Kurdish","FALSE","Kikurdi","Kikurdi","Kikurdi","TRUE","ኩርዲሽ","","ኩርዲሽ","FALSE","ชาวเคิร์ด","","ชาวเคิร์ด","FALSE","Kurdish.","Bahasa Kurdi","Bahasa Kurdi","TRUE","Kurdish","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kurukh","कुड़ुख़","","kru","","","","","Kurukh","","Kurukh","FALSE","Kurukh","Kurukh","Kurukh","TRUE","kurukh","","kurukh","FALSE","Kurukh","","Kurukh","FALSE","Kurukh","","Kurukh","FALSE","Kurukh","","Kurukh","FALSE","কুরুখ","কুরুখ","কুরুখ","TRUE","Kurukh","","Kurukh","FALSE","","FALSE","Kurukh","Bahasa Kurukh","Bahasa Kurukh","TRUE","курукх","курух","курух","TRUE","Kurukh","","Kurukh","FALSE","Kurukh","","Kurukh","FALSE","Kurukh","Kurukh","Kurukh","TRUE","Kurukh","","Kurukh","FALSE","kurukh","","kurukh","FALSE","Kurukh.","Bahasa Kurukh","Bahasa Kurukh","TRUE","Kurukh.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kwanyama","Oshikwanyama","Oshindonga","kj","","","","includes Oshiwambo, Ovambo, Oshindonga","Kwanyama","","Kwanyama","FALSE","cuanhama","Kwanyama","Kwanyama","TRUE","Kwanyama","","Kwanyama","FALSE","Kwanyama","","Kwanyama","FALSE","Kwanyama","","Kwanyama","FALSE","Kwanyama","","Kwanyama","FALSE","Kwanyama","কোয়ানিয়ামা","কোয়ানিয়ামা","TRUE","Kwanyama","","Kwanyama","FALSE","","FALSE","Kwanyama","Bahasa Kwanyama","Bahasa Kwanyama","TRUE","Kwanyama","ошивамбо","ошивамбо","TRUE","Kwanyama","","Kwanyama","FALSE","Kwanyama","","Kwanyama","FALSE","Kwanyama","Oshiwambo (Ovambo)","Oshiwambo (Ovambo)","TRUE","በኳኛማ","","በኳኛማ","FALSE","kwanyama","","kwanyama","FALSE","Kwanyama.","Bahasa Kwanyama","Bahasa Kwanyama","TRUE","Kwanyama.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kyrgyz","Kyrgyz tili / Кыргыз тили ","قىرعىز تىلى","ky","","","","","kyrgyz","","kyrgyz","FALSE","Quirguistão","Quirguiz","Quirguiz","TRUE","kirghize","","kirghize","FALSE","הקירגיזית","","הקירגיזית","FALSE","قيرغيزستان","","قيرغيزستان","FALSE","किरगिज़","","किरगिज़","FALSE","কির্গিজ","কিরগিজ","কিরগিজ","TRUE","Kyrgyz","","Kyrgyz","FALSE","","FALSE","Kyrgyz","Bahasa Kyrgyz","Bahasa Kyrgyz","TRUE","киргизский","","киргизский","TRUE","吉尔吉斯","","吉尔吉斯","FALSE","Kyrgyzstan","","Kyrgyzstan","FALSE","Kyrgyz","Kikirigizi","Kikirigizi","TRUE","ክይርግያዝ","","ክይርግያዝ","FALSE","คีร์กีซ","","คีร์กีซ","FALSE","Kyrgyz.","Bahasa Kyrgyz","Bahasa Kyrgyz","TRUE","Kyrgyz.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ladakhi","ལ་དྭགས་སྐད་","","lbj","","","","","ladakhi","","ladakhi","FALSE","Ladakhi","Ladakhi","Ladakhi","TRUE","ladakhi","","ladakhi","FALSE","Ladakhi","","Ladakhi","FALSE","Ladakhi","","Ladakhi","FALSE","लद्दाखी","","लद्दाखी","FALSE","Ladakhi,","লাদাখি","লাদাখি","TRUE","Ladakhi","","Ladakhi","FALSE","","FALSE","Ladakhi","Bahasa Ladakhi","Bahasa Ladakhi","TRUE","Ladakhi","ладакхский","ладакхский","TRUE","拉达克","","拉达克","FALSE","Ladakhi","","Ladakhi","FALSE","Ladakhi","Ladakhi","Ladakhi","TRUE","Ladakhi","","Ladakhi","FALSE","Ladakhi","","Ladakhi","FALSE","Ladakhi.","Bahasa Ladakhi","Bahasa Ladakhi","TRUE","Ladakhi","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Lamaholot","","","slp","","","","","Lamaholot","","Lamaholot","FALSE","Lamaholot","Lamaholot","Lamaholot","TRUE","Lamaholot","","Lamaholot","FALSE","Lamaholot","","Lamaholot","FALSE","Lamaholot","","Lamaholot","FALSE","Lamaholot","","Lamaholot","FALSE","Lamaholot","লামাহোলোট","লামাহোলোট","TRUE","Lamaholot","","Lamaholot","FALSE","","FALSE","Lamaholot","Bahasa Lamaholot","Bahasa Lamaholot","TRUE","Lamaholot","ламахолот","ламахолот","TRUE","Lamaholot","","Lamaholot","FALSE","Lamaholot","","Lamaholot","FALSE","Lamaholot","Lamaholot","Lamaholot","TRUE","Lamaholot","","Lamaholot","FALSE","lamaholot","","lamaholot","FALSE","Lamaholot.","Bahasa Lamaholot","Bahasa Lamaholot","TRUE","Lamaholot.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Lao","ພາສາລາວ","phasa lao","lo","Keyboard_lao_2008_basic","true","","","Lao","laosiano","laosiano","TRUE","Lao","Laotiano","Laotiano","TRUE","Lao","Lao","Lao","TRUE","לאו","לאית","לאית","TRUE","لاو","اللاوية","اللاوية","FALSE","लाओ","","लाओ","FALSE","লাও","লাও","লাও","TRUE","Lao","","Lao","FALSE","","FALSE","lao","Bahasa Lao","Bahasa Lao","TRUE","Лао","лаосский","лаосский","TRUE","老挝","","老挝","FALSE","Lao","","Lao","FALSE","Lao","Kilao","Kilao","TRUE","ላኦ","","ላኦ","FALSE","ลาว","","ลาว","FALSE","Lao","Bahasa Lao","Bahasa Lao","TRUE","Lao.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Latvian","latviešu valoda","","lv","","","","","letón","","letón","FALSE","letão","Letón","Letón","TRUE","letton","","letton","FALSE","לטבי","","לטבי","FALSE","اللاتفية","","اللاتفية","FALSE","लात्वीयावासी","","लात्वीयावासी","FALSE","লাত্ভীয়","লাত্ভীয়","লাত্ভীয়","TRUE","Latvian","","Latvian","FALSE","","FALSE","Latvia","Bahasa Latvia","Bahasa Latvia","TRUE","Латышский","латышский","латышский","TRUE","拉脱维亚","","拉脱维亚","FALSE","Latvian","","Latvian","FALSE","Kilatvia","Kilatvia","Kilatvia","TRUE","ላትቪያን","","ላትቪያን","FALSE","เกี่ยวกับลัตเวีย","","เกี่ยวกับลัตเวีย","FALSE","Latvia.","Bahasa Latvia","Bahasa Latvia","TRUE","Latvian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Liberian Kreyol","Kolokwa","Kreyol","lir","","","","","Liberia Kreyol","","Liberia Kreyol","FALSE","liberiano Kreyol","Criolo Liberiano","Criolo Liberiano","TRUE","Libéria Kreyol","","Libéria Kreyol","FALSE","בקריאולית ליברי","","בקריאולית ליברי","FALSE","ليبيريا Kreyol","","ليبيريا Kreyol","FALSE","लाइबेरिया हिन्दी","","लाइबेरिया हिन्दी","FALSE","লাইবেরিয়ান Kreyol","লাইবেরিয়ান ক্রেইল","লাইবেরিয়ান ক্রেইল","TRUE","ଲିବେରିଆର Kreyol","","ଲିବେରିଆର Kreyol","FALSE","","FALSE","Liberia Kreyol","Bahasa Kreol Liberia ","Bahasa Kreol Liberia ","TRUE","Либерийский Kreyol","либерийский керольский","либерийский керольский","TRUE","利比里亚Kreyol","","利比里亚Kreyol","FALSE","Liberia Kreyol","","Liberia Kreyol","FALSE","Liberia Kreyòl","Kikreoli cha Liberia","Kikreoli cha Liberia","TRUE","የላይቤሪያ Kreyol","","የላይቤሪያ Kreyol","FALSE","Kreyol ไลบีเรีย","","Kreyol ไลบีเรีย","FALSE","Liberian Kreyol.","Bahasa Kreol Liberia","Bahasa Kreol Liberia","TRUE","Liberian Kreyol.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Lingala","Lingála","","lin","","","","","lingala","","lingala","FALSE","Lingala","Lingala","Lingala","TRUE","Lingala","","Lingala","FALSE","לינגלה","","לינגלה","FALSE","اللينجالا","","اللينجالا","FALSE","लिंगाला","","लिंगाला","FALSE","লিঙ্গালা","লিঙ্গালা","লিঙ্গালা","TRUE","ଲିଙ୍ଗାଲା","","ଲିଙ୍ଗାଲା","FALSE","","FALSE","Lingala","Bahasa Lingala","Bahasa Lingala","TRUE","Lingala","лингала","лингала","TRUE","林加拉语","","林加拉语","FALSE","Lingala","","Lingala","FALSE","Kilingala","Lingala","Lingala","TRUE","ሊንጋላ","","ሊንጋላ","FALSE","ภาษาหลิงซาลา","","ภาษาหลิงซาลา","FALSE","Lingala.","Bahasa Lingala","Bahasa Lingala","TRUE","Lingala.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Lithuanian","lietuvių kalba","","lt","","","","","lituano","","lituano","FALSE","lituano","Lituano","Lituano","TRUE","lituanien","","lituanien","FALSE","ליטאי","","ליטאי","FALSE","اللتوانية","","اللتوانية","FALSE","लिथुआनियाई","","लिथुआनियाई","FALSE","লিথুয়েনীয","লিথুএনিয়ান","লিথুএনিয়ান","TRUE","Lithuanian","","Lithuanian","FALSE","","FALSE","Lithuania","Bahasa Lithuania","Bahasa Lithuania","TRUE","Литовский","литовский","литовский","TRUE","立陶宛","","立陶宛","FALSE","Lithuanian","","Lithuanian","FALSE","Kilithuania","Kilithuania","Kilithuania","TRUE","ሊቱኒያን","","ሊቱኒያን","FALSE","เกี่ยวกับลิทัวเนีย","","เกี่ยวกับลิทัวเนีย","FALSE","Bahasa Lithuania","Bahasa Lithuania","Bahasa Lithuania","TRUE","Lithuanian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Luganda","Oluganda","","lg","","","","","lugandés","","lugandés","FALSE","Luganda","Luganda","Luganda","TRUE","luganda","","luganda","FALSE","לוגנדה","","לוגנדה","FALSE","اللوغندية","","اللوغندية","FALSE","लुगांडा","","लुगांडा","FALSE","লুগান্ডা","লুগান্ডা","লুগান্ডা","TRUE","ଲୁଗାଣ୍ଡା","","ଲୁଗାଣ୍ଡା","FALSE","","FALSE","Luganda","Bahasa Luganda","Bahasa Luganda","TRUE","Luganda","луганда","луганда","TRUE","卢干达语","","卢干达语","FALSE","Harshen Luganda","","Harshen Luganda","FALSE","Luganda","Luganda","Luganda","TRUE","Luganda","","Luganda","FALSE","Luganda","","Luganda","FALSE","Luganda","Bahasa Luganda","Bahasa Luganda","TRUE","Luganda","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Luo","","Dholuo","luo","","","","","Luo","","Luo","FALSE","Luo","Luo","Luo","TRUE","Luo","","Luo","FALSE","לואו","","לואו","FALSE","لوه","","لوه","FALSE","लुओ","","लुओ","FALSE","লুয়ো","লুও","লুও","TRUE","Luo","","Luo","FALSE","","FALSE","luo","Bahasa Luo","Bahasa Luo","TRUE","Ло","ло","ло","TRUE","罗","","罗","FALSE","Luo","","Luo","FALSE","Luo","Kiluo","Kiluo","TRUE","ሉኦኛ","","ሉኦኛ","FALSE","luo","","luo","FALSE","Luo","Bahasa Luo","Bahasa Luo","TRUE","Luo","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Luxembourgish","Lëtzebuergesch","","ltz","","","","","luxemburgués","","luxemburgués","FALSE","luxemburguês","Luxemburguês","Luxemburguês","TRUE","luxembourgeoise","","luxembourgeoise","FALSE","לוקסמבורגית","","לוקסמבורגית","FALSE","اللوكسمبرجية","","اللوكسمبرجية","FALSE","लक्जमबर्गिश","","लक्जमबर्गिश","FALSE","লুক্সেমবার্গীয়","লুক্সেমবার্গীয়","লুক্সেমবার্গীয়","TRUE","Luxembourgish","","Luxembourgish","FALSE","","FALSE","Luxembourg","Bahasa Luxembourg","Bahasa Luxembourg","TRUE","люксембургский","","люксембургский","TRUE","卢森堡","","卢森堡","FALSE","Luxembourgish","","Luxembourgish","FALSE","Kilasembagi","Kilasembagi","Kilasembagi","TRUE","ሉክዜምብርጊሽ","","ሉክዜምብርጊሽ","FALSE","ลักเซมเบิร์ก","","ลักเซมเบิร์ก","FALSE","Luxembourg.","Bahasa Luxembourg","Bahasa Luxembourg","TRUE","Luxembourgish","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Maasai","ɔl Maa","","mas","","","","","masai","","masai","FALSE","Maasai","Maasai","Maasai","TRUE","Maasai","","Maasai","FALSE","מסאי","","מסאי","FALSE","الماساي","","الماساي","FALSE","Maasai","","Maasai","FALSE","মাসাই","মাসাই ","মাসাই ","TRUE","Maasai","","Maasai","FALSE","","FALSE","Maasai","Bahasa Maasai","Bahasa Maasai","TRUE","Масаи","масайский","масайский","TRUE","马赛","","马赛","FALSE","Maasai","","Maasai","FALSE","Maasai","Kimaasai","Kimaasai","TRUE","Maasai","","Maasai","FALSE","มหาราช","","มหาราช","FALSE","Maasai.","Bahasa Maasai","Bahasa Maasai","TRUE","Maasai.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Macedonian","македонски","","mkd","","","","","macedónio","","macedónio","FALSE","macedônio","Macedômio","Macedômio","TRUE","Macédoine","","Macédoine","FALSE","מקדוני","","מקדוני","FALSE","المقدونية","","المقدونية","FALSE","मेसीडोनियन","","मेसीडोनियन","FALSE","ম্যাসেডোনীয","ম্যাসেডোনিয়ান","ম্যাসেডোনিয়ান","TRUE","Macedonian","","Macedonian","FALSE","","FALSE","Macedonia","Bahasa Makedonia","Bahasa Makedonia","TRUE","македонский","","македонский","TRUE","马其顿","","马其顿","FALSE","Macedonian","","Macedonian","FALSE","Kimasedoni","Kimasedonia","Kimasedonia","TRUE","ማስዶንያን","","ማስዶንያን","FALSE","ชาวมาซิโดเนีย","","ชาวมาซิโดเนีย","FALSE","Macedonian","Bahasa Makedonia","Bahasa Makedonia","TRUE","Macedonian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Madurese","Basa Mathura","","mad","","","","","madureses","","madureses","FALSE","Madurese","Madurês","Madurês","TRUE","Madurais","","Madurais","FALSE","מאדורית","","מאדורית","FALSE","المادريز","","المادريز","FALSE","मादुरीस","","मादुरीस","FALSE","মাদুরেসে","মাদুরিস ","মাদুরিস ","TRUE","Madurese","","Madurese","FALSE","","FALSE","Madura","Bahasa Madura","Bahasa Madura","TRUE","Мадурский","мадурский","мадурский","TRUE","马都拉","","马都拉","FALSE","madurese","","madurese","FALSE","Madurese","Madurese","Madurese","TRUE","Madurese","","Madurese","FALSE","คนบ้าบิ่น","","คนบ้าบิ่น","FALSE","Madurese.","Bahasa Madura","Bahasa Madura","TRUE","Madurese","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Maguindanao","","","mdh","","","","","Maguindanao","","Maguindanao","FALSE","Maguindanao","Maguindanao","Maguindanao","TRUE","Maguindanao","","Maguindanao","FALSE","Maguindanao","","Maguindanao","FALSE","ماجوينداناو","","ماجوينداناو","FALSE","Maguindanao","","Maguindanao","FALSE","মাগুইন্দানাও","মাগুইন্দানও ","মাগুইন্দানও ","TRUE","Maguindanao","","Maguindanao","FALSE","","FALSE","Maguindanao","Bahasa Maguindanao","Bahasa Maguindanao","TRUE","Maguindanao","магинданао","магинданао","TRUE","马京达瑙","","马京达瑙","FALSE","Maguindanao","","Maguindanao","FALSE","Maguindanao","Maguindanao","Maguindanao","TRUE","Maguindanao","","Maguindanao","FALSE","maguindanao","","maguindanao","FALSE","Maguindanao.","Bahasa Maguindanao","Bahasa Maguindanao","TRUE","Maguindanao.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Maithili","मैथिलि","","mai","","","","","maithili","","maithili","FALSE","Maithili","Maitili","Maitili","TRUE","maithili","","maithili","FALSE","מאיתילי","","מאיתילי","FALSE","Maithili","","Maithili","FALSE","मैथिली","","मैथिली","FALSE","মৈথিলি","মৈথিলি","মৈথিলি","TRUE","ମୈଥିଲି","","ମୈଥିଲି","FALSE","","FALSE","Maithili","Bahasa Maithili","Bahasa Maithili","TRUE","майтхили","","майтхили","TRUE","迈蒂利","","迈蒂利","FALSE","Maithili","","Maithili","FALSE","Maithili","Maithili","Maithili","TRUE","Maithili","","Maithili","FALSE","maithili","","maithili","FALSE","Maithili.","Bahasa Maithili","Bahasa Maithili","TRUE","Maithili.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Makassarese","Basa Mangksara'","","mak","","","","","Makassarese","","Makassarese","FALSE","Makassarese","Macassar","Macassar","TRUE","Makassarese","","Makassarese","FALSE","Makassarese","","Makassarese","FALSE","Makassarese","","Makassarese","FALSE","Makassarese","","Makassarese","FALSE","Makassarese","মাকাসেরেস","মাকাসেরেস","TRUE","Makassarese","","Makassarese","FALSE","","FALSE","Makassar","Bahasa Makassar","Bahasa Makassar","TRUE","Makassarese","макасарский","макасарский","TRUE","Makassarese","","Makassarese","FALSE","Makassarese","","Makassarese","FALSE","Makassarese","Makassarizi","Makassarizi","TRUE","Makassarese","","Makassarese","FALSE","Makassarese","","Makassarese","FALSE","Makassare.","Bahasa Makassar","Bahasa Makassar","TRUE","Makasarese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Malagasy","Fiteny Malagasy","","mg","","","","includes xmv [Antankarana]; bhr [Bara]; buc [Bushi]; msh [Masikoro]; bmm [Northern Betsimisaraka]; plt [Plateau Malagasy]; skg [Sakalava]; bzc [Southern Betsimisaraka]; tdx [Tandroy-Mafahaly]; txy [Tanosy]; tkg [Tesaka]; xmw [Tsimihety]","madagascarí","","madagascarí","FALSE","malgaxe","Malgaxe","Malgaxe","TRUE","malgache","","malgache","FALSE","מלגשית","","מלגשית","FALSE","مدغشقر","","مدغشقر","FALSE","मालागासी","","मालागासी","FALSE","মালাগাসি","মালাগাসি","মালাগাসি","TRUE","ମାଲାଗାସୀ","","ମାଲାଗାସୀ","FALSE","","FALSE","Malagasi","Bahasa Malagasi","Bahasa Malagasi","TRUE","малагасиец","малагасийский","малагасийский","TRUE","马尔加什","","马尔加什","FALSE","Malagasy","","Malagasy","FALSE","Malagasy","Malagasi","Malagasi","TRUE","ማላጋሲኛ","ማላጋሲኛ","ማላጋሲኛ","FALSE","มาดากัสการ์","","มาดากัสการ์","FALSE","Malagasi","Bahasa Malagasi","Bahasa Malagasi","TRUE","Malagasy.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Malay","Bahasa Melayu"," بهاس ملايو","ms","","","","","malayo","","malayo","FALSE","malaio","Malaio","Malaio","TRUE","malais","","malais","FALSE","מלאית","","מלאית","FALSE","لغة الملايو","","لغة الملايو","FALSE","मलायी","","मलायी","FALSE","মালে","মালয়","মালয়","TRUE","Malay","","Malay","FALSE","","FALSE","Melayu","Bahasa Melayu","Bahasa Melayu","TRUE","малайский","","малайский","TRUE","马来语","","马来语","FALSE","Malay","","Malay","FALSE","malay","Kimalesia","Kimalesia","TRUE","ማላይ","","ማላይ","FALSE","มลายู","","มลายู","FALSE","Bahasa Melayu","Bahasa Melayu","Bahasa Melayu","TRUE","Malay.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Malayalam","മലയാളം","","ml","","","","","malayalam","","malayalam","FALSE","malayalam","Malaiala","Malaiala","TRUE","malayalam","","malayalam","FALSE","מליאלאם","","מליאלאם","FALSE","المالايالامية","","المالايالامية","FALSE","मलयालम","","मलयालम","FALSE","মালায়ালম","মালায়ালাম","মালায়ালাম","TRUE","ମାଲାୟଲମ୍","","ମାଲାୟଲମ୍","FALSE","","FALSE","Malayalam","Bahasa Malayalam","Bahasa Malayalam","TRUE","Malayalam","малаяльский","малаяльский","TRUE","马拉雅拉姆语","","马拉雅拉姆语","FALSE","Malayalam","","Malayalam","FALSE","Kimalayalam","Kimalayalam","Kimalayalam","TRUE","ማላያላም","","ማላያላም","FALSE","มาลายาลัม","","มาลายาลัม","FALSE","Malayalam","Bahasa Malayalam","Bahasa Malayalam","TRUE","Malayalam","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Maltese","Malti","","mlt","","","","","maltés","","maltés","FALSE","maltês","Maltês","Maltês","TRUE","maltais","","maltais","FALSE","מלטזית","","מלטזית","FALSE","المالطية","","المالطية","FALSE","मोलतिज़","","मोलतिज़","FALSE","মল্টিয়","মাল্টিজ","মাল্টিজ","TRUE","Maltese","","Maltese","FALSE","","FALSE","Malta","Bahasa Malta","Bahasa Malta","TRUE","мальтийский","","мальтийский","TRUE","马耳他语","","马耳他语","FALSE","Maltese","","Maltese","FALSE","Kimalta","Kimalta","Kimalta","TRUE","ማልትስ","","ማልትስ","FALSE","ชาวมอลตา","","ชาวมอลตา","FALSE","Malta.","Bahasa Malta","Bahasa Malta","TRUE","Maltese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Manado Malay","Bahasa Manado","Minahasa Malay","xmm","","","","","Manado malayo","","Manado malayo","FALSE","Manado Malay","Manado Malaio","Manado Malaio","TRUE","Manado malais","","Manado malais","FALSE","Manado מלאית","","Manado מלאית","FALSE","مانادو الملايو","","مانادو الملايو","FALSE","Manado मलय","","Manado मलय","FALSE","Manado Malay,","মানাদো মালয়","মানাদো মালয়","TRUE","Manado ରେ ମଳୟ","","Manado ରେ ମଳୟ","FALSE","","FALSE","Melayu Manado","Bahasa Melayu Manado","Bahasa Melayu Manado","TRUE","Манадо Малайский","манадо","манадо","TRUE","万鸦老马来","","万鸦老马来","FALSE","Manado Malay","","Manado Malay","FALSE","Manado Malay","Manado Malay","Manado Malay","TRUE","በመናዶ ማላይኛ","","በመናዶ ማላይኛ","FALSE","Manado Malay","","Manado Malay","FALSE","Manado Malay","Bahasa Melayu Manado","Bahasa Melayu Manado","TRUE","Manado Malay.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mandara","","Wandala","tbf","","","","","Mandara","","Mandara","FALSE","Mandara","Mandara","Mandara","TRUE","Mandara","","Mandara","FALSE","Mandara","","Mandara","FALSE","المندرة","","المندرة","FALSE","Mandara","","Mandara","FALSE","Mandara,","মান্দারা","মান্দারা","TRUE","Mandara","","Mandara","FALSE","","FALSE","Mandara","Bahasa Mandara","Bahasa Mandara","TRUE","Mandara","мандара","мандара","TRUE","曼达拉","","曼达拉","FALSE","Mandara","","Mandara","FALSE","Mandara","Mandara","Mandara","TRUE","Mandara","","Mandara","FALSE","แมนดาระ","","แมนดาระ","FALSE","Mandara","Bahasa Mandara","Bahasa Mandara","TRUE","Mandara.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mandarin","官话","","cmn","Keyboard_chinese","true","","","mandarín","mandarín","mandarín","TRUE","mandarim","Mandarim","Mandarim","TRUE","mandarin","Mandarin","Mandarin","TRUE","מַנדָרִין","מנדרינית","מנדרינית","TRUE","اليوسفي","الصينية القياسية","الصينية القياسية","FALSE","अकर्मण्य","","अकर्मण्य","FALSE","ম্যান্ডারিন","ম্যান্ডারিন","ম্যান্ডারিন","TRUE","Mandarin","","Mandarin","FALSE","","FALSE","Mandarin","Bahasa Mandarin","Bahasa Mandarin","TRUE","мандарин","китайский","китайский","TRUE","普通话","","普通话","FALSE","Mandarin","","Mandarin","FALSE","Mandarin","Kimandarini","Kimandarini","TRUE","ማንድሪን","","ማንድሪን","FALSE","แมนดาริน","","แมนดาริน","FALSE","Mandarin.","Bahasa Mandarin","Bahasa Mandarin","TRUE","Mandarin","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mandinka","Mandinka kango","","mnk","","","","","mandinka","","mandinka","FALSE","mandinga","Mandinga","Mandinga","TRUE","Mandinka","","Mandinka","FALSE","מנדינקה","","מנדינקה","FALSE","الماندينكا","","الماندينكا","FALSE","Mandinka","","Mandinka","FALSE","Mandinka,","মান্ডিঙ্কা","মান্ডিঙ্কা","TRUE","Mandinka","","Mandinka","FALSE","","FALSE","Mandinka","Bahasa Mandinka","Bahasa Mandinka","TRUE","мандинка","","мандинка","TRUE","曼丁哥","","曼丁哥","FALSE","Mandinka","","Mandinka","FALSE","Mandinka","Mandinka","Mandinka","TRUE","Mandinka","","Mandinka","FALSE","Mandinka","","Mandinka","FALSE","Mandinka","Bahasa Mandinka","Bahasa Mandinka","TRUE","Mandinka.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Manggarai","","","mqy","","","","","Manggarai","","Manggarai","FALSE","Manggarai","Manggarai","Manggarai","TRUE","manggarai","","manggarai","FALSE","Manggarai","","Manggarai","FALSE","مانجاراي","","مانجاراي","FALSE","Manggarai","","Manggarai","FALSE","Manggarai,","মাংগারি ","মাংগারি ","TRUE","Manggarai","","Manggarai","FALSE","","FALSE","Manggarai","Bahasa Manggarai","Bahasa Manggarai","TRUE","Manggarai","манггараи","манггараи","TRUE","Manggarai","","Manggarai","FALSE","Manggarai","","Manggarai","FALSE","Manggarai","Manggarai","Manggarai","TRUE","Manggarai","","Manggarai","FALSE","แมงกะร์ไค","","แมงกะร์ไค","FALSE","Manggarai.","Bahasa Manggarai","Bahasa Manggarai","TRUE","Manggarai","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Manipuri","Meeteilon ","Meithei","mni","","","","","manipuri","","manipuri","FALSE","Manipuri","Manipuri","Manipuri","TRUE","Manipur","","Manipur","FALSE","מאניפורי","","מאניפורי","FALSE","المانيبرى","","المانيبرى","FALSE","मणिपुरी","","मणिपुरी","FALSE","মণিপুরী","মণিপুরী","মণিপুরী","TRUE","Manipuri","","Manipuri","FALSE","","FALSE","Manipuri","Bahasa Manipuri","Bahasa Manipuri","TRUE","Манипури","манипури","манипури","TRUE","曼尼普尔","","曼尼普尔","FALSE","Manipuri","","Manipuri","FALSE","Manipuri","Manipuri","Manipuri","TRUE","Manipuri","","Manipuri","FALSE","มณี","","มณี","FALSE","Manipuri","Bahasa Manipur","Bahasa Manipur","TRUE","Manipuri.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Maori","te reo Māori","","mri","","","","","maorí","","maorí","FALSE","maori","Maori","Maori","TRUE","maori","","maori","FALSE","מאורים","","מאורים","FALSE","الماوري","","الماوري","FALSE","माओरी","","माओरी","FALSE","মাওরি","মাওরি","মাওরি","TRUE","Maori","","Maori","FALSE","","FALSE","Maori","Bahasa Maori","Bahasa Maori","TRUE","маори","","маори","TRUE","毛利","","毛利","FALSE","Harshen Maori","","Harshen Maori","FALSE","Maori","Kimaori","Kimaori","TRUE","ማኦሪይ","","ማኦሪይ","FALSE","ชาวเมารี","","ชาวเมารี","FALSE","Maori.","Bahasa Maori","Bahasa Maori","TRUE","Maori.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Maranao","Mëranaw","","mrw","","","","","maranao","","maranao","FALSE","Maranao","Maranao","Maranao","TRUE","Maranao","","Maranao","FALSE","Maranao","","Maranao","FALSE","ماراناو","","ماراناو","FALSE","Maranao","","Maranao","FALSE","Maranao,","মারানাও","মারানাও","TRUE","Maranao","","Maranao","FALSE","","FALSE","Maranao","Bahasa Maranao","Bahasa Maranao","TRUE","Maranao","маранао","маранао","TRUE","Maranao","","Maranao","FALSE","Maranao","","Maranao","FALSE","Maranao","Maranao","Maranao","TRUE","Maranao","","Maranao","FALSE","Maranao","","Maranao","FALSE","Maranao.","Bahasa Maranao","Bahasa Maranao","TRUE","Marana.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Marathi","मराठी","Marāṭhī","mr","Keyboard_marathi","true","","","marathi","marathi","marathi","TRUE","marata","Marata","Marata","TRUE","Marathi","Marathi","Marathi","TRUE","מרטהי","","מרטהי","TRUE","المهاراتية","المراثية","المراثية","FALSE","मराठी","","मराठी","FALSE","মারাঠি","মারাঠি","মারাঠি","TRUE","ମରାଠୀ","","ମରାଠୀ","FALSE","","FALSE","Marathi","Bahasa Marathi","Bahasa Marathi","TRUE","маратхи","","маратхи","TRUE","马拉","","马拉","FALSE","Marathi","","Marathi","FALSE","Marathi","Kimarathi","Kimarathi","TRUE","ማራቲ","","ማራቲ","FALSE","มารา","","มารา","FALSE","Marathi","Bahasa Marathi","Bahasa Marathi","TRUE","Marathi","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Marshallese","Kajin Majōl","","mah","","","","","marshallese","","marshallese","FALSE","Marshallese","Marshallese","Marshallese","TRUE","marshallais","","marshallais","FALSE","מרשלית","","מרשלית","FALSE","المارشالية","","المارشالية","FALSE","मार्शलीज़","","मार्शलीज़","FALSE","মার্শালিজ","মার্শালিজ","মার্শালিজ","TRUE","Marshallese","","Marshallese","FALSE","","FALSE","Marshall","Bahasa Marshall","Bahasa Marshall","TRUE","Marshallese","маршалльский","маршалльский","TRUE","马绍尔","","马绍尔","FALSE","Marshalanci","","Marshalanci","FALSE","Marshallese","Kimarshalizi","Kimarshalizi","TRUE","Marshallese","","Marshallese","FALSE","Marshallese","","Marshallese","FALSE","Marshallese.","Bahasa Marshall","Bahasa Marshall","TRUE","Marshallese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mende","Mɛnde yia","","men","","","","","Mende","","Mende","FALSE","Mende","Mende","Mende","TRUE","Mende","","Mende","FALSE","מנדה","","מנדה","FALSE","مندي","","مندي","FALSE","मेंडे","","मेंडे","FALSE","মেন্ডে","মেন্ডে","মেন্ডে","TRUE","Mende","","Mende","FALSE","","FALSE","Mende","Bahasa Mende","Bahasa Mende","TRUE","Менде","менде","менде","TRUE","闷得","","闷得","FALSE","Mende","","Mende","FALSE","Mende","Mende","Mende","TRUE","Mende","","Mende","FALSE","เม็นเด","","เม็นเด","FALSE","Mende.","Bahasa Mende","Bahasa Mende","TRUE","Mende","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Minangkabau","Baso Minangkabau ","باسو مينڠكاباو","min","","","","","minangkabau","","minangkabau","FALSE","Minangkabau","Minangkabau","Minangkabau","TRUE","Minangkabau","","Minangkabau","FALSE","מינאנגקאבאו","","מינאנגקאבאו","FALSE","مينانغكابو","","مينانغكابو","FALSE","मिनांग्काबाउ","","मिनांग्काबाउ","FALSE","মিনাঙ্গ্কাবাউ","মিনাংকাবউ","মিনাংকাবউ","TRUE","Minangkabau","","Minangkabau","FALSE","","FALSE","Minangkabau","Bahasa Minangkabau","Bahasa Minangkabau","TRUE","минангкабау","","минангкабау","TRUE","米南加保","","米南加保","FALSE","Minangkabau","","Minangkabau","FALSE","Minangkabau","Minangkabau","Minangkabau","TRUE","ሚኔንክባው","","ሚኔንክባው","FALSE","minangkabau","","minangkabau","FALSE","Minangkabau.","Bahasa Minangkabau","Bahasa Minangkabau","TRUE","Minangkabau.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Miskito","Mískitu","","miq","","","","","miskito","","miskito","FALSE","Miskito","Misquiito","Misquiito","TRUE","Miskito","","Miskito","FALSE","Miskito","","Miskito","FALSE","المسكيتو","","المسكيتو","FALSE","Miskito","","Miskito","FALSE","Mískito","মিসকিটো","মিসকিটো","TRUE","Miskito","","Miskito","FALSE","","FALSE","Miskito","Bahasa Miskito","Bahasa Miskito","TRUE","мискито","","мискито","TRUE","米斯基托","","米斯基托","FALSE","Mískito","","Mískito","FALSE","Miskito","Miskito","Miskito","TRUE","በሚስኪቶ","","በሚስኪቶ","FALSE","Miskito","","Miskito","FALSE","Miskito.","Bahasa Miskito","Bahasa Miskito","TRUE","Miskito.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mizo","Mizo ṭawng","","lus","","","","","mizo","","mizo","FALSE","Mizo","Mizo","Mizo","TRUE","Mizo","","Mizo","FALSE","מיזו","","מיזו","FALSE","ميزو","","ميزو","FALSE","मिजो","","मिजो","FALSE","মিজো","মিজো","মিজো","TRUE","Mizo","","Mizo","FALSE","","FALSE","Mizo","Bahasa Mizo","Bahasa Mizo","TRUE","Mizo","мизо","мизо","TRUE","米佐","","米佐","FALSE","Mizo","","Mizo","FALSE","Mizo","Mizo","Mizo","TRUE","Mizo","","Mizo","FALSE","mizo","","mizo","FALSE","Mizo.","Bahasa Mizo","Bahasa Mizo","TRUE","Mizo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mo(o)ré/Mossi","Mòoré","","mos","","","","","Mo (O) Re / Mossi","","Mo (O) Re / Mossi","FALSE","Mo (O) Re / mossis","Mossi","Mossi","TRUE","Mo (o) Re / Mossi","","Mo (o) Re / Mossi","FALSE","מו (o) רי / מוסים","","מו (o) רי / מוסים","FALSE","مو (س) RE / موسي","","مو (س) RE / موسي","FALSE","मो (ओ) RE / Mossi","","मो (ओ) RE / Mossi","FALSE","মো (O) Re / মসি","মো (ও) র / মোসি","মো (ও) র / মোসি","TRUE","Mo (o) ପୁନଃ / Mossi","","Mo (o) ପୁନଃ / Mossi","FALSE","","FALSE","Mo (o) ré / Mossi","Bahasa Mo (o) ré / Mossi","Bahasa Mo (o) ré / Mossi","TRUE","Мо (о) Re / Mossi","моси","моси","TRUE","沫(O)RE /莫西","","沫(O)RE /莫西","FALSE","Mo (o) Re / Mossi","","Mo (o) Re / Mossi","FALSE","Mo (o) RE / Mossi","Mo(o)ré/Mossi","Mo(o)ré/Mossi","TRUE","MO (O) Re / Mossi","","MO (O) Re / Mossi","FALSE","MO (O) Ré / Mossi","","MO (O) Ré / Mossi","FALSE","Mo (o) ré / mossi","Bahasa Mossi","Bahasa Mossi","TRUE","Mo (o) ré / mossi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mon","ဘာသာ မန်;","","mon","","","","","Lun","","Lun","FALSE","seg","Mon","Mon","TRUE","lun","","lun","FALSE","יום שני","","יום שני","FALSE","الإثنين","","الإثنين","FALSE","सोमवार","","सोमवार","FALSE","সোম","মন ","মন ","TRUE","ସୋମ","","ସୋମ","FALSE","","FALSE","mon","Bahasa Mon","Bahasa Mon","TRUE","понедельник","мон","мон","TRUE","周一","","周一","FALSE","Mon","","Mon","FALSE","Mon","Mon","Mon","TRUE","ሰኞ","","ሰኞ","FALSE","จันทร์","","จันทร์","FALSE","Isnin","Bahasa Mon","Bahasa Mon","TRUE","Mon.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mongolian","монгол","","mn","","","","","mongol","","mongol","FALSE","mongol","Mongol","Mongol","TRUE","mongol","","mongol","FALSE","מוֹנגוֹלִי","","מוֹנגוֹלִי","FALSE","المنغولية","","المنغولية","FALSE","मंगोलियन","","मंगोलियन","FALSE","মঙ্গোলিয়","মঙ্গোলিয়ান","মঙ্গোলিয়ান","TRUE","Mongolian","","Mongolian","FALSE","","FALSE","Mongolia","Bahasa Mongolia","Bahasa Mongolia","TRUE","монгольский","","монгольский","TRUE","蒙","","蒙","FALSE","Mongolian","","Mongolian","FALSE","Mongolian","Kimongolia","Kimongolia","TRUE","ሞኒጎሊያን","","ሞኒጎሊያን","FALSE","ชาวมองโกเลีย","","ชาวมองโกเลีย","FALSE","Mongolia.","Bahasa Mongolia","Bahasa Mongolia","TRUE","Mongolian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Musi","","Palembang","mui","","","","","Musi","","Musi","FALSE","Musi","Musi","Musi","TRUE","Musi","","Musi","FALSE","מוזי","","מוזי","FALSE","موسي","","موسي","FALSE","मूसी","","मूसी","FALSE","Musi","মুসি","মুসি","TRUE","Musi","","Musi","FALSE","","FALSE","musi","Bahasa Musi","Bahasa Musi","TRUE","Муси","муси","муси","TRUE","穆西","","穆西","FALSE","Musi","","Musi","FALSE","Musi","Musi","Musi","TRUE","Musi","","Musi","FALSE","มุส","","มุส","FALSE","Musi.","Bahasa Musi","Bahasa Musi","TRUE","Musi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Nama","Khoekhoegowab","","naq","","","","","Nama","","Nama","FALSE","Nama","Nama","Nama","TRUE","Nama","","Nama","FALSE","נמה","","נמה","FALSE","ناما","","ناما","FALSE","नामा","","नामा","FALSE","নাম","নামা","নামা","TRUE","Nama","","Nama","FALSE","","FALSE","Nama","Bahasa Nama","Bahasa Nama","TRUE","Нама","нама","нама","TRUE","那抹","","那抹","FALSE","nama","","nama","FALSE","Nama","Nama","Nama","TRUE","ናማ","","ናማ","FALSE","นาค","","นาค","FALSE","Nama","Bahasa Nama","Bahasa Nama","TRUE","Nama","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Nauruan","dorerin Naoero","","nau","","","","","nauruana","","nauruana","FALSE","Nauruan","Nauruano","Nauruano","TRUE","nauruan","","nauruan","FALSE","Nauruan","","Nauruan","FALSE","ناورو","","ناورو","FALSE","Nauruan","","Nauruan","FALSE","Nauruan","নওরুয়ান","নওরুয়ান","TRUE","Nauruan","","Nauruan","FALSE","","FALSE","Nauruan","Bahasa Nauru","Bahasa Nauru","TRUE","Nauruan","науруанский","науруанский","TRUE","瑙鲁","","瑙鲁","FALSE","Nauruan","","Nauruan","FALSE","Nauruan","Nauruan","Nauruan","TRUE","Nauruan","","Nauruan","FALSE","นากวน","","นากวน","FALSE","Nauruan","Bahasa Nauru","Bahasa Nauru","TRUE","Nauruan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Nepali","नेपाली/खस कुरा","Gorkhali, Khas-Kura","ne","Keyboard_dev_inscript","true","hi","","nepalí","nepalí","nepalí","TRUE","Nepali","Nepalês","Nepalês","TRUE","népalais","Népalais","Népalais","TRUE","נפאלית","","נפאלית","TRUE","النيبالية","النيبالية","النيبالية","FALSE","नेपाली","","नेपाली","FALSE","নেপালি","নেপালি","নেপালি","TRUE","ନେପାଳୀ","","ନେପାଳୀ","FALSE","","FALSE","Nepal","Bahasa Nepal","Bahasa Nepal","TRUE","непальский","","непальский","TRUE","尼泊尔","","尼泊尔","FALSE","Nepali","","Nepali","FALSE","Kinepali","Kinepali","Kinepali","TRUE","ኔፓሊ","","ኔፓሊ","FALSE","เนปาล","","เนปาล","FALSE","Nepal.","Bahasa Nepal","Bahasa Nepal","TRUE","Nepali","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Newar","नेपाल भाषा","","new","","","","","Newar","","Newar","FALSE","Newar","Newari","Newari","TRUE","Newar","","Newar","FALSE","Newar","","Newar","FALSE","نوار","","نوار","FALSE","Newar","","Newar","FALSE","Newar","নেওয়ার","নেওয়ার","TRUE","Newar","","Newar","FALSE","","FALSE","Newar","Bahasa Newar","Bahasa Newar","TRUE","неваров","неварский","неварский","TRUE","尼瓦尔","","尼瓦尔","FALSE","Newar","","Newar","FALSE","Newar","Newar","Newar","TRUE","Newar","","Newar","FALSE","ใหม่","","ใหม่","FALSE","Baru","Bahasa Newar","Bahasa Newar","TRUE","Newar.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ngaju Dayak","Dayak Ngaju","","nij","","","","","Ngaju Dayak","","Ngaju Dayak","FALSE","Ngaju Dayak","Ngaju Dayak","Ngaju Dayak","TRUE","Ngaju Dayak","","Ngaju Dayak","FALSE","Ngaju דיאק","","Ngaju דיאק","FALSE","Ngaju داياك","","Ngaju داياك","FALSE","Ngaju दयाक","","Ngaju दयाक","FALSE","Ngaju, দায়াক","নাগাজু দায়াক","নাগাজু দায়াক","TRUE","Ngaju Dayak","","Ngaju Dayak","FALSE","","FALSE","Dayak Ngaju","Bahasa Dayak Ngaju","Bahasa Dayak Ngaju","TRUE","Ngaju Dayak","нгаджу","нгаджу","TRUE","Ngaju达雅","","Ngaju达雅","FALSE","Ngaju Dayak","","Ngaju Dayak","FALSE","Ngaju Dayak","Ngaju Dayak","Ngaju Dayak","TRUE","Ngaju የዴያክ","","Ngaju የዴያክ","FALSE","Ngaju Dayak","","Ngaju Dayak","FALSE","Ngaju Dayak.","Bahasa Ngaju","Bahasa Ngaju","TRUE","Ngaju Dayak.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ngambay","","","sba","","","","","Ngambay","","Ngambay","FALSE","Ngambay","Ngambay","Ngambay","TRUE","ngambay","","ngambay","FALSE","Ngambay","","Ngambay","FALSE","Ngambay","","Ngambay","FALSE","Ngambay","","Ngambay","FALSE","Ngambay,","নাম্বে ","নাম্বে ","TRUE","Ngambay","","Ngambay","FALSE","","FALSE","Ngambay","Bahasa Ngambay","Bahasa Ngambay","TRUE","Ngambay","нгамбай","нгамбай","TRUE","Ngambay","","Ngambay","FALSE","Ngambay","","Ngambay","FALSE","Ngambay","Ngambay","Ngambay","TRUE","Ngambay","","Ngambay","FALSE","นากัมเบย์","","นากัมเบย์","FALSE","Ngambay.","Bahasa Ngambay","Bahasa Ngambay","TRUE","Ngambay.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Nheengatu","","","yrl","","","","","Nheengatu","","Nheengatu","FALSE","Nheengatu","Nheengatu","Nheengatu","TRUE","Nheengatu","","Nheengatu","FALSE","Nheengatu","","Nheengatu","FALSE","Nheengatu","","Nheengatu","FALSE","Nheengatu","","Nheengatu","FALSE","Nheengatu","ইঙ্গাটু ","ইঙ্গাটু ","TRUE","Nheengatu","","Nheengatu","FALSE","","FALSE","Nheengatu","Bahasa Nheengatu","Bahasa Nheengatu","TRUE","Nheengatu","ньенгату","ньенгату","TRUE","Nheengatu","","Nheengatu","FALSE","Nheengatu","","Nheengatu","FALSE","Nheengatu","Nheengatu","Nheengatu","TRUE","Nheengatu","","Nheengatu","FALSE","nheengatu","","nheengatu","FALSE","Nheengatu.","Bahasa Nheengatu","Bahasa Nheengatu","TRUE","Nheengatu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Nias","","","nia","","","","","Nias","","Nias","FALSE","Nias","Nias","Nias","TRUE","Nias","","Nias","FALSE","Nias","","Nias","FALSE","نياس","","نياس","FALSE","नियास","","नियास","FALSE","নিয়াস","নিয়াজ ","নিয়াজ ","TRUE","Nias","","Nias","FALSE","","FALSE","Nias","Bahasa Nias","Bahasa Nias","TRUE","Nias","ниасский","ниасский","TRUE","尼亚斯","","尼亚斯","FALSE","Nias","","Nias","FALSE","Nias","Nias","Nias","TRUE","Nias","","Nias","FALSE","nias","","nias","FALSE","Nias","Bahasa Nias","Bahasa Nias","TRUE","Nias.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"North Maluku (Ternate) Malay","","","max","","","","","Maluku del Norte (Ternate) Malay","","Maluku del Norte (Ternate) Malay","FALSE","North Maluku (Ternate) Malay","Maluku Malay do Norte","Maluku Malay do Norte","TRUE","North Maluku (Ternate) Malay","","North Maluku (Ternate) Malay","FALSE","מאלוקו צפון (טרנאטה) מלאית","","מאלוקו צפון (טרנאטה) מלאית","FALSE","مالوكو الشمالية (تيرنيت) الملايو","","مالوكو الشمالية (تيرنيت) الملايو","FALSE","उत्तर मालुकु (तेरनाते) मलय","","उत्तर मालुकु (तेरनाते) मलय","FALSE","উত্তর মালুকু (Ternate,) মালে","উত্তর মালুকু (তারনেট) মালয়","উত্তর মালুকু (তারনেট) মালয়","TRUE","ଉତ୍ତର Maluku (Ternate) ମଳୟ","","ଉତ୍ତର Maluku (Ternate) ମଳୟ","FALSE","","FALSE","Maluku Utara (Ternate) Malay","Bahasa Maluku Utara (Ternate) Malay","Bahasa Maluku Utara (Ternate) Malay","TRUE","Северное Малуку (Ternate) Малайский","северный малуку","северный малуку","TRUE","北马鲁古(特尔纳特)马来","","北马鲁古(特尔纳特)马来","FALSE","Arewa Maluku (Ternate) Malay","","Arewa Maluku (Ternate) Malay","FALSE","North Maluku (Ternate) Malay","Maluku Kaskazini (Ternate) Malay","Maluku Kaskazini (Ternate) Malay","TRUE","በሰሜን የማላኩ (Ternate) ማላይ","","በሰሜን የማላኩ (Ternate) ማላይ","FALSE","มลายู North Maluku (Ternate)","","มลายู North Maluku (Ternate)","FALSE","Maluku Utara (Ternate) Melayu","Bahasa Melayu Maluku Utara (Ternate)","Bahasa Melayu Maluku Utara (Ternate)","TRUE","North Maluku (Ternate) Malay.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Northern Ndebele","Sindebele/isiNdebele","","nde","","","","","Ndebele del Norte","","Ndebele del Norte","FALSE","Northern Ndebele","Ndebele do Norte","Ndebele do Norte","TRUE","Ndebele du Nord","","Ndebele du Nord","FALSE","צפון נדבלה","","צפון נדבלה","FALSE","الشمالية نديبيلي","","الشمالية نديبيلي","FALSE","उत्तरी नेबेले","","उत्तरी नेबेले","FALSE","উত্তরাঞ্চলীয় এন্দেবিলি","উত্তর এন্ড্যেবেলা","উত্তর এন্ড্যেবেলা","TRUE","ଉତ୍ତର Ndebele","","ଉତ୍ତର Ndebele","FALSE","","FALSE","Northern Ndebele","Bahasa Ndebele Utara","Bahasa Ndebele Utara","TRUE","Северный ндебеле","северный ндебеле","северный ндебеле","TRUE","北恩德贝勒","","北恩德贝勒","FALSE","Northern Ndebele","","Northern Ndebele","FALSE","Ndebele Kaskazini","Ndebele ya Kaskazini","Ndebele ya Kaskazini","TRUE","ኖርዘርን ንደቤሌኛ","","ኖርዘርን ንደቤሌኛ","FALSE","Northern Ndebele","","Northern Ndebele","FALSE","Northern Ndebele.","Bahasa Ndebele Utara","Bahasa Ndebele Utara","TRUE","Northern Ndebele.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Northern Sámi","davvisámegiella","","sme","","","","","sami septentrional","","sami septentrional","FALSE","Sami do norte","Sami do Norte","Sami do Norte","TRUE","Les Samis du Nord","","Les Samis du Nord","FALSE","סמי צפון","","סמי צפון","FALSE","سامي الشمالية","","سامي الشمالية","FALSE","उत्तरी सामी","","उत्तरी सामी","FALSE","উত্তরাঞ্চলীয় সামি","উত্তর সামি ","উত্তর সামি ","TRUE","ଉତ୍ତର ସାମି","","ଉତ୍ତର ସାମି","FALSE","","FALSE","Northern Sámi","Bahasa Sami Utara","Bahasa Sami Utara","TRUE","Северный Sámi","северный сами","северный сами","TRUE","北萨米","","北萨米","FALSE","Northern Sami","","Northern Sami","FALSE","Northern Sámi","Sami ya Kaskazini","Sami ya Kaskazini","TRUE","ኖርዘርን ለሴሚ","","ኖርዘርን ለሴሚ","FALSE","Sámiตอนเหนือ","","Sámiตอนเหนือ","FALSE","Sámi utara.","Bahasa Sámi Utara","Bahasa Sámi Utara","TRUE","Northern Sámi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Northern Sotho","Sesotho sa leboa/Sepedi","","nso","","","","","sotho del norte","","sotho del norte","FALSE","Northern Sotho","Sotho do Norte","Sotho do Norte","TRUE","sotho du Nord","","sotho du Nord","FALSE","סוטו הצפוני","","סוטו הצפוני","FALSE","السوتو الشمالية","","السوتو الشمالية","FALSE","उत्तरी सोथो","","उत्तरी सोथो","FALSE","উত্তরাঞ্চলীয় সোথো","উত্তর সোথো","উত্তর সোথো","TRUE","ଉତ୍ତର Sotho","","ଉତ୍ତର Sotho","FALSE","","FALSE","Sotho utara","Bahasa Soto Utara","Bahasa Soto Utara","TRUE","Северный сото","северный сото","северный сото","TRUE","北索托","","北索托","FALSE","Northern Sotho","","Northern Sotho","FALSE","Kisotho cha Kaskazini","Kisotho cha Kaskazini","Kisotho cha Kaskazini","TRUE","ሰሜናዊ ሶቶኛ","","ሰሜናዊ ሶቶኛ","FALSE","Sotho ตอนเหนือ","","Sotho ตอนเหนือ","FALSE","Sotho Utara.","Bahasa Sotho Utara","Bahasa Sotho Utara","TRUE","Northern Sotho.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Northern Thai","Kam Mu'ang/คำเมือง","","nod","","","","","norte de Tailandia","","norte de Tailandia","FALSE","Northern Thai","Thai do Norte","Thai do Norte","TRUE","nord de la Thaïlande","","nord de la Thaïlande","FALSE","צפון תאילנדי","","צפון תאילנדי","FALSE","الشمالية التايلاندية","","الشمالية التايلاندية","FALSE","उत्तरी थाई","","उत्तरी थाई","FALSE","উত্তরাঞ্চলীয় থাই","উত্তর থাই","উত্তর থাই","TRUE","ଉତ୍ତର ଥାଇ","","ଉତ୍ତର ଥାଇ","FALSE","","FALSE","Northern Thailand","Bahasa Thailand Utara","Bahasa Thailand Utara","TRUE","Северный тайский","северный тайский","северный тайский","TRUE","泰国北部","","泰国北部","FALSE","Northern Thai","","Northern Thai","FALSE","Northern Thai","Thai ya Kaskazini","Thai ya Kaskazini","TRUE","ኖርዘርን ታይ","","ኖርዘርን ታይ","FALSE","ไทยตอนเหนือ","","ไทยตอนเหนือ","FALSE","Northern Thailand.","Bahasa Thai Utara","Bahasa Thai Utara","TRUE","Northern Thai.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Norwegian","norsk","","no","","","","","noruego","","noruego","FALSE","norueguês","Norueguês","Norueguês","TRUE","norvégien","","norvégien","FALSE","נורבגי","","נורבגי","FALSE","النرويجية","","النرويجية","FALSE","नार्वेजियन","","नार्वेजियन","FALSE","নরওয়েজীয়","নরওয়েজীয়","নরওয়েজীয়","TRUE","ନୋରୱେଜିଆନ୍","","ନୋରୱେଜିଆନ୍","FALSE","","FALSE","Norwegia","Bahasa Norwergia","Bahasa Norwergia","TRUE","норвежский язык","норвежский","норвежский","TRUE","挪威","","挪威","FALSE","Yaren mutanen Norway","","Yaren mutanen Norway","FALSE","Norway","Kinorwei ","Kinorwei ","TRUE","ኖርወይኛ","ኖርወይኛ","ኖርወይኛ","TRUE","นอร์เวย์","","นอร์เวย์","FALSE","Norway.","Bahasa Norway","Bahasa Norway","TRUE","Norwegian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Nuer","Thok Naath","","nus","","","","","nuer","","nuer","FALSE","Nuer","Nuer","Nuer","TRUE","Nuer","","Nuer","FALSE","Nuer","","Nuer","FALSE","النوير","","النوير","FALSE","Nuer","","Nuer","FALSE","Nuer,","নিউয়ার ","নিউয়ার ","TRUE","Nuer","","Nuer","FALSE","","FALSE","Nuer","Bahasa Nuer","Bahasa Nuer","TRUE","нуэров","нуэр","нуэр","TRUE","努尔","","努尔","FALSE","Nuer","","Nuer","FALSE","Nuer","Nuer","Nuer","TRUE","ኑዌር","","ኑዌር","FALSE","ผู้ทำลาย","","ผู้ทำลาย","FALSE","Nuer.","Bahasa Nuer","Bahasa Nuer","TRUE","Nuer.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Nzema","Nzema","","nzi","","","","","Nzema","","Nzema","FALSE","Nzema","Nzema","Nzema","TRUE","Nzema","","Nzema","FALSE","Nzema","","Nzema","FALSE","نزيما","","نزيما","FALSE","Nzema","","Nzema","FALSE","Nzema","এঞ্জেমা","এঞ্জেমা","TRUE","Nzema","","Nzema","FALSE","","FALSE","Nzema","Bahasa Nzema","Bahasa Nzema","TRUE","Nzema","нзема","нзема","TRUE","Nzema","","Nzema","FALSE","Nzema","","Nzema","FALSE","Nzema","Nzema","Nzema","TRUE","Nzema","","Nzema","FALSE","nzema","","nzema","FALSE","Nzema","Bahasa Nzema","Bahasa Nzema","TRUE","Nzema.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Occitan","lenga d'òc","","oci","","","","","occitano","","occitano","FALSE","Occitan","Occitano","Occitano","TRUE","occitan","","occitan","FALSE","אוקסיטנית","","אוקסיטנית","FALSE","الأوكيتانية","","الأوكيتانية","FALSE","ओसीटान","","ओसीटान","FALSE","অক্সিটান","অক্সিটান","অক্সিটান","TRUE","ଓସିଟାନ୍","","ଓସିଟାନ୍","FALSE","","FALSE","Occitan","Bahasa Occitan","Bahasa Occitan","TRUE","Occitan","окситанский","окситанский","TRUE","奥克","","奥克","FALSE","Occitan","","Occitan","FALSE","Kiokitani","Kiokitani","Kiokitani","TRUE","ኦኪታንኛ","","ኦኪታንኛ","FALSE","อวัยวะสืบทธ","","อวัยวะสืบทธ","FALSE","Occitan","Bahasa Occitan","Bahasa Occitan","TRUE","Occitan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Oriya","ଓଡ଼ିଆ","Oṛiā, Odia","or","Keyboard_isis_oriya","true","","","Oriya","oriya","oriya","TRUE","Oriya","Oriya","Oriya","TRUE","Oriya","Odia","Odia","TRUE","אוריה","אורייה (אודיה)","אורייה (אודיה)","TRUE","الأوريا","الأوريا","الأوريا","FALSE","ओरिया","","ओरिया","FALSE","ওড়িয়া","ওড়িয়া","ওড়িয়া","TRUE","ଓଡ଼ିଆ","","ଓଡ଼ିଆ","FALSE","","FALSE","Oriya","Bahasa Oriya","Bahasa Oriya","TRUE","Ория","ория","ория","TRUE","奥里亚语","","奥里亚语","FALSE","Oriya","","Oriya","FALSE","Kioriya","Kioriya","Kioriya","TRUE","ኦሪያ","","ኦሪያ","FALSE","โอริยา","","โอริยา","FALSE","Oriya","Bahasa Oriya","Bahasa Oriya","TRUE","Oriya","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Oromo","Afaan Oromoo","","om","","","","","Oromo","","Oromo","FALSE","Oromo","Oromo","Oromo","TRUE","Oromo","","Oromo","FALSE","אורומו","","אורומו","FALSE","أورومو","","أورومو","FALSE","ओरोमो","","ओरोमो","FALSE","অরোমো","অরোমো","অরোমো","TRUE","ଓରୋମୋ","","ଓରୋମୋ","FALSE","","FALSE","Oromo","Bahasa Oromo ","Bahasa Oromo ","TRUE","ор","оромо","оромо","TRUE","奥罗莫","","奥罗莫","FALSE","Harshen Oromo","","Harshen Oromo","FALSE","Oromo","Oromo","Oromo","TRUE","ኦሮሞ","","ኦሮሞ","FALSE","Oomo","","Oomo","FALSE","Oromo.","Bahasa Oromo","Bahasa Oromo","TRUE","Oromo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Palauan","a tekoi er a Belau","","pau","","","","","palauan","","palauan","FALSE","Palauan","Palauano","Palauano","TRUE","palauan","","palauan","FALSE","פאלאאאן","","פאלאאאן","FALSE","البالاوية","","البالاوية","FALSE","पलाउअन","","पलाउअन","FALSE","পালায়ুয়ান","পলোন","পলোন","TRUE","Palauan","","Palauan","FALSE","","FALSE","Palauan","Bahasa Palau","Bahasa Palau","TRUE","Palauan","палауский","палауский","TRUE","帕劳","","帕劳","FALSE","Palauan","","Palauan","FALSE","Palauan","Palauan","Palauan","TRUE","የፓላውን","","የፓላውን","FALSE","ชาวปาเลาซาน","","ชาวปาเลาซาน","FALSE","Palauan.","Bahasa Palau","Bahasa Palau","TRUE","Palauan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Pangasinan","Salitan Pangasinan","","pag","","","","","pangasinan","","pangasinan","FALSE","Pangasinan","Pangasiano","Pangasiano","TRUE","Pangasinan","","Pangasinan","FALSE","Pangasinan","","Pangasinan","FALSE","بانجاسينان","","بانجاسينان","FALSE","Pangasinan","","Pangasinan","FALSE","পাঙ্গাসিনান","পাঙ্গাসিনান","পাঙ্গাসিনান","TRUE","Pangasinan","","Pangasinan","FALSE","","FALSE","Pangasinan","Bahasa Pangasinan","Bahasa Pangasinan","TRUE","пангасинан","пангасинан","пангасинан","TRUE","邦阿西楠","","邦阿西楠","FALSE","Pangasinan","","Pangasinan","FALSE","Kipangasinani","Pangasinan","Pangasinan","TRUE","Pangasinan","","Pangasinan","FALSE","Pangasinan","","Pangasinan","FALSE","Pangasinan.","Bahasa Pangasinan","Bahasa Pangasinan","TRUE","Pangasinan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Papiamento","","Papiamentu","pap","","","","","papiamento","","papiamento","FALSE","papiamento","Papiamento","Papiamento","TRUE","papiamento","","papiamento","FALSE","פאפיאמנטו","","פאפיאמנטו","FALSE","البابيامينتو","","البابيامينتو","FALSE","पापियामेन्टो","","पापियामेन्टो","FALSE","পাপিয়ামেন্টো","পপামেন্টো","পপামেন্টো","TRUE","Papiamento","","Papiamento","FALSE","","FALSE","Papiamento","Bahasa Papiamento","Bahasa Papiamento","TRUE","Papiamento","папьяменто","папьяменто","TRUE","帕皮阿门托","","帕皮阿门托","FALSE","Papiamento","","Papiamento","FALSE","Papiamento","Papiamento","Papiamento","TRUE","ፓፒያሜንቶ","","ፓፒያሜንቶ","FALSE","Papiamento","","Papiamento","FALSE","Papiamento.","Bahasa Papiamento","Bahasa Papiamento","TRUE","Papiamento.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Papuan Malay","","","pmy","","","","","malayo de Papua","","malayo de Papua","FALSE","Papua Malay","Papuan Malay","Papuan Malay","TRUE","papou malais","","papou malais","FALSE","Papuan מלאית","","Papuan מלאית","FALSE","بابوا الملايو","","بابوا الملايو","FALSE","Papuan मलय","","Papuan मलय","FALSE","পাপুয়ান মালে","পাপুয়ান মালয়","পাপুয়ান মালয়","TRUE","Papuan ମଳୟ","","Papuan ମଳୟ","FALSE","","FALSE","Papua Melayu","Bahasa Melayu Papua ","Bahasa Melayu Papua ","TRUE","папуас Малайский","папуасско-малайский","папуасско-малайский","TRUE","巴布亚马来","","巴布亚马来","FALSE","Papuan Malay","","Papuan Malay","FALSE","Papuan Malay","Papuan Malay","Papuan Malay","TRUE","የፓፓውያን ማላይኛ","","የፓፓውያን ማላይኛ","FALSE","ปัสสาวะมลายู","","ปัสสาวะมลายู","FALSE","Papua Malay","Bahasa Melayu Papua","Bahasa Melayu Papua","TRUE","Papuan Malay.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Pashto","پښتو","","ps","","","","","Pashto","","Pashto","FALSE","pashto","pachto","pachto","TRUE","pashto","","pashto","FALSE","פאשטו","","פאשטו","FALSE","الباشتو","","الباشتو","FALSE","पश्तो","","पश्तो","FALSE","পুশতু","প্যাশতু","প্যাশতু","TRUE","Pashto","","Pashto","FALSE","","FALSE","Pashto","Bahasa Pashto","Bahasa Pashto","TRUE","пушту","","пушту","TRUE","普什图语","","普什图语","FALSE","Pashto","","Pashto","FALSE","Pashto","Kipashto","Kipashto","TRUE","ፓሽቶ","","ፓሽቶ","FALSE","คนปุยโต","","คนปุยโต","FALSE","Pashto.","Bahasa Pashto","Bahasa Pashto","TRUE","Pashto.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Persian","فارسی","Farsi","fa","Keyboard_dari_clra","true","","","persa","persa","persa","TRUE","persa","Persa","Persa","TRUE","persan","Persan","Persan","TRUE","פַּרסִית","פרסית","פרסית","TRUE","اللغة الفارسية","الفارسية","الفارسية","FALSE","फ़ारसी","","फ़ारसी","FALSE","পারসিক","পারসিক","পারসিক","TRUE","Persian","","Persian","FALSE","","FALSE","Orang Persia","Bahasa Persia","Bahasa Persia","TRUE","персидский","","персидский","TRUE","波斯语","","波斯语","FALSE","Persian","","Persian","FALSE","Persian","Kipersian","Kipersian","TRUE","ፐርሽያን","","ፐርሽያን","FALSE","ชาวเปอร์เซีย","","ชาวเปอร์เซีย","FALSE","Persia.","Bahasa Parsi","Bahasa Parsi","TRUE","Persyano","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Pijin","Pijin/Pisin","","pis","","","","","Pijin","","Pijin","FALSE","Pijin","Pijin","Pijin","TRUE","pidgin","","pidgin","FALSE","Pijin","","Pijin","FALSE","Pijin","","Pijin","FALSE","Pijin","","Pijin","FALSE","Pijin,","পিজিন","পিজিন","TRUE","Pijin","","Pijin","FALSE","","FALSE","Pijin","Bahasa Pijin","Bahasa Pijin","TRUE","Pijin","пиджин","пиджин","TRUE","皮筋","","皮筋","FALSE","Pijin","","Pijin","FALSE","Pijin","Kipijin","Kipijin","TRUE","Pijin","","Pijin","FALSE","Pijin","","Pijin","FALSE","Pijin.","Bahasa Pijin","Bahasa Pijin","TRUE","Pijin.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Pohnpeian","Pohnpei","","pon","","","","","pohnpeiano","","pohnpeiano","FALSE","Pohnpeian","Ponapean","Ponapean","TRUE","Pohnpéien","","Pohnpéien","FALSE","הפוהנפיית","","הפוהנפיית","FALSE","Pohnpeian","","Pohnpeian","FALSE","पोह्नपिएन","","पोह्नपिएन","FALSE","পোহ্নপেইয়ান","পোহনপিয়ান","পোহনপিয়ান","TRUE","Pohnpeian","","Pohnpeian","FALSE","","FALSE","Pohnpeian","Bahasa Pohnpeian","Bahasa Pohnpeian","TRUE","Pohnpeian","понпейский","понпейский","TRUE","Pohnpeian","","Pohnpeian","FALSE","Pohnpeian","","Pohnpeian","FALSE","Pohnpeian","Pohnpeian","Pohnpeian","TRUE","Pohnpeian","","Pohnpeian","FALSE","คนโง่","","คนโง่","FALSE","Pohnpeian.","Bahasa Pohnpei","Bahasa Pohnpei","TRUE","Pohnpeian.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Polish","polski","","pol","","","","","polaco","","polaco","FALSE","polonês","Polaco","Polaco","TRUE","polonais","","polonais","FALSE","פולני","","פולני","FALSE","تلميع","","تلميع","FALSE","पोलिश","","पोलिश","FALSE","পোলিশ","পোলিশ","পোলিশ","TRUE","େପାଲାଣ୍ଡର ଅଧିବାସୀ","","େପାଲାଣ୍ଡର ଅଧିବାସୀ","FALSE","","FALSE","Polandia","Bahasa Polandia","Bahasa Polandia","TRUE","полировать","польский","польский","TRUE","抛光","","抛光","FALSE","Yaren mutanen Poland","","Yaren mutanen Poland","FALSE","polish","Kipolishi","Kipolishi","TRUE","ፖሊሽ","","ፖሊሽ","FALSE","ขัด","","ขัด","FALSE","Menggilap","Bahasa Poland","Bahasa Poland","TRUE","Polish","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Portuguese","português","","pt","Keyboard_portuguese","true","","","portugués","portugués","portugués","TRUE","Português","Português","Português","TRUE","Portugais","Portugais","Portugais","TRUE","פורטוגזי","פורטוגזית","פורטוגזית","TRUE","البرتغالية","البرتغالية","البرتغالية","FALSE","पुर्तगाली","","पुर्तगाली","FALSE","পর্তুগীজ","পর্তুগীজ","পর্তুগীজ","TRUE","ପର୍ତ୍ତୁଗ୍ରୀଜ୍","","ପର୍ତ୍ତୁଗ୍ରୀଜ୍","FALSE","","FALSE","Portugis","Bahasa Portugis","Bahasa Portugis","TRUE","португальский","","португальский","TRUE","葡萄牙语","","葡萄牙语","FALSE","Portuguese","","Portuguese","FALSE","Ureno","Kireno","Kireno","TRUE","ፖርቹጋልኛ","ፖርቹጋልኛ","ፖርቹጋልኛ","TRUE","ชาวโปรตุเกส","","ชาวโปรตุเกส","FALSE","Portugis","Bahasa Portugis","Bahasa Portugis","TRUE","Portuges","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Pulaar","Pulaar","","fuc","","","","","pulaar","","pulaar","FALSE","pulaar","Pulaar","Pulaar","TRUE","pulaar","","pulaar","FALSE","Pulaar","","Pulaar","FALSE","البولار","","البولار","FALSE","Pulaar","","Pulaar","FALSE","Pulaar,","পুলার","পুলার","TRUE","Pulaar","","Pulaar","FALSE","","FALSE","Pulaar","Bahasa Pulaar","Bahasa Pulaar","TRUE","пулар","пулаар","пулаар","TRUE","波尔","","波尔","FALSE","Pulaar","","Pulaar","FALSE","Pulaar","Pulaar","Pulaar","TRUE","Pulaar","","Pulaar","FALSE","พาล","","พาล","FALSE","Pulaar","Bahasa Pulaar","Bahasa Pulaar","TRUE","Pulaar","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Pular","Pular","","fuf","","","","","Pular","","Pular","FALSE","Pular","Pular","Pular","TRUE","pular","","pular","FALSE","Pular","","Pular","FALSE","البولار","","البولار","FALSE","Pular","","Pular","FALSE","Pular","পিউলার ","পিউলার ","TRUE","Pular","","Pular","FALSE","","FALSE","pular","Bahasa Pular","Bahasa Pular","TRUE","Pular","пулар","пулар","TRUE","Pular","","Pular","FALSE","Pular","","Pular","FALSE","Pular","Pular","Pular","TRUE","Pular","","Pular","FALSE","บั้ง","","บั้ง","FALSE","Pular","Bahasa Pular","Bahasa Pular","TRUE","Pular.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Punjabi","ਪੰਜਾਬੀ","پن٘جابی","pa","Keyboard_isis_gurmukhi","true","","","punjabi","punjabi","punjabi","TRUE","Punjabi","Punjabi","Punjabi","TRUE","Punjabi","Punjabi","Punjabi","TRUE","פנג'אבי","","פנג'אבי","TRUE","البنجابية","البنجابية","البنجابية","FALSE","पंजाबी","","पंजाबी","FALSE","পাঞ্জাবি","পাঞ্জাবি","পাঞ্জাবি","TRUE","ପଞ୍ଜାବୀ","","ପଞ୍ଜାବୀ","FALSE","","FALSE","Punjabi","Bahasa Punjab","Bahasa Punjab","TRUE","панджаби","пенджаби","пенджаби","TRUE","旁遮普","","旁遮普","FALSE","Punjabi","","Punjabi","FALSE","Punjabi","Kipunjabi","Kipunjabi","TRUE","ፑንጃቢ","","ፑንጃቢ","FALSE","ปัญจาบ","","ปัญจาบ","FALSE","Punjabi.","Bahasa Punjabi","Bahasa Punjabi","TRUE","Punjabi","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Quechua","Runa Simi","","qu","Keyboard_european","","","","quechua","quechua","quechua","TRUE","Quechua","Quechua","Quechua","TRUE","Quechua","Quechua","Quechua","TRUE","קצ'ואה","","קצ'ואה","TRUE","الكيشوا","الكيشوا","الكيشوا","FALSE","क्वेशुआ","","क्वेशुआ","FALSE","কেচুয়া","কেচুয়া","কেচুয়া","TRUE","Quechua","","Quechua","FALSE","","FALSE","Quechua","Bahasa Quechua","Bahasa Quechua","TRUE","кечуа","","кечуа","TRUE","克丘亚语","","克丘亚语","FALSE","Quechua","","Quechua","FALSE","Quechua","Kikwechua","Kikwechua","TRUE","ኬችዋ","","ኬችዋ","FALSE","quechua","","quechua","FALSE","Quechua.","Bahasa Quechua","Bahasa Quechua","TRUE","Quechua","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Rakhine (Arakanese)"," ra.hkuing bhasa","ရခိုင်ဘာသာ","rki","","","","","Rakhine (Arakanese)","","Rakhine (Arakanese)","FALSE","Rakhine (Arakanese)","Arakanês","Arakanês","TRUE","Rakhine (Arakanese)","","Rakhine (Arakanese)","FALSE","ראכין (Arakanese)","","ראכין (Arakanese)","FALSE","راخين (Arakanese)","","راخين (Arakanese)","FALSE","राखिने (Arakanese)","","राखिने (Arakanese)","FALSE","রাখাইন (আরাকান)","রাখিনে (আরাকানিজ)","রাখিনে (আরাকানিজ)","TRUE","Rakhine (Arakanese)","","Rakhine (Arakanese)","FALSE","","FALSE","Rakhine (Arakan)","Bahasa Rakhine (Arakan)","Bahasa Rakhine (Arakan)","TRUE","Rakhine (араканцев)","араканский","араканский","TRUE","若开邦(阿拉干)","","若开邦(阿拉干)","FALSE","Rakhine (Arakanese)","","Rakhine (Arakanese)","FALSE","Rakhine (Arakanese)","Rakhine (Arakanese)","Rakhine (Arakanese)","TRUE","Rakhine (Arakanese)","","Rakhine (Arakanese)","FALSE","Rakhine (Arakanese)","","Rakhine (Arakanese)","FALSE","Rakhine (Arakanese)","Bahasa Rakhine (Arakan)","Bahasa Rakhine (Arakan)","TRUE","Rakhine (Arakanese)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Romanian","limba română","","ron","","","","","rumano","","rumano","FALSE","romena","Romeno","Romeno","TRUE","roumain","","roumain","FALSE","רומנית","","רומנית","FALSE","روماني","","روماني","FALSE","रोमानियाई","","रोमानियाई","FALSE","রোমানিয়ন","রোমানিয়ন","রোমানিয়ন","TRUE","ରୋମାନିୟ","","ରୋମାନିୟ","FALSE","","FALSE","Rumania","Bahasa Rumania","Bahasa Rumania","TRUE","румынский","","румынский","TRUE","罗马尼亚","","罗马尼亚","FALSE","Romanian","","Romanian","FALSE","Kiromania","Kiromania","Kiromania","TRUE","ሮማንያን","","ሮማንያን","FALSE","ภาษาโรมาเนีย","","ภาษาโรมาเนีย","FALSE","Bahasa Romania","Bahasa Romania","Bahasa Romania","TRUE","Romanian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Romansh","aka Rumantsch","","rm","","","","","romansh","","romansh","FALSE","Romanche","Romanche","Romanche","TRUE","romanche","","romanche","FALSE","רומאנש","","רומאנש","FALSE","الرومانش","","الرومانش","FALSE","रोमांश","","रोमांश","FALSE","রোমান্স","রোমান্জ ","রোমান্জ ","TRUE","ରୋମାନସ୍","","ରୋମାନସ୍","FALSE","","FALSE","Romansh","Bahasa Romansh","Bahasa Romansh","TRUE","ретороманский диалект","","ретороманский диалект","TRUE","罗曼什","","罗曼什","FALSE","Romansh","","Romansh","FALSE","Kiromanshi","Kirumi","Kirumi","TRUE","ሮማንሽ","","ሮማንሽ","FALSE","romansh","","romansh","FALSE","Romansh.","Bahasa Romansh","Bahasa Romansh","TRUE","Romansh.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Russian","русский","язык","ru","Keyboard_russian","true","","","ruso","ruso","ruso","TRUE","russo","Russo","Russo","TRUE","russe","Russe","Russe","TRUE","רוּסִי","רוסית","רוסית","TRUE","الروسية","الروسية","الروسية","FALSE","रूसी","","रूसी","FALSE","রাশিয়ান","রূশ","রূশ","TRUE","Russian","","Russian","FALSE","","FALSE","Rusia","Bahasa Rusia","Bahasa Rusia","TRUE","русский","","русский","TRUE","俄语","","俄语","FALSE","Rasha","","Rasha","FALSE","russian","Kirusi","Kirusi","TRUE","ራሺያኛ","","ራሺያኛ","FALSE","ชาวรัสเซีย","","ชาวรัสเซีย","FALSE","Rusia.","Bahasa Rusia","Bahasa Rusia","TRUE","Ruso","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sambal","Sambali","","sbl","","","","","sambal","","sambal","FALSE","sambal","Sambal","Sambal","TRUE","Sambal","","Sambal","FALSE","sambal","","sambal","FALSE","سامبال","","سامبال","FALSE","संबल","","संबल","FALSE","Sambal,","সমবল","সমবল","TRUE","Sambal","","Sambal","FALSE","","FALSE","Sambal","Bahasa Sambal","Bahasa Sambal","TRUE","Sambal","самбал","самбал","TRUE","叁峇","","叁峇","FALSE","Sambal","","Sambal","FALSE","Sambal","Sambal","Sambal","TRUE","Sambal","","Sambal","FALSE","ซัมบัล","","ซัมบัล","FALSE","Sambal.","Bahasa Sambal","Bahasa Sambal","TRUE","Sambbal.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sango","jáŋɡá tí sāŋɡō","","sag","","","","","Sango","","Sango","FALSE","Sango","Sango","Sango","TRUE","Sango","","Sango","FALSE","סאנגו","","סאנגו","FALSE","سانغو","","سانغو","FALSE","सांगो","","सांगो","FALSE","সাঙ্গো","সাঙ্গো","সাঙ্গো","TRUE","Sango","","Sango","FALSE","","FALSE","Sango","Bahasa Sango","Bahasa Sango","TRUE","Санго","санго","санго","TRUE","三乡","","三乡","FALSE","Sango","","Sango","FALSE","Sango","Sango","Sango","TRUE","ሳንጎ","","ሳንጎ","FALSE","Sango","","Sango","FALSE","Sango.","Bahasa Sango","Bahasa Sango","TRUE","Sango.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Santali","hoɽ roɽ","","sat","","","","","Santali","","Santali","FALSE","santali","Santali","Santali","TRUE","santal","","santal","FALSE","Santali","","Santali","FALSE","الصندل","","الصندل","FALSE","संताली","","संताली","FALSE","সাঁওতালি","সাঁওতালি","সাঁওতালি","TRUE","ସାନ୍ତାଳି","","ସାନ୍ତାଳି","FALSE","","FALSE","Santali","Bahasa Santali","Bahasa Santali","TRUE","сантали","","сантали","TRUE","檀香","","檀香","FALSE","santali","","santali","FALSE","Santali","Santali","Santali","TRUE","Santali","","Santali","FALSE","ซานตาลี","","ซานตาลี","FALSE","Santali.","Bahasa Santali","Bahasa Santali","TRUE","Santali.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sar(a)","","","mwm","","","","","Sar (a)","","Sar (a)","FALSE","Sar (a)","Sar(a)","Sar(a)","TRUE","Sar (a)","","Sar (a)","FALSE","סאר (א)","","סאר (א)","FALSE","سارا)","","سارا)","FALSE","सार (क)","","सार (क)","FALSE","সার (ক)","সর (এ)","সর (এ)","TRUE","Sar (ଏକ)","","Sar (ଏକ)","FALSE","","FALSE","Sar (a)","Bahasa Sar (a)","Bahasa Sar (a)","TRUE","Сара)","сар","сар","TRUE","SAR(一)","","SAR(一)","FALSE","Sar (a)","","Sar (a)","FALSE","Sar (a)","Sar(a)","Sar(a)","TRUE","SAR (ሀ)","","SAR (ሀ)","FALSE","SAR (A)","","SAR (A)","FALSE","SAR (A)","Bahasa Sar(a)","Bahasa Sar(a)","TRUE","Sar (a)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Saramaccan","Saamáka","","srm","","","","","Saramaccan","","Saramaccan","FALSE","Saramaccan","Saramacano","Saramacano","TRUE","saramaccan","","saramaccan","FALSE","וסאראמאקן","","וסאראמאקן","FALSE","Saramaccan","","Saramaccan","FALSE","Saramaccan","","Saramaccan","FALSE","Saramaccan,","সারাম্যাকান","সারাম্যাকান","TRUE","Saramaccan","","Saramaccan","FALSE","","FALSE","Saramaccan","Bahasa Saramaccan","Bahasa Saramaccan","TRUE","Saramaccan","сарамакканский","сарамакканский","TRUE","Saramaccan","","Saramaccan","FALSE","Saramaccan","","Saramaccan","FALSE","Saramaccan","Saramaccan","Saramaccan","TRUE","Saramaccan","","Saramaccan","FALSE","Saramaccan","","Saramaccan","FALSE","Saramaccan.","Bahasa Saramaccan","Bahasa Saramaccan","TRUE","Saramaccan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sasak","Base Sasak","","sas","","","","","sasak","","sasak","FALSE","Sasak","Sasak","Sasak","TRUE","sasak","","sasak","FALSE","Sasak","","Sasak","FALSE","الساساك","","الساساك","FALSE","सासाक","","सासाक","FALSE","সাসাক","সাসাক","সাসাক","TRUE","Sasak","","Sasak","FALSE","","FALSE","sasak","Bahasa Sasak","Bahasa Sasak","TRUE","Sasak","сасакский","сасакский","TRUE","Sasak","","Sasak","FALSE","sasak","","sasak","FALSE","Sasak","Sasak","Sasak","TRUE","Sasak","","Sasak","FALSE","ซ่า","","ซ่า","FALSE","Sasak.","Bahasa Sasak","Bahasa Sasak","TRUE","Sasak.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Se(e)rer","Seereer","","srr","","","","","Se (e) RER","","Se (e) RER","FALSE","Se (e) rer","Sererê","Sererê","TRUE","Se (e) Dürer","","Se (e) Dürer","FALSE","Se (ה) RER","","Se (ה) RER","FALSE","سي (ه) الإندوبلازمية","","سي (ه) الإندوبلازمية","FALSE","एसई (ई) RER","","एसई (ई) RER","FALSE","Se থেকে (ঙ) RER","সে (ই) রির","সে (ই) রির","TRUE","Se (ଇ) rer","","Se (ଇ) rer","FALSE","","FALSE","Se (e) rer","Bahasa Se (e) rer","Bahasa Se (e) rer","TRUE","Се (е) RER","серер","серер","TRUE","硒(e)中RER","","硒(e)中RER","FALSE","Se (e) rer","","Se (e) rer","FALSE","Se (e) rer","Se(e)rer","Se(e)rer","TRUE","SE (ሠ) rer","","SE (ሠ) rer","FALSE","SE (e) rer","","SE (e) rer","FALSE","SE (E) RER","Bahasa Se(e)rer","Bahasa Se(e)rer","TRUE","Se (e) rer","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sena","Chisena","Chibarwe","seh ","","","","swk (Malawi) bwg [Barwe-Zimbabwe]","Sena","","Sena","FALSE","Sena","Sena","Sena","TRUE","Sena","","Sena","FALSE","סנה","","סנה","FALSE","سينا","","سينا","FALSE","शिवसेना","","शिवसेना","FALSE","সেন","সেনা","সেনা","TRUE","Sena","","Sena","FALSE","","FALSE","sena","Bahasa Sena","Bahasa Sena","TRUE","Sena","сена","сена","TRUE","塞纳","","塞纳","FALSE","Sena","","Sena","FALSE","Sena","Sena","Sena","TRUE","Sena","","Sena","FALSE","เสนา","","เสนา","FALSE","Sena.","Bahasa Sena","Bahasa Sena","TRUE","Sena.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Serbian","српски","srpski","srp","","","","","serbio","","serbio","FALSE","sérvio","Sérvio","Sérvio","TRUE","serbe","","serbe","FALSE","סרבי","","סרבי","FALSE","صربي","","صربي","FALSE","सर्बियाई","","सर्बियाई","FALSE","সার্বীয়","সার্বিআন","সার্বিআন","TRUE","ସର୍ବିଆନ୍","","ସର୍ବିଆନ୍","FALSE","","FALSE","Orang Serbia","Bahasa Serbia","Bahasa Serbia","TRUE","сербский","","сербский","TRUE","塞尔维亚","","塞尔维亚","FALSE","Serbian","","Serbian","FALSE","Kisabia","Kiserbia","Kiserbia","TRUE","ሰሪቢያን","","ሰሪቢያን","FALSE","ชาวเซอร์เบีย","","ชาวเซอร์เบีย","FALSE","Serbia.","Bahasa Serbia","Bahasa Serbia","TRUE","Serbian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Shan","kwam tai","","shn","","","","","Shan","","Shan","FALSE","Shan","Xã","Xã","TRUE","Shan","","Shan","FALSE","שאן","","שאן","FALSE","شان","","شان","FALSE","शान","","शान","FALSE","শান","শান","শান","TRUE","Shan","","Shan","FALSE","","FALSE","shan","Bahasa Shan","Bahasa Shan","TRUE","Shan","шанский","шанский","TRUE","山","","山","FALSE","Shan","","Shan","FALSE","Shan","Shan","Shan","TRUE","ሻን","","ሻን","FALSE","ชาน","","ชาน","FALSE","Shan","Bahasa Shan","Bahasa Shan","TRUE","Shan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Shina","ݜینا","षीना ","sal","","","","","Shina","","Shina","FALSE","Shina","Shina","Shina","TRUE","Shina","","Shina","FALSE","Shina","","Shina","FALSE","شينا","","شينا","FALSE","शिना","","शिना","FALSE","Shina","শিনা","শিনা","TRUE","Shina","","Shina","FALSE","","FALSE","Shina","Bahasa Shina","Bahasa Shina","TRUE","Shina","шина","шина","TRUE","支那","","支那","FALSE","Shina","","Shina","FALSE","Shina","Shina","Shina","TRUE","Shina","","Shina","FALSE","shina","","shina","FALSE","Shina","Bahasa Shina","Bahasa Shina","TRUE","Shina.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Shona","Shona","","sn","Keyboard_us","","","","Shona","shona","shona","TRUE","Shona","Shona","Shona","TRUE","Shona","Shona","Shona","TRUE","שונה","","שונה","TRUE","شونا","الشونا","الشونا","FALSE","सोणा","","सोणा","FALSE","শোনা","শোনা","শোনা","TRUE","ଶୋନା","","ଶୋନା","FALSE","","FALSE","Shona","Bahasa Shona","Bahasa Shona","TRUE","Shona","шона","шона","TRUE","绍纳语","","绍纳语","FALSE","Shona","","Shona","FALSE","Shona","Kishona","Kishona","TRUE","ሾና","","ሾና","FALSE","shona","","shona","FALSE","Shona.","Bahasa Shona","Bahasa Shona","TRUE","Shona.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Shuar","","Jivaro","jiv","","","","","Shuar","","Shuar","FALSE","Shuar","Chiwaro","Chiwaro","TRUE","Shuar","","Shuar","FALSE","Shuar","","Shuar","FALSE","الشوار","","الشوار","FALSE","Shuar","","Shuar","FALSE","Shuar,","শুয়ার","শুয়ার","TRUE","Shuar","","Shuar","FALSE","","FALSE","Shuar","Bahasa Shuar","Bahasa Shuar","TRUE","Шуар","шуар","шуар","TRUE","舒阿拉语","","舒阿拉语","FALSE","Shuar","","Shuar","FALSE","Shuar","Shuar","Shuar","TRUE","Shuar","","Shuar","FALSE","shuar","","shuar","FALSE","Shuar.","Bahasa Shuar","Bahasa Shuar","TRUE","Shuar.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sichuan Yi","ꆈꌠ꒿ ","Nuosuhxop","ii","","","","","Sichuan Yi","","Sichuan Yi","FALSE","Sichuan Yi","Sichuan Yi","Sichuan Yi","TRUE","Sichuan Yi","","Sichuan Yi","FALSE","סיצ'ואן יי","","סיצ'ואן יי","FALSE","سيتشوان يي","","سيتشوان يي","FALSE","सिचुआन यी","","सिचुआन यी","FALSE","সিচুয়ান য়ি","সেচওয়ান ই ","সেচওয়ান ই ","TRUE","Sichuan ୟି","","Sichuan ୟି","FALSE","","FALSE","Sichuan Yi","Bahasa Sichuan Yi","Bahasa Sichuan Yi","TRUE","сычуань","носу","носу","TRUE","四川彝族","","四川彝族","FALSE","Sichuan Yi","","Sichuan Yi","FALSE","Sichuan Yi","Sichuan Yi","Sichuan Yi","TRUE","የሲቿን ዪ","","የሲቿን ዪ","FALSE","มณฑลเสฉวนยี่","","มณฑลเสฉวนยี่","FALSE","Sichuan Yi.","Bahasa Nuosu","Bahasa Nuosu","TRUE","Sichuan Yi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sidamo","Sidaama","Sidaam-u afo","sid","","","","","sidamo","","sidamo","FALSE","Sidamo","Sidamo","Sidamo","TRUE","Sidamo","","Sidamo","FALSE","סידמו","","סידמו","FALSE","سيدامو","","سيدامو","FALSE","सिदामो","","सिदामो","FALSE","সিডামো","সিডামো","সিডামো","TRUE","Sidamo","","Sidamo","FALSE","","FALSE","Sidamo","Bahasa Sidamo","Bahasa Sidamo","TRUE","Sidamo","сидамо","сидамо","TRUE","西达莫","","西达莫","FALSE","Sidamo","","Sidamo","FALSE","Sidamo","Sidamo","Sidamo","TRUE","የሲዳሞ","","የሲዳሞ","FALSE","Sidamo","","Sidamo","FALSE","Sidamo.","Bahasa Sidamo","Bahasa Sidamo","TRUE","Sidamo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sindhi","سنڌي","सिंधी, ਸਿੰਧੀ","snd","","","","","sindhi","","sindhi","FALSE","Sindi","Sindhi","Sindhi","TRUE","sindhi","","sindhi","FALSE","סינדי","","סינדי","FALSE","السندية","","السندية","FALSE","सिंधी","","सिंधी","FALSE","সিন্ধি","সিন্ধি","সিন্ধি","TRUE","ସିନ୍ଧି","","ସିନ୍ଧି","FALSE","","FALSE","Sindhi","Bahasa Sindhi","Bahasa Sindhi","TRUE","Sindhi","синдхи","синдхи","TRUE","信德","","信德","FALSE","Sindhi","","Sindhi","FALSE","Msindhi","Kisindhi","Kisindhi","TRUE","ስንድሂ","","ስንድሂ","FALSE","sindhi","","sindhi","FALSE","Sindhi.","Bahasa Sindh","Bahasa Sindh","TRUE","Sindhi","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sinhalese","සිංහල","","sin","","","","","sinhalese","","sinhalese","FALSE","cingalês","Cingalês","Cingalês","TRUE","Cinghalais","","Cinghalais","FALSE","סינהליזית","","סינהליזית","FALSE","السنهالية","","السنهالية","FALSE","लंका का","","लंका का","FALSE","সিংহলী","সিংহলী","সিংহলী","TRUE","ସିଂହଳୀ","","ସିଂହଳୀ","FALSE","","FALSE","Sinhala","Bahasa Sinhala","Bahasa Sinhala","TRUE","сингалец","синхала","синхала","TRUE","僧伽罗语","","僧伽罗语","FALSE","Sinhalanci","","Sinhalanci","FALSE","Kisinhali","Sinhalese","Sinhalese","TRUE","ሲንሃላኛ","","ሲንሃላኛ","FALSE","คนสิงหล","","คนสิงหล","FALSE","Sinhalese.","Bahasa Sinhala","Bahasa Sinhala","TRUE","Sinhalese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Slovak","Slovenský","","slk","","","","","eslovaco","","eslovaco","FALSE","eslovaco","Eslovaco","Eslovaco","TRUE","slovaque","","slovaque","FALSE","סלובקי","","סלובקי","FALSE","السلوفاكية","","السلوفاكية","FALSE","स्लोवाक","","स्लोवाक","FALSE","স্লোভাক","স্লোভাক","স্লোভাক","TRUE","ସ୍ଲୋଭାକ୍","","ସ୍ଲୋଭାକ୍","FALSE","","FALSE","Orang Slovakia","Bahasa Slovakia","Bahasa Slovakia","TRUE","словацкий","","словацкий","TRUE","斯洛伐克","","斯洛伐克","FALSE","Basulake","","Basulake","FALSE","Kislovakia","Kislovakia","Kislovakia","TRUE","ስሎቫክ","","ስሎቫክ","FALSE","สโลวะเกีย","","สโลวะเกีย","FALSE","Slovak","Bahasa Slovak","Bahasa Slovak","TRUE","Slovak","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Slovene","Slovenski","","slv","","","","","esloveno","","esloveno","FALSE","esloveno","Esloveno","Esloveno","TRUE","slovène","","slovène","FALSE","סלובני","","סלובני","FALSE","السلوفينية","","السلوفينية","FALSE","स्लोवेनियाई","","स्लोवेनियाई","FALSE","স্লোভেনীয়","স্লোভিন ","স্লোভিন ","TRUE","Slovene","","Slovene","FALSE","","FALSE","Slovenia","Bahasa Slovenia","Bahasa Slovenia","TRUE","словенец","словенский","словенский","TRUE","斯洛文尼亚","","斯洛文尼亚","FALSE","Slovene","","Slovene","FALSE","kislovenia","Kislovenia","Kislovenia","TRUE","Slovene","","Slovene","FALSE","สโลวีเนีย","","สโลวีเนีย","FALSE","Slovene.","Bahasa Slovene","Bahasa Slovene","TRUE","Slovene.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Somali","af Soomaali","اَف صَومالي˜","so","","","","","somalí","","somalí","FALSE","somali","Somali","Somali","TRUE","somali","","somali","FALSE","הסומלי","","הסומלי","FALSE","الصومالية","","الصومالية","FALSE","सोमाली","","सोमाली","FALSE","সোমালী","সোমালি","সোমালি","TRUE","ସୋମାଲି","","ସୋମାଲି","FALSE","","FALSE","Somalia","Bahasa Somalia","Bahasa Somalia","TRUE","сомалийский","","сомалийский","TRUE","索马里","","索马里","FALSE","Somali","","Somali","FALSE","Somalia","Kisomali","Kisomali","TRUE","ሶማሌ","","ሶማሌ","FALSE","โซมาเลีย","","โซมาเลีย","FALSE","Somali.","Bahasa Somali","Bahasa Somali","TRUE","Somali.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Soninke","Sooninkanxanne","","snk","","","","","soninke","","soninke","FALSE","Soninke","soninquê","soninquê","TRUE","Soninké","","Soninké","FALSE","סונינקה","","סונינקה","FALSE","سونينكي","","سونينكي","FALSE","सोनिन्के","","सोनिन्के","FALSE","সোনিঙ্কে","সোনিনকে","সোনিনকে","TRUE","Soninke","","Soninke","FALSE","","FALSE","Soninke","Bahasa Soninke","Bahasa Soninke","TRUE","сонинке","","сонинке","TRUE","索宁克","","索宁克","FALSE","Soninke","","Soninke","FALSE","Soninke","Soninke ","Soninke ","TRUE","Soninke","","Soninke","FALSE","ซอนซิน","","ซอนซิน","FALSE","Soninke","Bahasa Soninke","Bahasa Soninke","TRUE","Soninke.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Southern Ndebele","isiNdebele","","nbl","","","","","Ndebele del sur","","Ndebele del sur","FALSE","Southern Ndebele","Ndebele do Sul","Ndebele do Sul","TRUE","sud Ndebele","","sud Ndebele","FALSE","דרום נדבלה","","דרום נדבלה","FALSE","جنوب نديبيلي","","جنوب نديبيلي","FALSE","दक्षिणी नेबेले","","दक्षिणी नेबेले","FALSE","দক্ষিন এন্দেবিলি","দক্ষিন এন্ড্যেবেলা ","দক্ষিন এন্ড্যেবেলা ","TRUE","ଦକ୍ଷିଣ ଦିଗସ୍ଥ Ndebele","","ଦକ୍ଷିଣ ଦିଗସ୍ଥ Ndebele","FALSE","","FALSE","Slowakia","Bahasa Slowakia","Bahasa Slowakia","TRUE","Южный ндебеле","южный ндебеле","южный ндебеле","TRUE","沃拉普克语","","沃拉普克语","FALSE","kudancin Ndebele","","kudancin Ndebele","FALSE","Ndebele Southern","Ndebele ya Kusini","Ndebele ya Kusini","TRUE","የደቡብ ንደቤሌኛ","","የደቡብ ንደቤሌኛ","FALSE","ภาคใต้ของ Ndebele","","ภาคใต้ของ Ndebele","FALSE","Southern Ndebele.","Bahasa Ndebele Selatan","Bahasa Ndebele Selatan","TRUE","Southern Ndebele.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Southern Sotho","seSotho","","st","","","","","sesotho meridional","","sesotho meridional","FALSE","Soto do sul","Sotho do Sul","Sotho do Sul","TRUE","Southern sotho","","Southern sotho","FALSE","ססות'ו","","ססות'ו","FALSE","السوتو الجنوبية","","السوتو الجنوبية","FALSE","सेसोथो","","सेसोथो","FALSE","দক্ষিন সোথো","দক্ষিন সোথো","দক্ষিন সোথো","TRUE","ଦକ୍ଷିଣ ଦିଗସ୍ଥ Sotho","","ଦକ୍ଷିଣ ଦିଗସ୍ଥ Sotho","FALSE","","FALSE","Southern Sotho","Bahasa Sotho Selatan","Bahasa Sotho Selatan","TRUE","сото южный","южный сото ","южный сото ","TRUE","南索托","","南索托","FALSE","Sesotanci","","Sesotanci","FALSE","Kisotho cha Kusini","Kisotho cha Kusini","Kisotho cha Kusini","TRUE","የደቡብ ሶቶኛ","","የደቡብ ሶቶኛ","FALSE","Sotho ตอนใต้","","Sotho ตอนใต้","FALSE","Sotho Selatan.","Bahasa Sotho Selatan","Bahasa Sotho Selatan","TRUE","Southern Sotho.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Spanish","español","castellano","es","Keyboard_spanish","true","","","Español","español","español","TRUE","espanhol","Espanhol","Espanhol","TRUE","Espagnol","Espagnol","Espagnol","TRUE","ספרדית","","ספרדית","TRUE","الأسبانية","الإسبانية","الإسبانية","FALSE","स्पेनिश","","स्पेनिश","FALSE","স্পেনীয়","স্পেনীয়","স্পেনীয়","TRUE","ସ୍ପାନିସ୍","","ସ୍ପାନିସ୍","FALSE","","FALSE","Orang Spanyol","Bahasa Spanyol","Bahasa Spanyol","TRUE","испанский","","испанский","TRUE","西班牙语","","西班牙语","FALSE","Spanish","","Spanish","FALSE","spanish","Kispanyola","Kispanyola","TRUE","ስፓንኛ","","ስፓንኛ","FALSE","ภาษาสเปน","","ภาษาสเปน","FALSE","Bahasa Sepanyol","Bahasa Sepanyol","Bahasa Sepanyol","TRUE","Espanyol","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sranan Tongo","Sranan Tongo","","srn","","","","","sranan Tongo","","sranan Tongo","FALSE","Sranan Tongo","Surinamês","Surinamês","TRUE","sranan tongo","","sranan tongo","FALSE","Sranan Tongo","","Sranan Tongo","FALSE","لغة سرانان","","لغة سرانان","FALSE","स्रानान टॉन्गो","","स्रानान टॉन्गो","FALSE","স্রানান টোঙ্গো","শ্রানন টঙ্গো","শ্রানন টঙ্গো","TRUE","Sranan Tongo","","Sranan Tongo","FALSE","","FALSE","Bahasa Sranantongo","Bahasa Sranan Tongo","Bahasa Sranan Tongo","TRUE","сранан Tongo","сранан-тонго","сранан-тонго","TRUE","苏里南汤加语","","苏里南汤加语","FALSE","Sranan Tongo","","Sranan Tongo","FALSE","Sranan Tongo","Sranan Tongo","Sranan Tongo","TRUE","Sranan Tongo","","Sranan Tongo","FALSE","Sranan Tongo","","Sranan Tongo","FALSE","Sranan Tongo.","Bahasa Sranan Tongo","Bahasa Sranan Tongo","TRUE","Sranan Tongo.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sundanese","Basa sunda","","sun","","","","","sundanese","","sundanese","FALSE","Sudanês","Sudanês","Sudanês","TRUE","sundanais","","sundanais","FALSE","סודני","","סודני","FALSE","السودانية","","السودانية","FALSE","सुंडानी","","सुंडानी","FALSE","সুদানী","সুন্দানিজ","সুন্দানিজ","TRUE","ସୁଦାନୀଜ୍","","ସୁଦାନୀଜ୍","FALSE","","FALSE","Sunda","Bahasa Sunda","Bahasa Sunda","TRUE","Суданский","суданский","суданский","TRUE","巽","","巽","FALSE","Sundanese","","Sundanese","FALSE","Kisunda","Kisudani","Kisudani","TRUE","ሱዳንኛ","ሱዳንኛ","ሱዳንኛ","FALSE","ชาวซิดนาน","","ชาวซิดนาน","FALSE","Sunda.","Bahasa Sunda","Bahasa Sunda","TRUE","Sundanese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Swahili","Kiswahili","","sw","Keyboard_basic_kbdus","","","swh = kiswahili, sw is macrolanguage","swahili","swahili","swahili","TRUE","swahili","Swahili","Swahili","TRUE","swahili","Swahili","Swahili","TRUE","סוואהילית","סווהילי","סווהילי","TRUE","السواحلية","السواحلية","السواحلية","FALSE","स्वाहिली","","स्वाहिली","FALSE","সোয়াহিলি","সোয়াহিলি","সোয়াহিলি","TRUE","ସ୍ଵାହିଲି","","ସ୍ଵାହିଲି","FALSE","","FALSE","Swahili","Bahasa Swahili","Bahasa Swahili","TRUE","суахили","","суахили","TRUE","斯瓦希里","","斯瓦希里","FALSE","Swahili","","Swahili","FALSE","Kiswahili","Kiswahili","Kiswahili","TRUE","ስዋሕሊ","","ስዋሕሊ","FALSE","Swahili","","Swahili","FALSE","Swahili.","Bahasa Swahili","Bahasa Swahili","TRUE","Swahili.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Swati/Swazi","siSwati","","ss","","","","","Swati / Swazilandia","","Swati / Swazilandia","FALSE","Swati / Swazi","Swati","Swati","TRUE","Swati / Swazi","","Swati / Swazi","FALSE","סוואטי / Swazi","","סוואטי / Swazi","FALSE","سواتي / سوازي","","سواتي / سوازي","FALSE","स्वाति / Swazi","","स्वाति / Swazi","FALSE","সোয়াতি / সোয়াজি","স্বাতী / সোয়াজি","স্বাতী / সোয়াজি","TRUE","Swati / Swazi","","Swati / Swazi","FALSE","","FALSE","Swati / Swazi","Bahasa Swati / Swazi","Bahasa Swati / Swazi","TRUE","Свати / свази","свази","свази","TRUE","斯瓦特/斯威士","","斯瓦特/斯威士","FALSE","Swati / Swazi","","Swati / Swazi","FALSE","Kiswati / Swazi","Kiswati/Kiswazi","Kiswati/Kiswazi","TRUE","ስዋቲኛ / ተከላክለዋል","","ስዋቲኛ / ተከላክለዋል","FALSE","Swati / Swazi","","Swati / Swazi","FALSE","SWATI / SWAZI.","Bahasa Swati/Swazi","Bahasa Swati/Swazi","TRUE","Swati / Swazi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Swedish","Svenska språk","","sv","","","","","sueco","","sueco","FALSE","sueco","Sueco","Sueco","TRUE","suédois","","suédois","FALSE","שוודית","","שוודית","FALSE","اللغة السويدية","","اللغة السويدية","FALSE","स्वीडिश","","स्वीडिश","FALSE","সুইডিশ","সুইডিশ","সুইডিশ","TRUE","ସ୍ୱେଡିସ୍","","ସ୍ୱେଡିସ୍","FALSE","","FALSE","Orang Swedia","Bahasa Swedia","Bahasa Swedia","TRUE","шведский","","шведский","TRUE","瑞典","","瑞典","FALSE","Yaren mutanen Sweden","","Yaren mutanen Sweden","FALSE","swedish","Kiswidi","Kiswidi","TRUE","ስዊድንኛ","ስዊድንኛ","ስዊድንኛ","TRUE","เกี่ยวกับสวีเดน","","เกี่ยวกับสวีเดน","FALSE","Sweden.","Bahasa Sweden","Bahasa Sweden","TRUE","Suweko","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tagalog","Wikang Tagalog","","tl","Keyboard_basic_kbdus","","","","Tagalo","tagalog","tagalog","TRUE","Tagalog","Tagalo","Tagalo","TRUE","Tagalog","Tagalog","Tagalog","TRUE","טגלוג","טאגאלוג","טאגאלוג","TRUE","التغالوغ","التاغالوغ/الفلبينية","التاغالوغ/الفلبينية","FALSE","तागालोग","","तागालोग","FALSE","তাগালোগ","টাগালোগ ","টাগালোগ ","TRUE","Tagalog","","Tagalog","FALSE","","FALSE","Tagalog","Bahasa Tagalog","Bahasa Tagalog","TRUE","тагальского","тагальский","тагальский","TRUE","他加禄语","","他加禄语","FALSE","Tagalog","","Tagalog","FALSE","Kitagalogi","Kitagalog","Kitagalog","TRUE","ታንጋሎግ","","ታንጋሎግ","FALSE","ตากาล็อก","","ตากาล็อก","FALSE","Tagalog.","Bahasa Tagalog","Bahasa Tagalog","TRUE","Tagalog","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tajik","Тоҷики","تاجيكى","tg","","","","","Tayiko","","Tayiko","FALSE","Tajik","Tajik","Tajik","TRUE","tadjik","","tadjik","FALSE","טג'יקית","","טג'יקית","FALSE","الطاجيكية","","الطاجيكية","FALSE","ताजिक","","ताजिक","FALSE","তাজিক","তাজিক","তাজিক","TRUE","ତାଜିକ୍","","ତାଜିକ୍","FALSE","","FALSE","Tajik","Bahasa Tajik","Bahasa Tajik","TRUE","таджикский","","таджикский","TRUE","塔吉克","","塔吉克","FALSE","Tajik","","Tajik","FALSE","Tajiki","Tajik","Tajik","TRUE","ታጂኪኛ","ታጂኪኛ","ታጂኪኛ","TRUE","ทาจิค","","ทาจิค","FALSE","Tajik","Bahasa Tajik","Bahasa Tajik","TRUE","Tajik.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tamazight","Tamaziɣt","","tzm","","","","","tamazight","","tamazight","FALSE","Tamazight","Amazigue","Amazigue","TRUE","tamazight","","tamazight","FALSE","טמאזיגט","","טמאזיגט","FALSE","الأمازيغية","","الأمازيغية","FALSE","तमाज़ित","","तमाज़ित","FALSE","তামাজিঘত্","তামাজি ","তামাজি ","TRUE","ତାମାଜିଘାଟ୍","","ତାମାଜିଘାଟ୍","FALSE","","FALSE","Tamazight","Bahasa Tamazight","Bahasa Tamazight","TRUE","Tamazight","тамазигхтский","тамазигхтский","TRUE","柏柏尔语","","柏柏尔语","FALSE","Tamazight","","Tamazight","FALSE","Tamazight","Tamazight","Tamazight","TRUE","Tamazight","","Tamazight","FALSE","Tamazight","","Tamazight","FALSE","Tamazight.","Bahasa Barbar","Bahasa Barbar","TRUE","Tamazight.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tamil","தமிழ்","","ta","Keyboard_tamil","true","","","Tamil","tamil","tamil","TRUE","tâmil","Tâmil","Tâmil","TRUE","Tamil","Tamil","Tamil","TRUE","טמילית","","טמילית","TRUE","التاميل","التاميلية","التاميلية","FALSE","तामिल","","तामिल","FALSE","তামিল","তামিল","তামিল","TRUE","ତାମିଲ୍","","ତାମିଲ୍","FALSE","","FALSE","Tamil","Bahasa Tamil","Bahasa Tamil","TRUE","тамильский","","тамильский","TRUE","泰米尔人","","泰米尔人","FALSE","Tamil","","Tamil","FALSE","Tamil","Kitamil","Kitamil","TRUE","ታሚል","","ታሚል","FALSE","ทมิฬ","","ทมิฬ","FALSE","Tamil.","Bahasa Tamil","Bahasa Tamil","TRUE","Tamil.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tausug","bahasa Sūg","","tsg","","","","","Tausug","","Tausug","FALSE","Tausug","Tausug","Tausug","TRUE","tausug","","tausug","FALSE","Tausug","","Tausug","FALSE","Tausug","","Tausug","FALSE","Tausug","","Tausug","FALSE","Tausug,","তাউসুগ","তাউসুগ","TRUE","Tausug","","Tausug","FALSE","","FALSE","Tausug","Bahasa Tausug","Bahasa Tausug","TRUE","Tausug","таусуг","таусуг","TRUE","Tausug","","Tausug","FALSE","Tausug","","Tausug","FALSE","Tausug","Tausug","Tausug","TRUE","Tausug","","Tausug","FALSE","tausug","","tausug","FALSE","Tausug.","Bahasa Tausug","Bahasa Tausug","TRUE","Tausug","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Telugu","తెలుగు","","te","Keyboard_telugu","true","","","telugu","telugu","telugu","TRUE","Telugu","Telugo","Telugo","TRUE","telugu","Telugu","Telugu","TRUE","טלוגו","","טלוגו","TRUE","التيلجو","التيلوغوية","التيلوغوية","FALSE","तेलुगू","","तेलुगू","FALSE","তেলুগু","তেলেগু","তেলেগু","TRUE","ତେଲୁଗୁ","","ତେଲୁଗୁ","FALSE","","FALSE","Telugu","Bahasa Telugu","Bahasa Telugu","TRUE","телугу","","телугу","TRUE","泰卢固语","","泰卢固语","FALSE","Telugu","","Telugu","FALSE","telugu","Kitelugu","Kitelugu","TRUE","ተሉጉ","","ተሉጉ","FALSE","เตลูกู","","เตลูกู","FALSE","Telugu.","Bahasa Telugu","Bahasa Telugu","TRUE","Telugu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Temne","KʌThemnɛ","","tem","","","","","temne","","temne","FALSE","temne","Temne","Temne","TRUE","Temne","","Temne","FALSE","טמנתי","","טמנתי","FALSE","Temne","","Temne","FALSE","Temne","","Temne","FALSE","টিমেন","টেমনে","টেমনে","TRUE","Temne","","Temne","FALSE","","FALSE","Temne","Bahasa Temne","Bahasa Temne","TRUE","темне","","темне","TRUE","Temne","","Temne","FALSE","Temne","","Temne","FALSE","Kitemne","Temne","Temne","TRUE","Temne","","Temne","FALSE","เทมน์","","เทมน์","FALSE","Temne.","Bahasa Temne","Bahasa Temne","TRUE","Tember.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ternate","","","tft","","","","","Ternate","","Ternate","FALSE","Ternate","Ternate","Ternate","TRUE","Ternate","","Ternate","FALSE","טרנאטה","","טרנאטה","FALSE","تيرنيت","","تيرنيت","FALSE","तेरनाते","","तेरनाते","FALSE","Ternate,","টার্নেট","টার্নেট","TRUE","Ternate","","Ternate","FALSE","","FALSE","Ternate","Bahasa Ternate","Bahasa Ternate","TRUE","Ternate","тернате-тедоре","тернате-тедоре","TRUE","特尔纳特","","特尔纳特","FALSE","Ternate","","Ternate","FALSE","Ternate","Ternate-Tidore","Ternate-Tidore","TRUE","Ternate","","Ternate","FALSE","ternate","","ternate","FALSE","Ternate.","Bahasa Ternate","Bahasa Ternate","TRUE","Ternate","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tetum / Fehan Tetun","Lia-Tetun","","tet","","","","","Tetum / Fehan tetun","","Tetum / Fehan tetun","FALSE","Tetum / Fehan tétum","Tétum","Tétum","TRUE","Tetum / Fehan Tetun","","Tetum / Fehan Tetun","FALSE","Tetum / Fehan Tetun","","Tetum / Fehan Tetun","FALSE","التيتم / Fehan التيتون","","التيتم / Fehan التيتون","FALSE","तेतुम / Fehan Tetun","","तेतुम / Fehan Tetun","FALSE","তেতুম / Fehan Tetun","টেটুম / ফেহান টেটুম ","টেটুম / ফেহান টেটুম ","TRUE","Tetum / Fehan Tetun","","Tetum / Fehan Tetun","FALSE","","FALSE","Tetum / Fehan Tetun","Bahasa Tetum / Fehan Tetun","Bahasa Tetum / Fehan Tetun","TRUE","Тетум / Fehan тетун","тетум","тетум","TRUE","德顿语/ Fehan德顿语","","德顿语/ Fehan德顿语","FALSE","Tetum / Fehan Tetun","","Tetum / Fehan Tetun","FALSE","Kitetum / Fehan Tetun","Tetum / Fehan Tetun","Tetum / Fehan Tetun","TRUE","ቴቱም / Fehan Tetun","","ቴቱም / Fehan Tetun","FALSE","tetum / fehan tetun","","tetum / fehan tetun","FALSE","Tetum / Fehan Tetun","Bahasa Tetum","Bahasa Tetum","TRUE","Tetum / Fehan Tetun.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Thai","ภาษาไทย","Phasa Thai","th","Keyboard_thai_kedmanee","true","","","tailandés","tailandia","tailandia","TRUE","tailandês","Tailandês ","Tailandês ","TRUE","thaïlandais","Thaï","Thaï","TRUE","תאילנדי","תאית","תאית","TRUE","التايلاندية","التايلندية","التايلندية","FALSE","थाई","","थाई","FALSE","থাই","থাই","থাই","TRUE","ଥାଇ","","ଥାଇ","FALSE","","FALSE","Thai","Bahasa Thai","Bahasa Thai","TRUE","тайский","","тайский","TRUE","泰国","","泰国","FALSE","Thai","","Thai","FALSE","thai","Kithai","Kithai","TRUE","ታይ","","ታይ","FALSE","ไทย","","ไทย","FALSE","Thai.","Bahasa Thai","Bahasa Thai","TRUE","Thai","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tibetan","ལྷ་སའི་སྐད་","བོད་སྐད","bo","Keyboard_basic_kbdtiprd","true","bo-Tibt-CN","","tibetano","tibetano","tibetano","TRUE","tibetano","Tibetano","Tibetano","TRUE","Tibétain","Tibétain","Tibétain","TRUE","טיבטי","טיבטית","טיבטית","TRUE","التبت","التبتية","التبتية","FALSE","तिब्बती","","तिब्बती","FALSE","তিব্বতি","তিব্বতী","তিব্বতী","TRUE","ତିବେତାନ୍","","ତିବେତାନ୍","FALSE","","FALSE","Tibet","Bahasa Tibet","Bahasa Tibet","TRUE","тибетский","","тибетский","TRUE","藏","","藏","FALSE","Tibet","","Tibet","FALSE","Kitibeti","Kitibeti","Kitibeti","TRUE","ትቤታን","","ትቤታን","FALSE","ชาวทิเบต","","ชาวทิเบต","FALSE","Tibetan","Bahasa Tibet","Bahasa Tibet","TRUE","Tibetan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tidore","","","tvo","","","","","Tidore","","Tidore","FALSE","Tidore","Tidore","Tidore","TRUE","Tidore","","Tidore","FALSE","טידורה","","טידורה","FALSE","Tidore","","Tidore","FALSE","Tidore","","Tidore","FALSE","Tidore","টিডোর ","টিডোর ","TRUE","Tidore","","Tidore","FALSE","","FALSE","Tidore","Bahasa Tidore","Bahasa Tidore","TRUE","Tidore","туканг-беси","туканг-беси","TRUE","蒂多雷","","蒂多雷","FALSE","Tidore","","Tidore","FALSE","Tidore","Tukang Besi","Tukang Besi","TRUE","Tidore","","Tidore","FALSE","tidore","","tidore","FALSE","Tidore.","Bahasa Tidore","Bahasa Tidore","TRUE","Tidore.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tigre","ትግረ / ትግሬ","ኻሳ","tig","","","","","Tigre","","Tigre","FALSE","Tigre","Tigré","Tigré","TRUE","Tigre","","Tigre","FALSE","טיגרה","","טיגרה","FALSE","تيغري","","تيغري","FALSE","टाइग्रे","","टाइग्रे","FALSE","টাইগ্রে","টিগ্র ","টিগ্র ","TRUE","Tigre ରେ","","Tigre ରେ","FALSE","","FALSE","Tigre","Bahasa Tigre","Bahasa Tigre","TRUE","Тигре","тигре","тигре","TRUE","蒂格雷","","蒂格雷","FALSE","Tigre","","Tigre","FALSE","Tigre","Tigre","Tigre","TRUE","ትግሬ","","ትግሬ","FALSE","tigre","","tigre","FALSE","Tigre.","Bahasa Tigre","Bahasa Tigre","TRUE","Tigre.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tigrinya","ትግርኛ","","ti","","","","","tigriño","","tigriño","FALSE","Tigrinya","Tigrínia","Tigrínia","TRUE","tigrinya","","tigrinya","FALSE","בטיג'רינית","","בטיג'רינית","FALSE","التيغرينية","","التيغرينية","FALSE","तिग्रीन्या","","तिग्रीन्या","FALSE","তিগরিনিয়া","টিগ্রিনিয়া ","টিগ্রিনিয়া ","TRUE","ଟିଗ୍ରିନିୟା","","ଟିଗ୍ରିନିୟା","FALSE","","FALSE","Tigrinya","Bahasa Tigrinya","Bahasa Tigrinya","TRUE","тигринья","","тигринья","TRUE","提格雷语","","提格雷语","FALSE","Tigriyanci","","Tigriyanci","FALSE","Kitigrinya","Kitigrinya","Kitigrinya","TRUE","ትግርኛ","ትግርኛ","ትግርኛ","TRUE","tigrinya","","tigrinya","FALSE","Tigrinya.","Bahasa Tigrinya","Bahasa Tigrinya","TRUE","Tigrinya","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tiv","dzwa Tiv","","tiv","","","","","TIV","","TIV","FALSE","tiv","Tive","Tive","TRUE","Tiv","","Tiv","FALSE","טיב","","טיב","FALSE","التيف","","التيف","FALSE","तिव","","तिव","FALSE","টিভ","টিভ","টিভ","TRUE","TIV","","TIV","FALSE","","FALSE","tiv","Bahasa Tiv","Bahasa Tiv","TRUE","Tiv","тив","тив","TRUE","蒂夫","","蒂夫","FALSE","Tiv","","Tiv","FALSE","Tiv","Tiv","Tiv","TRUE","Tiv","","Tiv","FALSE","tiv","","tiv","FALSE","Tiv.","Bahasa Tiv","Bahasa Tiv","TRUE","Tiv.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tok Pisin","Pijin","","tpi","Keyboard_european","","","","tok pisin","tok pisin","tok pisin","TRUE","Tok pisin","Tok Pisin","Tok Pisin","TRUE","Tok pisin","Tok Pisin","Tok Pisin","TRUE","טוק פיסין","","טוק פיסין","TRUE","التوك بيسين","التوك بيسين","التوك بيسين","FALSE","टोक पिसिन","","टोक पिसिन","FALSE","টোক পিসিন","টোক পিসিন","টোক পিসিন","TRUE","Tok ପାଇଁ Pisin","","Tok ପାଇଁ Pisin","FALSE","","FALSE","Tok Pisin","Bahasa Tok Pisin","Bahasa Tok Pisin","TRUE","Ток-писин","ток-писин","ток-писин","TRUE","皮钦语","","皮钦语","FALSE","Tok Pisin","","Tok Pisin","FALSE","Kitokpisin","Kitokpisin","Kitokpisin","TRUE","ቶክ ፒሰን","","ቶክ ፒሰን","FALSE","Tok Pisin","","Tok Pisin","FALSE","Tok Pisin.","Bahasa Tok Pisin","Bahasa Tok Pisin","TRUE","Tok Pisin.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tonga","Chitonga","","toi","","","","","Tonga","","Tonga","FALSE","Tonga","Tonga","Tonga","TRUE","Tonga","","Tonga","FALSE","טונגה","","טונגה","FALSE","تونغا","","تونغا","FALSE","टोंगा","","टोंगा","FALSE","টাঙ্গা","টঙ্গা","টঙ্গা","TRUE","ଟୋଙ୍ଗା","","ଟୋଙ୍ଗା","FALSE","","FALSE","Tonga","Bahasa Tonga","Bahasa Tonga","TRUE","Тонга","тонга","тонга","TRUE","汤加","","汤加","FALSE","Tonga","","Tonga","FALSE","Tonga","Tonga","Tonga","TRUE","ቶንጋ","","ቶንጋ","FALSE","ตองกา","","ตองกา","FALSE","Tonga.","Bahasa Chitonga","Bahasa Chitonga","TRUE","Tonga.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tongan","Lea Fakatonga","","ton","","","","","Tonga","","Tonga","FALSE","tonganês","Tonganês","Tonganês","TRUE","tongien","","tongien","FALSE","טונגן","","טונגן","FALSE","تونجا","","تونجا","FALSE","टोंगन","","टोंगन","FALSE","টোঙ্গান","টঙ্গান","টঙ্গান","TRUE","Tongan","","Tongan","FALSE","","FALSE","Tonga","Bahasa Tonga","Bahasa Tonga","TRUE","Тонги","тонганский","тонганский","TRUE","同安区","","同安区","FALSE","Tongan","","Tongan","FALSE","Tonga","Tongan","Tongan","TRUE","ቶንጋኛ","","ቶንጋኛ","FALSE","ตองกา","","ตองกา","FALSE","Tongan","Bahasa Tonga","Bahasa Tonga","TRUE","Tongan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Torres Strait Creole","Yumplatok","","tcs","","","","","Estrecho de Torres criolla","","Estrecho de Torres criolla","FALSE","Crioulo do Estreito de Torres","","Crioulo do Estreito de Torres","TRUE","Détroit de Torres Créole","","Détroit de Torres Créole","FALSE","טורס סטרייט קריאולי","","טורס סטרייט קריאולי","FALSE","مضيق توريس الكريول","","مضيق توريس الكريول","FALSE","टोरेस स्ट्रेट क्रियोल","","टोरेस स्ट्रेट क्रियोल","FALSE","Torres Strait Creole,","টরেস স্ট্রেইট ক্রিওল","টরেস স্ট্রেইট ক্রিওল","TRUE","Torres ପ୍ରଣାଳୀ Creole","","Torres ପ୍ରଣାଳୀ Creole","FALSE","","FALSE","Torres Strait Creole","Bahasa Kreol Selat Torres","Bahasa Kreol Selat Torres","TRUE","Пролива Торреса креольский","креольский язык Торресова пролива","креольский язык Торресова пролива","TRUE","托雷斯海峡克里奥尔语","","托雷斯海峡克里奥尔语","FALSE","Torres mashigar Creole","","Torres mashigar Creole","FALSE","Torres Strait Creole","Kikreoli cha Torres Strait ","Kikreoli cha Torres Strait ","TRUE","የቶረስ ስትሬት ክሪኦል","","የቶረስ ስትሬት ክሪኦል","FALSE","Torres ช่องแคบครีโอล","","Torres ช่องแคบครีโอล","FALSE","Torres Strait Creole.","Bahasa Kreol Selat Torres","Bahasa Kreol Selat Torres","TRUE","Torres Strait Creole.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tshiluba","Luba-Kasai","Luba-Lulua","lua","","","","","tshiluba","","tshiluba","FALSE","tshiluba","Tshiluba","Tshiluba","TRUE","Tshiluba","","Tshiluba","FALSE","צ'ילובה","","צ'ילובה","FALSE","التشيلوبا","","التشيلوبا","FALSE","शिलूबा","","शिलूबा","FALSE","শিলুবা","শিলুবা","শিলুবা","TRUE","Tshiluba","","Tshiluba","FALSE","","FALSE","Tshiluba","Bahasa Tshiluba","Bahasa Tshiluba","TRUE","Tshiluba","чилуба","чилуба","TRUE","施鲁巴","","施鲁巴","FALSE","Harshen Tshiluba","","Harshen Tshiluba","FALSE","Tshiluba","Tshiluba","Tshiluba","TRUE","ጽሂሉባ","","ጽሂሉባ","FALSE","tshiluba","","tshiluba","FALSE","Tshiluba.","Bahasa Tshiluba","Bahasa Tshiluba","TRUE","Tshiluba.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tsonga","Xitsonga","","ts","","","","","Tsonga","","Tsonga","FALSE","Tsonga","Tsonga","Tsonga","TRUE","Tsonga","","Tsonga","FALSE","טסונגה","","טסונגה","FALSE","تسونجا","","تسونجا","FALSE","सोंगा","","सोंगा","FALSE","সঙ্গা","সঙ্গা","সঙ্গা","TRUE","Tsonga","","Tsonga","FALSE","","FALSE","Tsonga","Bahasa Tsonga","Bahasa Tsonga","TRUE","Тсонга","шангаан","шангаан","TRUE","特松加","","特松加","FALSE","tsonga","","tsonga","FALSE","Kitsonga","Kitsonga","Kitsonga","TRUE","ጾንጋ","","ጾንጋ","FALSE","ซองก้า","","ซองก้า","FALSE","Tsonga.","Bahasa Tsonga","Bahasa Tsonga","TRUE","Tsonga.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tswana","Setswana","","tn","","","","","tsuana","","tsuana","FALSE","Tswana","Tswana","Tswana","TRUE","Tswana","","Tswana","FALSE","צוואנה","","צוואנה","FALSE","التسوانية","","التسوانية","FALSE","सेत्स्वाना","","सेत्स्वाना","FALSE","সোয়ানা","স্বানা ","স্বানা ","TRUE","Tswana","","Tswana","FALSE","","FALSE","Tswana","Bahasa Tswana","Bahasa Tswana","TRUE","Tswana","тсвана","тсвана","TRUE","茨瓦纳语","","茨瓦纳语","FALSE","Tswana","","Tswana","FALSE","Kitswana","Kitswana","Kitswana","TRUE","ጢስዋናኛ","","ጢስዋናኛ","FALSE","วนานา","","วนานา","FALSE","Tswana.","Bahasa Tswana","Bahasa Tswana","TRUE","Tswana","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tucano","Dahseyé","","tuo","","","","","Tucano","","Tucano","FALSE","Tucano","Tucano","Tucano","TRUE","Tucano","","Tucano","FALSE","Tucano","","Tucano","FALSE","توكانو","","توكانو","FALSE","Tucano","","Tucano","FALSE","Tucano,","টকানো ","টকানো ","TRUE","Tucano","","Tucano","FALSE","","FALSE","Tucano","Bahasa Tucano","Bahasa Tucano","TRUE","Tucano","тукано","тукано","TRUE","巨嘴鸟","","巨嘴鸟","FALSE","Tucano","","Tucano","FALSE","Tucano","Tucano","Tucano","TRUE","Tucano","","Tucano","FALSE","tucano","","tucano","FALSE","Tucano.","Bahasa Tucano","Bahasa Tucano","TRUE","Tucano.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Turkish","Türkçe","","tr","","","","","turco","","turco","FALSE","turco","Turco","Turco","TRUE","turc","","turc","FALSE","טורקי","","טורקי","FALSE","اللغة التركية","","اللغة التركية","FALSE","तुर्की","","तुर्की","FALSE","তুর্কী","তুর্কী","তুর্কী","TRUE","ତୁର୍କିସ୍","","ତୁର୍କିସ୍","FALSE","","FALSE","Turki","Bahasa Turki","Bahasa Turki","TRUE","турецкий","","турецкий","TRUE","土耳其","","土耳其","FALSE","Turkish","","Turkish","FALSE","Kituruki","Kituruki","Kituruki","TRUE","ቱሪክሽ","","ቱሪክሽ","FALSE","ตุรกี","","ตุรกี","FALSE","Turki.","Bahasa Turki","Bahasa Turki","TRUE","Turkish","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Turkmen","Түркмен дили","","tk","","","","","turkmen","","turkmen","FALSE","Turkmen","Turkmen","Turkmen","TRUE","turkmène","","turkmène","FALSE","Turkmen","","Turkmen","FALSE","التركمان","","التركمان","FALSE","तुक्रमेन","","तुक्रमेन","FALSE","তুর্কমেনী","তুর্কমেন","তুর্কমেন","TRUE","Turkmen","","Turkmen","FALSE","","FALSE","Turkmen","Bahasa Turkmen","Bahasa Turkmen","TRUE","туркменский","","туркменский","TRUE","土库曼","","土库曼","FALSE","Harshen Turkmen","","Harshen Turkmen","FALSE","Turkmen","Turkmen","Turkmen","TRUE","ቱሪክሜን","","ቱሪክሜን","FALSE","ชาวเติร์กเมิน","","ชาวเติร์กเมิน","FALSE","Turkmen.","Bahasa Turkmen","Bahasa Turkmen","TRUE","Turkmen.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tuvaluan","Te 'gana Tūvalu","","tvl","","","","","tuvaluano","","tuvaluano","FALSE","Tuvaluan","Tuvaluana","Tuvaluana","TRUE","tuvaluan","","tuvaluan","FALSE","Tuvaluan","","Tuvaluan","FALSE","التوفالية","","التوفالية","FALSE","Tuvaluan","","Tuvaluan","FALSE","Tuvaluan","টুভালুয়ান","টুভালুয়ান","TRUE","Tuvaluan","","Tuvaluan","FALSE","","FALSE","Tuvalu","Bahasa Tuvalu","Bahasa Tuvalu","TRUE","Тувалу","тувалу","тувалу","TRUE","图瓦卢","","图瓦卢","FALSE","Tuvaluan","","Tuvaluan","FALSE","Tuvaluan","Tuvalu","Tuvalu","TRUE","ቱቫሉ","","ቱቫሉ","FALSE","ตุ่ม","","ตุ่ม","FALSE","Tuvaluuan","Bahasa Tuvalu","Bahasa Tuvalu","TRUE","Tuvaluan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Twi","","","tw","","","","","Twi","","Twi","FALSE","Twi","Twi","Twi","TRUE","Twi","","Twi","FALSE","טווי","","טווי","FALSE","التوي","","التوي","FALSE","ट्वी","","ट्वी","FALSE","টোয়াই","টুই ","টুই ","TRUE","ତ୍ଵିଇ","","ତ୍ଵିଇ","FALSE","","FALSE","Twi","Bahasa Twi","Bahasa Twi","TRUE","Twi","чви","чви","TRUE","TWI","","TWI","FALSE","Twi","","Twi","FALSE","Twi","Twi","Twi","TRUE","ትዊኛ","","ትዊኛ","FALSE","twi","","twi","FALSE","Twi.","Bahasa Twi","Bahasa Twi","TRUE","Twi.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ukrainian","Українська мова","","uk","","","","","ucranio","","ucranio","FALSE","ucraniano","Ucraniano","Ucraniano","TRUE","ukrainien","","ukrainien","FALSE","אוקראיני","","אוקראיני","FALSE","الأوكراني","","الأوكراني","FALSE","यूक्रेनी","","यूक्रेनी","FALSE","ইউক্রেনীয়","ইউক্রেনীয়","ইউক্রেনীয়","TRUE","Ukrainian","","Ukrainian","FALSE","","FALSE","Orang Ukraina","Bahasa Ukraina","Bahasa Ukraina","TRUE","украинец","украинский","украинский","TRUE","乌克兰","","乌克兰","FALSE","Ukrainian","","Ukrainian","FALSE","Kiukreni","Kiukreni","Kiukreni","TRUE","ዩክሬንያን","","ዩክሬንያን","FALSE","ยูเครน","","ยูเครน","FALSE","Bahasa Ukrain.","Bahasa Ukraine","Bahasa Ukraine","TRUE","Ukrainian","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Umbundu","","","umb","","","","","umbundu","","umbundu","FALSE","Umbundu","Umbundu","Umbundu","TRUE","umbundu","","umbundu","FALSE","אומבונדו","","אומבונדו","FALSE","أومبوندو","","أومبوندو","FALSE","उम्बुन्डु","","उम्बुन्डु","FALSE","উম্বুন্দু","উম্বুন্দু","উম্বুন্দু","TRUE","Umbundu","","Umbundu","FALSE","","FALSE","Umbundu","Bahasa Umbundu","Bahasa Umbundu","TRUE","умбунду","","умбунду","TRUE","姆班杜语","","姆班杜语","FALSE","Umbundu","","Umbundu","FALSE","Kiumbundu","Umbundu","Umbundu","TRUE","Umbundu","","Umbundu","FALSE","umbundu","","umbundu","FALSE","Umbundu.","Bahasa Umbundu","Bahasa Umbundu","TRUE","Umbundu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Urdu","اُردُو","","ur","Keyboard_kbdurdu","true","","","Urdu","urdu","urdu","TRUE","urdu","Urdu","Urdu","TRUE","ourdou","Urdu","Urdu","TRUE","אורדו","","אורדו","TRUE","الأردية","الأردية","الأردية","FALSE","उर्दू","","उर्दू","FALSE","উর্দু","উর্দু","উর্দু","TRUE","ଉର୍ଦ୍ଦୁ","","ଉର୍ଦ୍ଦୁ","FALSE","","FALSE","Urdu","Bahasa Urdu","Bahasa Urdu","TRUE","урду","","урду","TRUE","乌尔都语","","乌尔都语","FALSE","Urdu","","Urdu","FALSE","Urdu","Kiurdu","Kiurdu","TRUE","ኡርዱ","","ኡርዱ","FALSE","ภาษาอูรดู","","ภาษาอูรดู","FALSE","Urdu.","Bahasa Urdu","Bahasa Urdu","TRUE","Urdu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Uyghur","ئۇيغۇرچە ","Уйғурчә / Uyghurche","ug","","","","","uyghur","","uyghur","FALSE","Uyghur","Uigur","Uigur","TRUE","ouïghour","","ouïghour","FALSE","אויגורים","","אויגורים","FALSE","الأويغور","","الأويغور","FALSE","उईघुर","","उईघुर","FALSE","উইগুর","উঘর ","উঘর ","TRUE","Uyghur","","Uyghur","FALSE","","FALSE","Uyghur","Bahasa Uyghur","Bahasa Uyghur","TRUE","Уйгурский","уйгурский","уйгурский","TRUE","维吾尔","","维吾尔","FALSE","Ugiranci","","Ugiranci","FALSE","Kiuiguri","Uyghur","Uyghur","TRUE","ኡይግሁር","","ኡይግሁር","FALSE","ชาวยิว","","ชาวยิว","FALSE","Uyghur.","Bahasa Uyghur","Bahasa Uyghur","TRUE","Uyghur.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Uzbek","O'zbek tili","","uzb","","","","","uzbeko","","uzbeko","FALSE","Uzbek","Uzbeka","Uzbeka","TRUE","ouzbek","","ouzbek","FALSE","אוזבקי","","אוזבקי","FALSE","الأوزبكي","","الأوزبكي","FALSE","उज़बेक","","उज़बेक","FALSE","উজবেকীয়","উজবেক","উজবেক","TRUE","Uzbek","","Uzbek","FALSE","","FALSE","Uzbek","Bahasa Uzbek","Bahasa Uzbek","TRUE","узбек","узбекский","узбекский","TRUE","乌兹别克","","乌兹别克","FALSE","Uzbek","","Uzbek","FALSE","Kiuzbeki","Kiuzbeki","Kiuzbeki","TRUE","ኡዝቤክ","","ኡዝቤክ","FALSE","อุซเบก","","อุซเบก","FALSE","Uzbekistan","Bahasa Uzbek","Bahasa Uzbek","TRUE","Uzbek","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Venda","Tshivenda","","ven","","","","","Venda","","Venda","FALSE","Venda","Venda","Venda","TRUE","Venda","","Venda","FALSE","וונדה","","וונדה","FALSE","فندا","","فندا","FALSE","वेन्दा","","वेन्दा","FALSE","ভেন্ডা","ভেন্ডা","ভেন্ডা","TRUE","Venda","","Venda","FALSE","","FALSE","Venda","Bahasa Venda","Bahasa Venda","TRUE","Венда","венда","венда","TRUE","文达","","文达","FALSE","Turanci","","Turanci","FALSE","Kivenda","Kivenda","Kivenda","TRUE","Venda","","Venda","FALSE","ขาย","","ขาย","FALSE","Venda","Bahasa Venda","Bahasa Venda","TRUE","Venda.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Vietnamese","tiếng Việt","","vi","Keyboard_vietnamese","true","","","vietnamita","vietnamita","vietnamita","TRUE","vietnamita","Vietnamita","Vietnamita","TRUE","vietnamien","Vietnamien","Vietnamien","TRUE","ויאטנמית","וייטנאמית","וייטנאמית","TRUE","الفيتنامية","الفيتنامية","الفيتنامية","FALSE","वियतनामी","","वियतनामी","FALSE","ভিয়েতনামী","ভিয়েতনামী","ভিয়েতনামী","TRUE","ଭିଏତନାମିଜ୍","","ଭିଏତନାମିଜ୍","FALSE","","FALSE","Orang Vietnam","Bahasa Vietnam","Bahasa Vietnam","TRUE","вьетнамский","","вьетнамский","TRUE","越南","","越南","FALSE","K'abilan Biyetnam","","K'abilan Biyetnam","FALSE","Kivietinamu","Kivietinamu","Kivietinamu","TRUE","ቪትናሜሴ","","ቪትናሜሴ","FALSE","ชาวเวียดนาม","","ชาวเวียดนาม","FALSE","Vietnam.","Bahasa Vietnam","Bahasa Vietnam","TRUE","Vietnamese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Waray","Waray Waray","","war","","","","","waray","","waray","FALSE","Waray","Waray","Waray","TRUE","Waray","","Waray","FALSE","Waray","","Waray","FALSE","الواراي","","الواراي","FALSE","वारै","","वारै","FALSE","ওয়ারে","ওরে ","ওরে ","TRUE","Waray","","Waray","FALSE","","FALSE","Waray","Bahasa Waray","Bahasa Waray","TRUE","Waray","варайский","варайский","TRUE","瓦赖文","","瓦赖文","FALSE","waray","","waray","FALSE","Waray","Waray","Waray","TRUE","Waray","","Waray","FALSE","วารี","","วารี","FALSE","Waray.","Bahasa Waray","Bahasa Waray","TRUE","Waray.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Welsh","Cymraeg","","cym","","","","","galés","","galés","FALSE","galês","Welsh","Welsh","TRUE","gallois","","gallois","FALSE","וולשית","","וולשית","FALSE","تهرب من دفع الرهان","","تهرب من دفع الرهان","FALSE","वेल्श","","वेल्श","FALSE","ওয়েলশ","ওয়েলশ","ওয়েলশ","TRUE","Welsh","","Welsh","FALSE","","FALSE","Welsh","Bahasa Welsh","Bahasa Welsh","TRUE","валлийский","","валлийский","TRUE","威尔士语","","威尔士语","FALSE","Welsh","","Welsh","FALSE","welsh","Kiwelish","Kiwelish","TRUE","ዋልሽ","","ዋልሽ","FALSE","ชาวเวลส์","","ชาวเวลส์","FALSE","Welsh.","Bahasa Wales","Bahasa Wales","TRUE","Welsh.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Wolio (Butonese)","","","wlo","","","","","Wolio (Butonese)","","Wolio (Butonese)","FALSE","Wolio (Butonese)","Wolio","Wolio","TRUE","Wolio (Buton)","","Wolio (Buton)","FALSE","Wolio (Butonese)","","Wolio (Butonese)","FALSE","Wolio (Butonese)","","Wolio (Butonese)","FALSE","Wolio (Butonese)","","Wolio (Butonese)","FALSE","Wolio, (Butonese)","ওলিও (বাটোনিস)","ওলিও (বাটোনিস)","TRUE","Wolio (Butonese)","","Wolio (Butonese)","FALSE","","FALSE","Wolio (Buton)","Bahasa Wolio (Buton)","Bahasa Wolio (Buton)","TRUE","Wolio (Butonese)","волио","волио","TRUE","Wolio(Butonese)","","Wolio(Butonese)","FALSE","Wolio (Butonese)","","Wolio (Butonese)","FALSE","Wolio (Butonese)","Wolio (Butonese)","Wolio (Butonese)","TRUE","Wolio (Butonese)","","Wolio (Butonese)","FALSE","Wolio (Butonese)","","Wolio (Butonese)","FALSE","Wolio (Butonese)","Bahasa Wolio","Bahasa Wolio","TRUE","Wolio (Butonese)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Wolof","Wollof","","wo","","","","","wolof","","wolof","FALSE","Wolof","Wolof","Wolof","TRUE","Wolof","","Wolof","FALSE","ג'ולוף","","ג'ולוף","FALSE","الولوف","","الولوف","FALSE","वोलोफ","","वोलोफ","FALSE","উওলোফ","উওলফ","উওলফ","TRUE","ଔଲୋଫ","","ଔଲୋଫ","FALSE","","FALSE","Wolof","Bahasa Wolof","Bahasa Wolof","TRUE","Волоф","волоф","волоф","TRUE","沃洛夫语","","沃洛夫语","FALSE","Wolof","","Wolof","FALSE","wolof","Kiwolof","Kiwolof","TRUE","ዎሎፍ","","ዎሎፍ","FALSE","wolof","","wolof","FALSE","Wolof.","Bahasa Wolof","Bahasa Wolof","TRUE","Wolof.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Wu","吴语","","wuu","Keyboard_chinese","true","cmn","","Wu","wu","wu","TRUE","Wu","Wu","Wu","TRUE","Wu","Wu","Wu","TRUE","וו","ווּ","ווּ","TRUE","وو","الوو","الوو","FALSE","वू","","वू","FALSE","উ","উ","উ","TRUE","Wu","","Wu","FALSE","","FALSE","Wu","Bahasa Wu","Bahasa Wu","TRUE","В","у","у","TRUE","吴","","吴","FALSE","Wu","","Wu","FALSE","Wu","Kiwu","Kiwu","TRUE","Wu","","Wu","FALSE","วู","","วู","FALSE","Wu.","Bahasa Wu","Bahasa Wu","TRUE","Wu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Xhosa","IsiXhosa","","xho","","","","","Xhosa","","Xhosa","FALSE","Xhosa","Xhosa","Xhosa","TRUE","Xhosa","","Xhosa","FALSE","קוסה","","קוסה","FALSE","زوسا","","زوسا","FALSE","षोसा","","षोसा","FALSE","জোসা","কোজা ","কোজা ","TRUE","ଯୋସା","","ଯୋସା","FALSE","","FALSE","Xhosa","Bahasa Xhosa","Bahasa Xhosa","TRUE","Кос","коса","коса","TRUE","科萨","","科萨","FALSE","Xhosa","","Xhosa","FALSE","Kixhosa","Kixhosa","Kixhosa","TRUE","ዛይሆሳ","","ዛይሆሳ","FALSE","xhosa","","xhosa","FALSE","Xhosa.","Bahasa Xhosa","Bahasa Xhosa","TRUE","Xhosa.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Yabem (Jabêm)","Jabêm","","jae","","","","","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","Yabem (Jabêm)","Yabem ","Yabem ","TRUE","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","Yabem, (Jabêm)","ইয়াবেম (জাবম)","ইয়াবেম (জাবম)","TRUE","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","","FALSE","Yabem (Jabêm)","Bahasa Yabem (Jabêm)","Bahasa Yabem (Jabêm)","TRUE","Yabem (Jabêm)","ябем","ябем","TRUE","Yabem(Jabêm)","","Yabem(Jabêm)","FALSE","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","Yabem (Jabêm)","Yabem (Jabêm)","Yabem (Jabêm)","TRUE","Yabem (Jabêm)","","Yabem (Jabêm)","FALSE","yabem (jabêm)","","yabem (jabêm)","FALSE","Yabem (Jabêm)","Bahasa Yabem (Jabêm)","Bahasa Yabem (Jabêm)","TRUE","Yabem (jabêm)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Yakan","Bissa Yakan","","yka","","","","","yakan","","yakan","FALSE","Yakan","Yakan","Yakan","TRUE","Yakan","","Yakan","FALSE","Yakan","","Yakan","FALSE","يكن","","يكن","FALSE","Yakan","","Yakan","FALSE","Yakan,","ইয়াকান","ইয়াকান","TRUE","Yakan","","Yakan","FALSE","","FALSE","Yakan","Bahasa Yakan","Bahasa Yakan","TRUE","Yakan","якан","якан","TRUE","亚坎","","亚坎","FALSE","Jakan","","Jakan","FALSE","Yakan","Yakan","Yakan","TRUE","Yakan","","Yakan","FALSE","Yakan","","Yakan","FALSE","Yakan.","Bahasa Yakan","Bahasa Yakan","TRUE","Yakan.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Yakut","саха тыла","","sah","","","","","yakut","","yakut","FALSE","Yakut","Iacuto","Iacuto","TRUE","Yakut","","Yakut","FALSE","יאקוטיים","","יאקוטיים","FALSE","ياقوت","","ياقوت","FALSE","याकुट","","याकुट","FALSE","ইয়াকুট","ইয়াকুত","ইয়াকুত","TRUE","Yakut","","Yakut","FALSE","","FALSE","Yakut","Bahasa Yakut","Bahasa Yakut","TRUE","якут","якутский","якутский","TRUE","雅库特","","雅库特","FALSE","Yakut","","Yakut","FALSE","Yakut","Yakut","Yakut","TRUE","የያኩት","","የያኩት","FALSE","yakut","","yakut","FALSE","Yakut.","Bahasa Yakut","Bahasa Yakut","TRUE","Yakut.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Yapese","Waab","","yap","","","","","yapeses","","yapeses","FALSE","Yapese","Yapanês","Yapanês","TRUE","Yap","","Yap","FALSE","Yapese","","Yapese","FALSE","Yapese","","Yapese","FALSE","यापीस","","यापीस","FALSE","ইয়াপেসে","যাপিজ ","যাপিজ ","TRUE","Yapese","","Yapese","FALSE","","FALSE","Yapese","Bahasa Yapese","Bahasa Yapese","TRUE","Yapese","япский","япский","TRUE","Yapese","","Yapese","FALSE","Yapese","","Yapese","FALSE","Yapese","Yapizi","Yapizi","TRUE","ያፖች","","ያፖች","FALSE","ยะหวาร","","ยะหวาร","FALSE","Yapese.","Bahasa Yapese","Bahasa Yapese","TRUE","Yapese.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Yoruba","Èdè Yorùbá","","yo","Keyboard_yorubadot","true","","","Yoruba","yoruba","yoruba","TRUE","Yoruba","Yoruba","Yoruba","TRUE","Yoruba","Yoruba","Yoruba","TRUE","יורובה","יורובה","יורובה","TRUE","اليوروبا","اليوروبا","اليوروبا","FALSE","योरूबा","","योरूबा","FALSE","ইওরুবা","ইওরুবা","ইওরুবা","TRUE","ୟୋରୁବା","","ୟୋରୁବା","FALSE","","FALSE","Yoruba","Bahasa Yoruba","Bahasa Yoruba","TRUE","йоруба","","йоруба","TRUE","约鲁巴","","约鲁巴","FALSE","Yoruba","","Yoruba","FALSE","Kiyoruba","Kiyoruba","Kiyoruba","TRUE","ዮሩባ","","ዮሩባ","FALSE","yoruba","","yoruba","FALSE","Yoruba.","Bahasa Yoruba","Bahasa Yoruba","TRUE","Yoruba","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Zarma","Zarmaciine","","dje","","","","Zarmaciine ??","zarma","","zarma","FALSE","Zarma","Zarma","Zarma","TRUE","Zarma","","Zarma","FALSE","Zarma","","Zarma","FALSE","Zarma","","Zarma","FALSE","Zarma","","Zarma","FALSE","Zarma,","জারমা","জারমা","TRUE","Zarma","","Zarma","FALSE","","FALSE","Zarma","Bahasa Zarma","Bahasa Zarma","TRUE","Zarma","зарма","зарма","TRUE","Zarma","","Zarma","FALSE","Zarma","","Zarma","FALSE","Zarma","Zarma","Zarma","TRUE","Zarma","","Zarma","FALSE","Zarma","","Zarma","FALSE","Zarma.","Bahasa Zarma","Bahasa Zarma","TRUE","Zarma.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Zulu","isiZulu","","zu","","","","","zulú","","zulú","FALSE","zulu","Zulu","Zulu","TRUE","zoulou","","zoulou","FALSE","זולו","","זולו","FALSE","الزولو","","الزولو","FALSE","ज़ुलु","","ज़ुलु","FALSE","জুলু","জুলু","জুলু","TRUE","ଜୁଲୁ","","ଜୁଲୁ","FALSE","","FALSE","Zulu","Bahasa Zulu","Bahasa Zulu","TRUE","зулус","зулусский","зулусский","TRUE","祖鲁","","祖鲁","FALSE","Zulu","","Zulu","FALSE","Zulu","Kizulu","Kizulu","TRUE","ዙሉ","","ዙሉ","FALSE","ซูลู","","ซูลู","FALSE","Zulu","Bahasa Zulu","Bahasa Zulu","TRUE","Zulu.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" \ No newline at end of file diff --git a/scripts/Parts-of-Speech.csv b/scripts/Parts-of-Speech.csv new file mode 100644 index 000000000..8b1180a51 --- /dev/null +++ b/scripts/Parts-of-Speech.csv @@ -0,0 +1,97 @@ +"en","key","enAbbrev","Spanish","write-in","esAbbrev","es","✓","Portuguese","write-in","ptAbbrev","pt","✓","French","write-in","frAbbrev","fr","✓","Hebrew","write-in","heAbbrev","he","✓","Arabic","write-in","arAbbrev","ar","✓","Hindi","write-in","hiAbbrev","hi","✓","Bengali","write-in","bnAbbrev","bn","✓","Oriya","write-in","orAbbrev","or","✓","as","asAbbrev","✓","Indonesian","write-in","idAbbrev","id","✓","Russian","write-in","ruAbbrev","ru","✓","Mandarin Chinese (simplified)","write-in","zhAbbrev","zh","✓","Hausa","write-in","haAbbrev","ha","✓","Swahili","write-in","swAbbrev","sw","✓","Amharic","write-in","amAbbrev","am","✓","Thai","write-in","thAbbrev","th","✓","Malay","write-in","msAbbrev","ms","✓","Filipino","write-in","filAbbrev","fil","✓","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"noun","n","n","sustantivo","sustantivo","s","sustantivo","TRUE","substantivo","substantivo","","substantivo","TRUE","nom","nom commun","n.","nom commun","TRUE","שֵׁם עֶצֶם","שם עצם","שם","שם עצם","TRUE","إسم","اسم","اس","اسم","FALSE","संज्ञा","संज्ञा","","संज्ञा","TRUE","বিশেষ্য","বিশেষ্য","বি.","বিশেষ্য","TRUE","ବିେଶଷ୍ଯପଦ","","","ବିେଶଷ୍ଯପଦ","FALSE","","","FALSE","kata benda","nomina","","nomina","TRUE","существительное","","","существительное","TRUE","名词","","","名词","FALSE","suna","","","suna","FALSE","nomino","Nomino","nm","Nomino","TRUE","ስም","ስም","","ስም","TRUE","คำนาม","","","คำนาม","FALSE","kata","kata nama","","kata nama","TRUE","kata","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"pronoun","pro","pro","pronombre","pronombre","pron","pronombre","TRUE","pronome","pronome","","pronome","TRUE","pronom","pronom","pr.","pronom","TRUE","כנוי","כינוי גוף","","כינוי גוף","TRUE","ضمير","ضمير","ضم","ضمير","FALSE","सर्वनाम","सर्वनाम","","सर्वनाम","TRUE","সর্বনাম","সর্বনাম","সর্ব.","সর্বনাম","TRUE","ସର୍ବନାମ","","","ସର୍ବନାମ","FALSE","","","FALSE","kata ganti","pronomina","","pronomina","TRUE","местоимение","","","местоимение","TRUE","代词","","","代词","FALSE","wakilin suna","","","wakilin suna","FALSE","kiwakilishi","Kiwakilishi","kw","Kiwakilishi","TRUE","ተዉላጠ ስም","ተዉላጠ ስም","","ተዉላጠ ስም","TRUE","คำสรรพนาม","","","คำสรรพนาม","FALSE","kata ganti","kata ganti nama","","kata ganti nama","TRUE","pronoun.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"verb","v","v","verbo","verbo","v","verbo","TRUE","verbo","verbo","","verbo","TRUE","verbe","verbe","v.","verbe","TRUE","פועל","","פ","פועל","TRUE","الفعل","فعل","فع","فعل","FALSE","क्रिया","क्रिया","","क्रिया","TRUE","ক্রিয়া","ক্রিয়া","ক্রি.","ক্রিয়া","TRUE","କ୍ରିୟା","","","କ୍ରିୟା","FALSE","","","FALSE","kata kerja","verba","","verba","TRUE","глагол","","","глагол","TRUE","动词","","","动词","FALSE","fi'ili","","","fi'ili","FALSE","kitendo","Kitenzi","kt","Kitenzi","TRUE","ግሥ","ግሥ","","ግሥ","TRUE","คำกริยา","","","คำกริยา","FALSE","kata kerja","kata kerja","","kata kerja","TRUE","pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"adjective","adj","adj","adjetivo","adjetivo","adj","adjetivo","TRUE","adjetivo","adjectivo","","adjectivo","TRUE","adjectif","adjectif","adj.","adjectif","TRUE","תוֹאַר","שם תואר","ש״ת","שם תואר","TRUE","الصفة","صفة","صف","صفة","FALSE","विशेषण","विशेषण","","विशेषण","TRUE","বিশেষণ","বিশেষণ","বিণ.","বিশেষণ","TRUE","ବିେଶଷଣ ପଦ","","","ବିେଶଷଣ ପଦ","FALSE","","","FALSE","kata sifat","adjektiva","","adjektiva","TRUE","прилагательное","","","прилагательное","TRUE","形容词","","","形容词","FALSE","siffa","","","siffa","FALSE","kivumishi","Kivumishi","kv","Kivumishi","TRUE","ቅጽል","ቅጽል","","ቅጽል","TRUE","คำคุณศัพท์","","","คำคุณศัพท์","FALSE","kata sifat","kata adjektif","","kata adjektif","TRUE","pang-uri","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"adverb","adv","adv","adverbio","adverbio","adv","adverbio","TRUE","advérbio","advérbio","","advérbio","TRUE","adverbe","adverbe","adv.","adverbe","TRUE","תואר הפועל","","תה""פ","תואר הפועל","TRUE","ظرف حال","حال","ح","حال","FALSE","क्रिया विशेषण","क्रिया विशेषण","","क्रिया विशेषण","TRUE","বিশেষণের বিশেষণ","ক্রিয়াবিশেষণ","ক্রি. বিণ","ক্রিয়াবিশেষণ","TRUE","କ୍ରିୟା ବିେଶଷଣ","","","କ୍ରିୟା ବିେଶଷଣ","FALSE","","","FALSE","kata keterangan","adverbia","","adverbia","TRUE","наречие","","","наречие","TRUE","副词","","","副词","FALSE","yar bab","","","yar bab","FALSE","kielezi","Kielezi","kl","Kielezi","TRUE","ተውሳከ ግስ","ተውሳከ ግስ","","ተውሳከ ግስ","TRUE","คำวิเศษณ์","","","คำวิเศษณ์","FALSE","kata keterangan","kata adverba","","kata adverba","TRUE","Adverb","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"preposition","prep","prep","preposición","preposición","prep","preposición","TRUE","preposição","préposição","","préposição","TRUE","préposition","préposition","prép.","préposition","TRUE","מילת יחס","מילת יחס (תחילית, preposition)","מ״י","מילת יחס (תחילית, preposition)","TRUE","حرف جر","حرف جر","ح ج","حرف جر","FALSE","पूर्वसर्ग","पूर्वसर्ग","","पूर्वसर्ग","TRUE","পদান্বয়ী অব্যয়","পূর্ব সর্গ","পূ.স.","পূর্ব সর্গ","TRUE","ଅବ୍ଯୟପଦ","","","ଅବ୍ଯୟପଦ","FALSE","","","FALSE","preposisi","preposisi","","preposisi","TRUE","предлог","","","предлог","TRUE","介词","","","介词","FALSE","bigire","","","bigire","FALSE","kihusishi","Kihusishi","kh","Kihusishi","TRUE","መስተዋድድ","መስተዋድድ","","መስተዋድድ","TRUE","บุพบท","","","บุพบท","FALSE","preposisi","kata sendi nama depan","","kata sendi nama depan","TRUE","preposisyon","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"conjunction","conj","conj","conjunción","conjunción","conj","conjunción","TRUE","conjunção","conjunção","","conjunção","TRUE","conjonction","conjonction","conj.","conjonction","TRUE","בשיתוף","מילת קישור","מ״ק","מילת קישור","TRUE","اقتران","أداة ربط","أ ر","أداة ربط","FALSE","संयोजन के रूप","समुच्चयबोधक","","समुच्चयबोधक","TRUE","সংযোগ","সংযোজক অব্যয়","সং. অ.","সংযোজক অব্যয়","TRUE","ଛେଦ","","","ଛେଦ","FALSE","","","FALSE","konjungsi","konjungsi","","konjungsi","TRUE","конъюнкция","союз","","союз","TRUE","连词","","","连词","FALSE","tare da","","","tare da","FALSE","kushirikiana","Kiunganishi","ku","Kiunganishi","TRUE","መስተፃምር","ጠማሪ","","ጠማሪ","TRUE","การใช้ร่วมกัน","","","การใช้ร่วมกัน","FALSE","konjungsi","kata hubung","","kata hubung","TRUE","conjunction.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"determiner","det","det","determinador","determinante","det","determinante","TRUE","determinador","determinante","","determinante","TRUE","déterminateur","déterminant","dét.","déterminant","TRUE","determiner","מיידע","","מיידע","TRUE","المحدد","محدد ","مح","محدد ","FALSE","निर्धारक","निर्धारक","","निर्धारक","TRUE","নিয়ন্তা","নির্ধারক","নির্ধা.","নির্ধারক","TRUE","determiner","","","determiner","FALSE","","","FALSE","penentu","determiner","","determiner","TRUE","детерминанта","детерминатив","","детерминатив","TRUE","确定","","","确定","FALSE","determiner","","","determiner","FALSE","determiner","Kibainishi","kb","Kibainishi","TRUE","determiner","መስተዓምር","","መስተዓምር","TRUE","ผู้กำหนด","","","ผู้กำหนด","FALSE","penentu","kata ganti nama penunjuk","","kata ganti nama penunjuk","TRUE","determiner","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"interjection","int","int","interjección","interjección","interj","interjección","TRUE","interjeição","interjeição","","interjeição","TRUE","interjection","interjection","interj.","interjection","TRUE","שְׁאִלתָה","מילת קריאה","","מילת קריאה","TRUE","إقحام","حرف نداء","ح ن","حرف نداء","FALSE","विस्मयादिबोधक","विस्मयादिबोधक","","विस्मयादिबोधक","TRUE","মধ্যে নিক্ষেপ","আবেগ সূচক অব্যয়","আ. অ.","আবেগ সূচক অব্যয়","TRUE","ହଠାତ୍ କହିବା","","","ହଠାତ୍ କହିବା","FALSE","","","FALSE","kata seru","interjeksi","","interjeksi","TRUE","междометие","","","междометие","TRUE","欹","","","欹","FALSE","interjection","","","interjection","FALSE","interjection","Kihisishi","ks","Kihisishi","TRUE","ቃል አጋኖ","ቃል አጋኖ","","ቃል አጋኖ","TRUE","การร้องไห้","","","การร้องไห้","FALSE","penyimpanan","kata seru","","kata seru","TRUE","interjection.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"number","no","no","número","número","nro","número","TRUE","número","número","","número","TRUE","nombre","nombre","no. ","nombre","TRUE","מספר","","","מספר","TRUE","رقم","رقم","رقم","رقم","FALSE","संख्या","वचन","","वचन","TRUE","সংখ্যা","বচন","ব.","বচন","TRUE","ସଂଖ୍ଯା","","","ସଂଖ୍ଯା","FALSE","","","FALSE","jumlah","bilangan","","bilangan","TRUE","число","","","число","TRUE","数","","","数","FALSE","lambar","","","lambar","FALSE","idadi","Namba","na","Namba","TRUE","ቁጥር","ቁጥር","","ቁጥር","TRUE","จำนวน","","","จำนวน","FALSE","nombor","nombor","","nombor","TRUE","numero","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"demonstrative","dem","dem","demostrativo","demostrativo","dem","demostrativo","TRUE","demonstrativo","demonstrativo","","demonstrativo","TRUE","démonstratif","démonstratif","dém","démonstratif","TRUE","הַפגָנָתִי","כינוי רמז","","כינוי רמז","TRUE","إيضاحي","اسم الاشارة","اس اش","اسم الاشارة","FALSE","ठोस","निदर्शनात्तमक / संकेतसूचक","","निदर्शनात्तमक / संकेतसूचक","TRUE","নির্দেশক","নির্দেশক","নি.","নির্দেশক","TRUE","demonstrative","","","demonstrative","FALSE","","","FALSE","demonstratif","demonstratif","","demonstratif","TRUE","демонстративный","указатель","","указатель","TRUE","示范","","","示范","FALSE","demonstrative","","","demonstrative","FALSE","demonstrative","Kionyeshi","ko","Kionyeshi","TRUE","demonstrative","አመልካች ተውላጠስም","","አመልካች ተውላጠስም","TRUE","ซึ่งแสดงให้เห็น","","","ซึ่งแสดงให้เห็น","FALSE","demonstratif","kata ganti nama penunjuk","","kata ganti nama penunjuk","TRUE","demanda","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"plural noun","n pl","n pl","sustantivo plural","sustantivo plural","s.pl","sustantivo plural","TRUE","substantivo plural","substantivo plural","","substantivo plural","TRUE","nom pluriel","nom pluriel","n. pl.","nom pluriel","TRUE","שם עצם ברבים","","","שם עצם ברבים","TRUE","الجمع إسم","اسم بصيغة الجمع","اس جمع","اسم بصيغة الجمع","FALSE","बहुवचन संज्ञा","बहुवचन संज्ञा","","बहुवचन संज्ञा","TRUE","বহুবচন বিশেষ্য","বহুবচন বিশেষ্য","বহু বি.","বহুবচন বিশেষ্য","TRUE","ବହୁବଚନ ବିଶେଷ୍ୟ","","","ବହୁବଚନ ବିଶେଷ୍ୟ","FALSE","","","FALSE","bentuk jamak kata benda","nomina jamak","","nomina jamak","TRUE","множественное число существительного","множественное существительное","","множественное существительное","TRUE","复数名词","","","复数名词","FALSE","jam'in","","","jam'in","FALSE","wingi wa jina","Nomino ya Wingi","nm w","Nomino ya Wingi","TRUE","የብዙ ቁጥር ስም","ስም በብዙ ቁጥር","","ስም በብዙ ቁጥር","TRUE","คำนามพหูพจน์","","","คำนามพหูพจน์","FALSE","kata nama majmuk","kata majmuk","","kata majmuk","TRUE","plural noun","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"phrase","phr","phr","frase","frase","fr","frase","TRUE","frase","frase","","frase","TRUE","phrase","proposition","prop.","proposition","TRUE","מִשׁפָּט","צירוף","","צירוף","TRUE","العبارة","عبارة/شبه جملة","ش ج","عبارة/شبه جملة","FALSE","मुहावरा","वाक्यांश / पदबंध","","वाक्यांश / पदबंध","TRUE","ফ্রেজ","বাক্যাংশ","বা.শ.","বাক্যাংশ","TRUE","େଲଖିବା ବା କହିବା ରୀତି","","","େଲଖିବା ବା କହିବା ରୀତି","FALSE","","","FALSE","frasa","frasa","","frasa","TRUE","фраза","словосочетание","","словосочетание","TRUE","短语","","","短语","FALSE","magana","","","magana","FALSE","maneno","Kirai","kr","Kirai","TRUE","ሐረግ","ሐረግ","","ሐረግ","TRUE","วลี","","","วลี","FALSE","ungkapan","frasa","","frasa","TRUE","parirala","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"particle","p","p","partícula","partícula","part","partícula","TRUE","partícula","partícula","","partícula","TRUE","particule","particule","part.","particule","TRUE","חֶלְקִיק","מילית","","מילית","TRUE","جسيم","أداة/حرف","أ ج","أداة/حرف","FALSE","कण","निपात","","निपात","TRUE","কণা","নিপাত","নিপ.","নিপাত","TRUE","particle","","","particle","FALSE","","","FALSE","partikel","partikel","","partikel","TRUE","частица","","","частица","TRUE","粒子","","","粒子","FALSE","barbashi","","","barbashi","FALSE","chembe","Kiambishi","ka","Kiambishi","TRUE","ቅንጣት","ቅንጣት ምዕላድ","","ቅንጣት ምዕላድ","TRUE","อนุภาค","","","อนุภาค","FALSE","zarah","partikel","","partikel","TRUE","maliit na butil","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"negative","neg","neg","negativo","negativo","neg","negativo","TRUE","negativo","negativa","","negativa","TRUE","négatif","négatif","nég.","négatif","TRUE","שלילי","מילת שלילה","","מילת שלילה","FALSE","سلبي","نفي","نف","نفي","FALSE","नकारात्मक","नकारात्मक","","नकारात्मक","TRUE","নেতিবাচক","নঞর্থক","নঞ.","নঞর্থক","TRUE","ନାସ୍ତିସୁଚକ","","","ନାସ୍ତିସୁଚକ","FALSE","","","FALSE","negatif","negatif","","negatif","TRUE","отрицательный","отрицательный маркер","","отрицательный маркер","TRUE","负","","","负","FALSE","korau","","","korau","FALSE","hasi","Hasi","hs","Hasi","TRUE","አፍራሽ","አሉታ","","አሉታ","TRUE","เชิงลบ","","","เชิงลบ","FALSE","negatif","negatif","","negatif","TRUE","negatibo","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"quantifier","quan","quan","cuantificador","cuantificador","cuant","cuantificador","TRUE","quantificador","quantificador","","quantificador","TRUE","quantificateur","quantificateur","quant.","quantificateur","TRUE","כמת","","","כמת","TRUE","محدد الكمية","مكمم","مك","مكمم","FALSE","परिमाणक","परिमाणवाचक","","परिमाणवाचक","TRUE","কোয়ান্টিফায়ার","পরিমাণক","পরি.","পরিমাণক","TRUE","quantifier","","","quantifier","FALSE","","","FALSE","pembilang","pembilang","","pembilang","TRUE","квантор","счётное слово","","счётное слово","TRUE","量词","","","量词","FALSE","quantifier","","","quantifier","FALSE","watakwimu","Kiambishi idadi","kai","Kiambishi idadi","TRUE","quantifier","መጣኝ","","መጣኝ","TRUE","ปริมาณ","","","ปริมาณ","FALSE","Quantifier.","kata bilangan","","kata bilangan","TRUE","quantifier.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"relative","rel","rel","relativo","relativo","rel","relativo","TRUE","relativo","relativo","","relativo","TRUE","relatif","relatif","rel.","relatif","TRUE","קרוב משפחה","כינוי זיקה","","כינוי זיקה","TRUE","نسبيا","موصول","موص","موصول","FALSE","सापेक्ष","संबंधवाचक","","संबंधवाचक","TRUE","আপেক্ষিক","সংযোগবাচক","সং.","সংযোগবাচক","TRUE","ସାେପକ୍ଷ","","","ସାେପକ୍ଷ","FALSE","","","FALSE","relatif","relatif","","relatif","TRUE","родственник","относительный","","относительный","TRUE","相对的","","","相对的","FALSE","dangi","","","dangi","FALSE","jamaa","Rejeshi","rj","Rejeshi","TRUE","ዘመድ","ተዛማጅ","","ተዛማጅ","TRUE","เกี่ยวกับญาติ","","","เกี่ยวกับญาติ","FALSE","relatif","relatif","","relatif","TRUE","kamag-anak","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"auxiliary verb","v.aux","v.aux","verbo auxiliar","verbo auxiliar","v.aux","verbo auxiliar","TRUE","verbo auxiliar","verbo auxiliar","","verbo auxiliar","TRUE","verbe auxiliaire","verbe auxiliaire","v. aux.","verbe auxiliaire","TRUE","פועל עזר","","","פועל עזר","TRUE","فعل مساعد","فعل مساعد","فعل مس","فعل مساعد","FALSE","सहायक क्रिया","सहायक क्रिया","","सहायक क्रिया","TRUE","সাহায্যকারী ভার্ব","সহায়ক ক্রিয়া","সহ.ক্রি.","সহায়ক ক্রিয়া","TRUE","ସହକାରୀ କ୍ରିୟାପଦ","","","ସହକାରୀ କ୍ରିୟାପଦ","FALSE","","","FALSE","kata kerja bantu","verba bantu","","verba bantu","TRUE","вспомогательный глагол","","","вспомогательный глагол","TRUE","助动词","","","助动词","FALSE","iso ga aikatau","","","iso ga aikatau","FALSE","saidizi kitenzi","Kitenzi kisaidizi","t","Kitenzi kisaidizi","TRUE","ረዳት ግስ","ረዳት ግስ","","ረዳት ግስ","TRUE","กริยาช่วย","","","กริยาช่วย","FALSE","kata kerja tambahan","kata bantu","","kata bantu","TRUE","pandiwang pantulong","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"animate demonstrative","dem.a","dem.a","animado demostrativa","demostrativo animado","dem.anim","demostrativo animado","TRUE","animado demonstrativo","demonstrativo animado","","demonstrativo animado","TRUE","Animer démonstratif","démonstratif animé","dém. anim.","démonstratif animé","TRUE","הנפשת הפגנתי","כינוי רמז לחי/בעל נפש","","כינוי רמז לחי/בעל נפש","TRUE","الأرواح برهاني","اسم اشارة للعاقل","اس اش عق","اسم اشارة للعاقل","FALSE","चेतन प्रदर्शन-परक","सजीव संकेतसूचक","","सजीव संकेतसूचक","TRUE","সজীব প্রদর্শনমূলক","প্রাণীবাচক নির্দেশক","প্রা. নি.","প্রাণীবাচক নির্দেশক","TRUE","ଆପଣ ନିଶ୍ଚିତ demonstrative","","","ଆପଣ ନିଶ୍ଚିତ demonstrative","FALSE","","","FALSE","bernyawa demonstratif","demonstratif bernyawa","","demonstratif bernyawa","TRUE","одушевленные демонстративное","одушевленное указательное","","одушевленное указательное","TRUE","动画演示","","","动画演示","FALSE","mai rai demonstrative","","","mai rai demonstrative","FALSE","animate demonstrative","Kionyeshi hisivu","koh","Kionyeshi hisivu","TRUE","ሕያዋንና demonstrative","ሕያው አመልካች ተውላጠስም","","ሕያው አመልካች ተውላጠስም","TRUE","ภาพเคลื่อนไหวสาธิต","","","ภาพเคลื่อนไหวสาธิต","FALSE","menonjolkan demonstratif","penunjuk bernyawa","","penunjuk bernyawa","TRUE","I-animate ang Demetrative.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"inanimate demonstrative","dem.i","dem.i","inanimada demostrativa","demostrativo inanimado","dem.inam","demostrativo inanimado","TRUE","inanimado demonstrativo","demonstrativo inanimado","","demonstrativo inanimado","TRUE","inanimé démonstratif","démonstratif inanimé","dém. inam.","démonstratif inanimé","TRUE","דוממים הפגנתי","כינוי רמז לדומם","","כינוי רמז לדומם","TRUE","جماد برهاني","اسم إشارة لغير العاقل","","اسم إشارة لغير العاقل","FALSE","निर्जीव प्रदर्शन-परक","निर्जीव संकेतसूचक","","निर्जीव संकेतसूचक","TRUE","জড় প্রদর্শনমূলক","অপ্রাণীবাচক নির্দেশক","অপ্রা.নি.","অপ্রাণীবাচক নির্দেশক","TRUE","inanimate demonstrative","","","inanimate demonstrative","FALSE","","","FALSE","mati demonstratif","demonstratif tak bernyawa","","demonstratif tak bernyawa","TRUE","неодушевленный демонстративное","неодушевленное указательное","","неодушевленное указательное","TRUE","无生命示范","","","无生命示范","FALSE","matattun demonstrative","","","matattun demonstrative","FALSE","inanimate demonstrative","Kionyeshi isohisivu","koih","Kionyeshi isohisivu","TRUE","ግዑዛን demonstrative","ግኡዝ አመልካች ተውላጠስም","","ግኡዝ አመልካች ተውላጠስም","TRUE","แสดงให้เห็นไม่มีชีวิต","","","แสดงให้เห็นไม่มีชีวิต","FALSE","menonjolkan demam","penunjuk tidak bernyawa","","penunjuk tidak bernyawa","TRUE","walang buhay na pagpapakita","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"locative demonstrative","dem.loc","dem.loc","demostrativa locativa","demostrativo locativo","dem.loc","demostrativo locativo","TRUE","demonstrativo locativo","demonstrativo locativo","","demonstrativo locativo","TRUE","démonstratif géolocalisé","démonstratif locatif","dém. loc.","démonstratif locatif","TRUE","הפגין יַחֲסַת הַמָקוֹם","כינוי רמז מיוחס מקום/ה""א המגמה","","כינוי רמז מיוחס מקום/ה""א המגמה","FALSE","برهاني ظرفي","اسم إشارة للمكان","","اسم إشارة للمكان","FALSE","लोकैटिव प्रदर्शन-परक","अधिकरण संकेतसूचक","","अधिकरण संकेतसूचक","TRUE","অধিকরণ প্রদর্শনমূলক","স্থানবাচক নির্দেশক","স্থা.নি.","স্থানবাচক নির্দেশক","TRUE","locative demonstrative","","","locative demonstrative","FALSE","","","FALSE","demonstratif lokatif","demonstratif lokatif","","demonstratif lokatif","TRUE","падеж демонстративное","локативное указательное","","локативное указательное","TRUE","方位示范","","","方位示范","FALSE","locative demonstrative","","","locative demonstrative","FALSE","locative demonstrative","Kionyeshi mahali","kom","Kionyeshi mahali","TRUE","locative demonstrative","የቦታ አመልካች ተውላጠስም","","የቦታ አመልካች ተውላጠስም","TRUE","จุดประสงค์ในตำแหน่ง","","","จุดประสงค์ในตำแหน่ง","FALSE","Demonstrasi locatif.","penunjuk lokatif","","penunjuk lokatif","TRUE","locative demandative.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"diminutive","dim","dim","diminutivo","diminutivo","dim","diminutivo","TRUE","diminutivo","diminutivo","","diminutivo","TRUE","diminutif","diminutif","dim.","diminutif","TRUE","צוּרַת הַקטָנָה","צורת הקטנה","","צורת הקטנה","TRUE","صيغة التصغير","صيغة التصغير","","صيغة التصغير","FALSE","अल्पार्थक","अल्पार्थक, लघुतावाची","","अल्पार्थक, लघुतावाची","TRUE","সঙ্কুচিত","ক্ষুদ্র","ক্ষু.","ক্ষুদ্র","TRUE","diminutive","","","diminutive","FALSE","","","FALSE","kecil","diminutif","","diminutif","TRUE","крохотный","диминутив","","диминутив","TRUE","爱称","","","爱称","FALSE","gajeren","","","gajeren","FALSE","diminutive","udogo","ud","udogo","TRUE","ድንቢጦችን","ማቆላመጫ","","ማቆላመጫ","TRUE","เล็ก","","","เล็ก","FALSE","diminutive.","diminutif","","diminutif","TRUE","diminutive","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"animate noun","na","na","animado sustantivo","sustantivo animado","s.anim","sustantivo animado","TRUE","animado substantivo","substantivo animado","","substantivo animado","TRUE","Animer nom","nom animé","n. anim.","nom animé","TRUE","ניפשת עצם","שם עצם חי/בעל נפש","","שם עצם חי/בעל נפש","TRUE","الأرواح إسم","اسم للعاقل","","اسم للعاقل","FALSE","चेतन संज्ञा","सजीव संज्ञा","","सजीव संज्ञा","TRUE","সজীব বিশেষ্য","প্রাণীবাচক বিশেষ্য","প্রা.বি.","প্রাণীবাচক বিশেষ্য","TRUE","ଆପଣ ନିଶ୍ଚିତ ବିଶେଷ୍ୟ","","","ଆପଣ ନିଶ୍ଚିତ ବିଶେଷ୍ୟ","FALSE","","","FALSE","bernyawa kata benda","nomina bernyawa","","nomina bernyawa","TRUE","одушевленное существительное","","","одушевленное существительное","TRUE","动画名词","","","动画名词","FALSE","mai rai suna","","","mai rai suna","FALSE","animate nomino","Nomino hisivu","nm.h","Nomino hisivu","TRUE","ሕያዋንና ስም","ሕያው ስም","","ሕያው ስም","TRUE","นามแฝง","","","นามแฝง","FALSE","Animate Noun.","kata nama bernyawa","","kata nama bernyawa","TRUE","I-animate ang pangngalan","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"inanimate noun","ni","ni","sustantivo inanimado","sustantivo inanimado","s.inam","sustantivo inanimado","TRUE","substantivo inanimada","substantivo inanimado","","substantivo inanimado","TRUE","inanimé nom","nom inanimé","n. inam.","nom inanimé","TRUE","עצם דומם","שם עצם דומם","","שם עצם דומם","TRUE","إسم جماد","اسم لغير العاقل","","اسم لغير العاقل","FALSE","निर्जीव संज्ञा","निर्जीव संज्ञा","","निर्जीव संज्ञा","TRUE","জড় বিশেষ্য","অপ্রাণীবাচক বিশেষ্য","প্রা.বি.","অপ্রাণীবাচক বিশেষ্য","TRUE","inanimate ବିଶେଷ୍ୟ","","","inanimate ବିଶେଷ୍ୟ","FALSE","","","FALSE","kata benda mati","nomina tak bernyawa","","nomina tak bernyawa","TRUE","неодушевленное существительное","","","неодушевленное существительное","TRUE","无生命的名词","","","无生命的名词","FALSE","matattun suna","","","matattun suna","FALSE","inanimate nomino","Nomino isohisivu","nm.ih","Nomino isohisivu","TRUE","ግዑዝ ስም","ግዑዝ ስም","","ግዑዝ ስም","TRUE","คำนามที่ไม่มีชีวิต","","","คำนามที่ไม่มีชีวิต","FALSE","Noun yang tidak bernyawa","kata nama tidak bernyawa","","kata nama tidak bernyawa","TRUE","walang buhay na pangngalan","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"plural","pl","pl","plural","plural","pl","plural","TRUE","plural","plural","","plural","TRUE","pluriel","pluriel","pl.","pluriel","TRUE","רַבִּים","רבים","","רבים","TRUE","جمع","جمع","","جمع","FALSE","बहुवचन","बहुवचन","","बहुवचन","TRUE","বহুবচন","বহুবচন","বহু.ব.","বহুবচন","TRUE","ବହୁବଚନ","","","ବହୁବଚନ","FALSE","","","FALSE","jamak","jamak","","jamak","TRUE","множественное число","","","множественное число","TRUE","复数","","","复数","FALSE","jam'i","","","jam'i","FALSE","wingi","Wingi","w","Wingi","TRUE","የብዙ ቁጥር","የብዙ ቁጥር","","የብዙ ቁጥር","TRUE","พหูพจน์","","","พหูพจน์","FALSE","majmuk","jamak","","jamak","TRUE","maramihan","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"prenoun","pn","pn","Pronombre","prenombre","pren","prenombre","TRUE","prenoun","pré-nome","","pré-nome","TRUE","prenoun","prénominal","pré.","prénominal","TRUE","גוף תיאורים","תיאור-מקדים-שם","","תיאור-מקדים-שם","FALSE","prenoun","ما يسبق الاسم","","ما يسبق الاسم","FALSE","prenoun","पूर्वसंज्ञा","","पूर्वसंज्ञा","TRUE","সর্বনাম","বিশেষ্য পূর্ব","বি.পূ.","বিশেষ্য পূর্ব","TRUE","prenoun","","","prenoun","FALSE","","","FALSE","prenoun","pranomina","","pranomina","TRUE","prenoun","преноминальная частица/слово","","преноминальная частица/слово","TRUE","prenoun","","","prenoun","FALSE","prenoun","","","prenoun","FALSE","Kielezi","Kiambishiawali Nomino","kaw.nm","Kiambishiawali Nomino","TRUE","የቅድመ","ቅድመ ስም","","ቅድመ ስም","TRUE","ปรี","","","ปรี","FALSE","prenoun.","prenoun","","prenoun","TRUE","prenoun.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"preverb","pv","pv","preverbio","preverbo","prev","preverbo","TRUE","preverb","pré-verbo","","pré-verbo","TRUE","préverbe","préverbe","prév.","préverbe","TRUE","preverb","תיאור-מקדים-פועל","","תיאור-מקדים-פועל","FALSE","preverb","مايسبق الفعل","","مايسبق الفعل","FALSE","preverb","पूर्वक्रिया","","पूर्वक्रिया","TRUE","preverb","ক্রিয়াপূর্ব","ক্রি.পূ.","ক্রিয়াপূর্ব","TRUE","preverb","","","preverb","FALSE","","","FALSE","preverb","praverba","","praverba","TRUE","preverb","преверб","","преверб","TRUE","preverb","","","preverb","FALSE","preverb","","","preverb","FALSE","preverb","Kiambishiawali kitenzi","kaw.kt","Kiambishiawali kitenzi","TRUE","preverb","ቅድመ ግሥ","","ቅድመ ግሥ","TRUE","preverb","","","preverb","FALSE","PreverB.","preverb","","preverb","TRUE","Preverb","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"prenoun / preverb","pn/v","pn/v","Pronombre / preverbio","prenombre / preverbo","pren/prev","prenombre / preverbo","TRUE","prenoun / preverb","pré-nome/pré-verbo","","pré-nome/pré-verbo","TRUE","prenoun / préverbe","prénom / préverbe","pré. / prév.","prénom / préverbe","TRUE","גוף תיאורים / preverb","תיאור מקדים","","תיאור מקדים","FALSE","prenoun / preverb","ما يسبق الاسم/ الفعل","","ما يسبق الاسم/ الفعل","FALSE","prenoun / preverb","पूर्वसंज्ञा / पूर्वक्रिया","","पूर्वसंज्ञा / पूर्वक्रिया","TRUE","সর্বনাম / preverb","বিশেষ্য পূর্ব/ক্রিয়াপূর্ব","বি.পূ./ক্রি.পূ.","বিশেষ্য পূর্ব/ক্রিয়াপূর্ব","TRUE","prenoun / preverb","","","prenoun / preverb","FALSE","","","FALSE","prenoun / preverb","pranomina/praverba","","pranomina/praverba","TRUE","prenoun / preverb","","","prenoun / preverb","TRUE","prenoun / preverb","","","prenoun / preverb","FALSE","prenoun / preverb","","","prenoun / preverb","FALSE","Kielezi / preverb","Kiambishiawali Nomino / kitenzi","ka.nm / kt","Kiambishiawali Nomino / kitenzi","TRUE","የቅድመ / preverb","ቅድመ ስም/ ቅድመ ግሥ","","ቅድመ ስም/ ቅድመ ግሥ","TRUE","Prenoun / Preverb","","","Prenoun / Preverb","FALSE","Prenoun / PreverB.","prenoun / preverb","","prenoun / preverb","TRUE","Prenoun / Preverb","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"animate pronoun","pro.a","pro.a","animado pronombre","pronombre animado","pro.anim","pronombre animado","TRUE","animado pronome","pronome animado","","pronome animado","TRUE","Animer pronom","pronom animé","pr. anim. ","pronom animé","TRUE","הנפשת כנוי","כינוי גוף לחי/בעל נפש","","כינוי גוף לחי/בעל נפש","TRUE","تحريك الضمير","ضمير للعاقل","","ضمير للعاقل","FALSE","चेतन सर्वनाम","सजीव सर्वनाम","","सजीव सर्वनाम","TRUE","সজীব সর্বনাম","প্রাণীবাচক সর্বনাম","প্রা.সর্ব.","প্রাণীবাচক সর্বনাম","TRUE","ଆପଣ ନିଶ୍ଚିତ ବିଶେଷଣ","","","ଆପଣ ନିଶ୍ଚିତ ବିଶେଷଣ","FALSE","","","FALSE","bernyawa ganti","pronomina bernyawa","","pronomina bernyawa","TRUE","одушевленные местоимения","одушевленное местоимение","","одушевленное местоимение","TRUE","动画的代名词","","","动画的代名词","FALSE","mai rai wakilin suna","","","mai rai wakilin suna","FALSE","animate kiwakilishi","Kiwakilishi hisivu","kw.h","Kiwakilishi hisivu","TRUE","ሕያዋንና ተውላጠ ስም","ሕያው ተውላጠስም","","ሕያው ተውላጠስም","TRUE","สรรพนามเคลื่อนไหว","","","สรรพนามเคลื่อนไหว","FALSE","Animate Pronoun.","kata ganti nama bernyawa","","kata ganti nama bernyawa","TRUE","I-animate ang Pronoun.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"inanimate pronoun","pro.i","pro.i","pronombre inanimado","pronombre inanimado","pro.inam","pronombre inanimado","TRUE","pronome inanimada","pronome inanimado","","pronome inanimado","TRUE","pronom inanimé","pronom inanimé","pr. inam.","pronom inanimé","TRUE","כנוי דומם","כינוי גוף לדומם","","כינוי גוף לדומם","TRUE","الضمير جماد","ضمير لغير العاقل","","ضمير لغير العاقل","FALSE","निर्जीव सर्वनाम","निर्जीव सर्वनाम","","निर्जीव सर्वनाम","TRUE","জড় সর্বনাম","অপ্রাণীবাচক সর্বনাম","অপ্রা.সর্ব.","অপ্রাণীবাচক সর্বনাম","TRUE","inanimate ବିଶେଷଣ","","","inanimate ବିଶେଷଣ","FALSE","","","FALSE","kata ganti benda mati","pronomina tak bernyawa","","pronomina tak bernyawa","TRUE","неодушевленные местоимения","неодушевленное местоимение","","неодушевленное местоимение","TRUE","无生命的代名词","","","无生命的代名词","FALSE","matattun wakilin suna","","","matattun wakilin suna","FALSE","inanimate kiwakilishi","Kiwakilishi isohisivu","kw.ih","Kiwakilishi isohisivu","TRUE","ግዑዝ ተውላጠ ስም","ግዑዝ ተውላጠ ስም","","ግዑዝ ተውላጠ ስም","TRUE","สรรพนามที่ไม่มีชีวิต","","","สรรพนามที่ไม่มีชีวิต","FALSE","kata ganti perkataan yang tidak bernyawa","kata ganti nama tidak bernyawa","","kata ganti nama tidak bernyawa","TRUE","walang buhay na panghalip","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"reduplication","redup","redup","reduplicación","reduplicación","redup","reduplicación","TRUE","reduplicação","reduplicação","","reduplicação","TRUE","redoublement","réduplication","rédupl. ","réduplication","TRUE","הַכפָּלָה","הכפלה","","הכפלה","FALSE","مضاعفة","صيغة التكرار/ المضاعفة","","صيغة التكرار/ المضاعفة","FALSE","दोहराव","पुनरुक्ति","","पुनरुक्ति","TRUE","দ্বিত্ব","দ্বিত্বায়ন","দ্বি.","দ্বিত্বায়ন","TRUE","reduplication","","","reduplication","FALSE","","","FALSE","reduplikasi","reduplikasi","","reduplikasi","TRUE","редупликация","","","редупликация","TRUE","重叠式","","","重叠式","FALSE","reduplication","","","reduplication","FALSE","reduplication","Uradidi","ur","Uradidi","TRUE","reduplication","ተደጋጋሚ","","ተደጋጋሚ","TRUE","การอัดขึ้นใหม่","","","การอัดขึ้นใหม่","FALSE","reduplication.","penggandaan","","penggandaan","TRUE","reduplication.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"reflexive","refl","refl","reflexivo","reflexivo","refl","reflexivo","TRUE","reflexivo","reflexivo","","reflexivo","TRUE","réfléchi","réflexif","réfl. ","réflexif","TRUE","רפלקסיבי","רפלקסיבי (חוזר)","","רפלקסיבי (חוזר)","TRUE","انعكاسي","الصيغة الانعكاسية","","الصيغة الانعكاسية","FALSE","कर्मकर्त्ता","निजवाचक","","निजवाचक","TRUE","আত্মবাচক","আত্মবাচক","আবা.","আত্মবাচক","TRUE","ରିଫ୍ଲେକ୍ସିଭ୍","","","ରିଫ୍ଲେକ୍ସିଭ୍","FALSE","","","FALSE","refleksif","refleksif","","refleksif","TRUE","возвратный","","","возвратный","TRUE","反思","","","反思","FALSE","turawa yanzu","","","turawa yanzu","FALSE","reflexive","Jirejee","jr","Jirejee","TRUE","አገናዛቢ","ውስጠ ገብ","","ውስጠ ገብ","TRUE","สะท้อนกลับ","","","สะท้อนกลับ","FALSE","refleksif","kata refleksif","","kata refleksif","TRUE","mapanlinlang","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"animate intransitive verb","vai","vai","animado verbo intransitivo","verbo intransitivo animado","ver.intr.anim","verbo intransitivo animado","TRUE","animado intransitivo verbo","verbo intransitivo animado","","verbo intransitivo animado","TRUE","Animer intransitif verbe","verbe intransitif animé","v. intr. anim.","verbe intransitif animé","TRUE","ניפשת פועל עומד הפועל","פועל עומד (אינטרנזיטיבי): חי/בעל הפש","","פועל עומד (אינטרנזיטיבי): חי/בעל הפש","TRUE","الأرواح متعد الفعل","فعل لازم للعاقل","","فعل لازم للعاقل","FALSE","चेतन अकर्मक क्रिया","सजीव अकर्मक क्रिया","","सजीव अकर्मक क्रिया","TRUE","সজীব অকর্মক ক্রিয়া","প্রাণীবাচক অকর্মক ক্রিয়া","প্রা.অক.ক্রি.","প্রাণীবাচক অকর্মক ক্রিয়া","TRUE","ଆପଣ ନିଶ୍ଚିତ ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","","","ଆପଣ ନିଶ୍ଚିତ ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","FALSE","","","FALSE","bernyawa intransitif kata kerja","verba intrasitif bernyawa","","verba intrasitif bernyawa","TRUE","одушевленные непереходный глагол","одушевленный непереходный глагол","","одушевленный непереходный глагол","TRUE","动画不及物动词","","","动画不及物动词","FALSE","mai rai mara tsallakawa fi'ili","","","mai rai mara tsallakawa fi'ili","FALSE","animate intransitive kitenzi","Kitenzi kisoelekeza hisivu","kt.ks.h","Kitenzi kisoelekeza hisivu","TRUE","ሕያዋንና ኢተሻጋሪ ግስ","ሕያዋንና ኢተሻጋሪ ግስ","","ሕያዋንና ኢተሻጋሪ ግስ","TRUE","Animate กริยาอกรรมกริยา","","","Animate กริยาอกรรมกริยา","FALSE","animasi kata kerja intransitif","kata kerja tak transitif bernyawa","","kata kerja tak transitif bernyawa","TRUE","I-animate ang likas na pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"animate / inanimate intransitive verb","vai/ii","vai/ii","animado / inanimado verbo intransitivo","verbo intransitivo animado / inanimado","ver.intr.anim/inam","verbo intransitivo animado / inanimado","TRUE","animado / inanimado intransitivo verbo","verbo intransitivo animado/inanimado","","verbo intransitivo animado/inanimado","TRUE","Animer / inanimé intransitif verbe","verbe intransitif animé / inanimé","v. intr. anim./inam.","verbe intransitif animé / inanimé","TRUE","הנפשת / דומם פועל עומד הפועל","פועל עומד (אינטרנזיטיבי): דומם או חי/בעל הפש","","פועל עומד (אינטרנזיטיבי): דומם או חי/בעל הפש","TRUE","الأرواح / جماد غير متعد الفعل","فعل لازم للعاقل وغير العاقل","","فعل لازم للعاقل وغير العاقل","FALSE","चेतन / निर्जीव अकर्मक क्रिया","सजीव / निर्जीव अकर्मक क्रिया","","सजीव / निर्जीव अकर्मक क्रिया","TRUE","সজীব / জড় অকর্মক ক্রিয়া","প্রাণীবাচক / অপ্রাণীবাচক . অকর্মক ক্রিয়া","প্রা./ অপ্রা.অক.ক্রি.","প্রাণীবাচক / অপ্রাণীবাচক . অকর্মক ক্রিয়া","TRUE","ଆପଣ ନିଶ୍ଚିତ / inanimate ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","","","ଆପଣ ନିଶ୍ଚିତ / inanimate ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","FALSE","","","FALSE","bernyawa / mati intransitif kata kerja","verba intrasitif bernyawa/tak bernyawa","","verba intrasitif bernyawa/tak bernyawa","TRUE","одушевленный / неодушевленный непереходный глагол","одушевленный / неодушевленный непереходный глагол","","одушевленный / неодушевленный непереходный глагол","TRUE","有生/无生命不及物动词","","","有生/无生命不及物动词","FALSE","mai rai / matattun mara tsallakawa fi'ili","","","mai rai / matattun mara tsallakawa fi'ili","FALSE","animate / inanimate intransitive kitenzi","Kitenzi kisoelekeza hisivu / isohisivu ","kt.ks.h / ih","Kitenzi kisoelekeza hisivu / isohisivu ","TRUE","ሕያዋንና / ግዑዛን ኢተሻጋሪ ግስ","ሕያዋንና / ግዑዛን የማይሻገር ግሥ","","ሕያዋንና / ግዑዛን የማይሻገር ግሥ","TRUE","Animate / Inanimate Ingransitive Verb","","","Animate / Inanimate Ingransitive Verb","FALSE","kata kerja intransitif animasi / tidak bernyawa","kata kerja tak transitif bernyawa / tidak bernyawa","","kata kerja tak transitif bernyawa / tidak bernyawa","TRUE","I-animate / walang buhay na likas na pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"inanimate intransitive verb","vii","vii","inanimada verbo intransitivo","verbo intransitivo inanimado","ver.intr.inam","verbo intransitivo inanimado","TRUE","inanimado intransitivo verbo","verbo intransitivo inanimado","","verbo intransitivo inanimado","TRUE","inanimé intransitif verbe","verbe intransitif inanimé","v. intr. inam.","verbe intransitif inanimé","TRUE","דוממים פועלים עומדים הפועל","פועל עומד (אינטרנזיטיבי): דומם","","פועל עומד (אינטרנזיטיבי): דומם","TRUE","جماد غير متعد الفعل","فعل لازم لغير العاقل","","فعل لازم لغير العاقل","FALSE","निर्जीव अकर्मक क्रिया","निर्जीव अकर्मक क्रिया","","निर्जीव अकर्मक क्रिया","TRUE","জড় অকর্মক ক্রিয়া","অপ্রাণীবাচক অকর্মক ক্রিয়া","অপ্রা.অক.ক্রি.","অপ্রাণীবাচক অকর্মক ক্রিয়া","TRUE","inanimate ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","","","inanimate ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","FALSE","","","FALSE","mati intransitif kata kerja","verba intransitif tak bernyawa","","verba intransitif tak bernyawa","TRUE","неодушевленный непереходный глагол","","","неодушевленный непереходный глагол","TRUE","无生命不及物动词","","","无生命不及物动词","FALSE","matattun mara tsallakawa fi'ili","","","matattun mara tsallakawa fi'ili","FALSE","inanimate intransitive kitenzi","Kitenzi kisoelekeza isohisivu","kt.ke.h","Kitenzi kisoelekeza isohisivu","TRUE","ግዑዛን ኢተሻጋሪ ግስ","የማይሻገር ግኡዝ ግሥ","","የማይሻገር ግኡዝ ግሥ","TRUE","กริยาอกรรมกริยาไม่มีชีวิต","","","กริยาอกรรมกริยาไม่มีชีวิต","FALSE","kata kerja intransitif yang tidak bernyawa","kata kerja tak transitif tidak bernyawa","","kata kerja tak transitif tidak bernyawa","TRUE","walang buhay na likas na pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"transitive animate verb","vta","vta","transitiva verbo animado","verbo transitivo animado","vta","verbo transitivo animado","TRUE","transitivo animado verbo","verbo transitivo animado","","verbo transitivo animado","TRUE","transitive Animer verbe","verbe animé transitif","v. anim. tr.","verbe animé transitif","TRUE","יוֹצֵא להנפיש הפועל","פועל יוצא (טרנזיטיבי): חי/בעל נפש","","פועל יוצא (טרנזיטיבי): חי/בעל נפש","TRUE","متعدية الأرواح الفعل","فعل متعدٍّ للعاقل","","فعل متعدٍّ للعاقل","FALSE","सकर्मक क्रिया चेतन","सजीव सकर्मक क्रिया","","सजीव सकर्मक क्रिया","TRUE","সকর্মক সজীব ক্রিয়া","প্রাণীবাচক সকর্মক . ক্রিয়া","প্রা.সক.ক্রি.","প্রাণীবাচক সকর্মক . ক্রিয়া","TRUE","ଟ୍ରାଞ୍ଜିଟିଭ୍ ଆପଣ ନିଶ୍ଚିତ କ୍ରିୟାପଦ","","","ଟ୍ରାଞ୍ଜିଟିଭ୍ ଆପଣ ନିଶ୍ଚିତ କ୍ରିୟାପଦ","FALSE","","","FALSE","transitif bernyawa kata kerja","verba transitif bernyawa","","verba transitif bernyawa","TRUE","транзитивный одушевленный глагол","","","транзитивный одушевленный глагол","TRUE","传递生命的动词","","","传递生命的动词","FALSE","tsallakawa mai rai fi'ili","","","tsallakawa mai rai fi'ili","FALSE","elekezi animate kitenzi","Kitenzi elekezi hisivu","kt.el.h","Kitenzi elekezi hisivu","TRUE","ተሻጋሪ ሕያዋንና ግስ","ተሻጋሪ ሕያው ግሥ","","ተሻጋሪ ሕያው ግሥ","TRUE","กริยาเคลื่อนไหวสกรรมกริยา","","","กริยาเคลื่อนไหวสกรรมกริยา","FALSE","kata kerja animasi transitif","kata kerja transitif bernyawa","","kata kerja transitif bernyawa","TRUE","Palipat animate verb","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"transitive inanimate verb","vti","vti","transitiva verbo inanimada","verbo transitivo inanimado","vti","verbo transitivo inanimado","TRUE","transitivo inanimado verbo","verbo transitivo inanimado","","verbo transitivo inanimado","TRUE","transitif inanimé verbe","verbe inanimé transitif","v. inam. tr. ","verbe inanimé transitif","TRUE","יוֹצֵא דומם הפועל","פועל יוצא (טרנזיטיבי): דומם","","פועל יוצא (טרנזיטיבי): דומם","TRUE","متعدية جماد الفعل","فعل متعدٍّ لغير العاقل","","فعل متعدٍّ لغير العاقل","FALSE","सकर्मक क्रिया निर्जीव","निर्जीव सकर्मक क्रिया","","निर्जीव सकर्मक क्रिया","TRUE","সকর্মক জড় ক্রিয়া","অপ্রাণীবাচক সকর্মক ক্রিয়া","অপ্রা.সক.ক্রি.","অপ্রাণীবাচক সকর্মক ক্রিয়া","TRUE","ଟ୍ରାଞ୍ଜିଟିଭ୍ inanimate କ୍ରିୟାପଦ","","","ଟ୍ରାଞ୍ଜିଟିଭ୍ inanimate କ୍ରିୟାପଦ","FALSE","","","FALSE","transitif mati verba","verba transitif tak bernyawa","","verba transitif tak bernyawa","TRUE","транзитивное неодушевленный глагол","транзитивный неодушевленный глагол","","транзитивный неодушевленный глагол","TRUE","传递无生命动词","","","传递无生命动词","FALSE","tsallakawa matattun fi'ili","","","tsallakawa matattun fi'ili","FALSE","elekezi inanimate kitenzi","Kitenzi elekezi isohisivu","kt.el.ih","Kitenzi elekezi isohisivu","TRUE","ተሻጋሪ ግዑዛን ግስ","ተሻጋሪ ግኡዝ ግሥ","","ተሻጋሪ ግኡዝ ግሥ","TRUE","คำกริยาที่ไม่มีที่สิ้นสุด","","","คำกริยาที่ไม่มีที่สิ้นสุด","FALSE","kata kerja yang tidak bernyawa","kata kerja transitif tidak bernyawa","","kata kerja transitif tidak bernyawa","TRUE","palipat ay walang buhay na pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"imperative/command marker","imp","imp","imperativo / marcador de comandos","imperativo","imp","imperativo","TRUE","imperativo / marcador comando","Imperativo/marca de comando","","Imperativo/marca de comando","TRUE","impératif / marqueur de commande","marqueur impératif","imper.","marqueur impératif","TRUE","חובה / הפקודה סמן","ציווי","","ציווי","TRUE","حتمية الأمر / علامة","أداة الأمر","","أداة الأمر","FALSE","जरूरी / आदेश मार्कर","आज्ञार्थक / समादेश चिह्न","","आज्ञार्थक / समादेश चिह्न","TRUE","অনুজ্ঞাসূচক / কমান্ড মার্কার","অনুজ্ঞা","অনু.","অনুজ্ঞা","TRUE","imperative / ନିର୍ଦ୍ଦେଶ ଚିହ୍ନଟକ","","","imperative / ନିର୍ଦ୍ଦେଶ ଚିହ୍ନଟକ","FALSE","","","FALSE","penting / perintah penanda","pemarkah imperatif","","pemarkah imperatif","TRUE","императив команда маркер /","императивный/повелительный маркер","","императивный/повелительный маркер","TRUE","势在必行/命令标记","","","势在必行/命令标记","FALSE","wajibi / umurnin alama","","","wajibi / umurnin alama","FALSE","muhimu / amri marker","Agizi/Kibainishi cha amri","ag/kb.am","Agizi/Kibainishi cha amri","TRUE","ተተኳሪ / ትእዛዝ ምልክት ማድረጊያ","ትዕዛዝ አመልካች","","ትዕዛዝ አመልካች","TRUE","เครื่องหมายคำสั่ง / คำสั่ง","","","เครื่องหมายคำสั่ง / คำสั่ง","FALSE","penanda penting / perintah","penanda perintah","","penanda perintah","TRUE","Imperative / command marker.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"prefix","pref","pref","prefijo","prefijo","pref","prefijo","TRUE","prefixo","prefixo","","prefixo","TRUE","préfixe","préfixe","préf.","préfixe","TRUE","קידומת","תחילית","","תחילית","TRUE","اختصار","بادئة","","بادئة","FALSE","उपसर्ग","उपसर्ग","","उपसर्ग","TRUE","উপসর্গ","উপসর্গ","উপ.","উপসর্গ","TRUE","ଉପସର୍ଗ","","","ଉପସର୍ଗ","FALSE","","","FALSE","awalan","prefiks","","prefiks","TRUE","префикс","","","префикс","TRUE","字首","","","字首","FALSE","prefix","","","prefix","FALSE","kiambishi awali","Kiambishiawali","kaw","Kiambishiawali","TRUE","ባዕድ መነሻ","ባዕድ መነሻ","","ባዕድ መነሻ","TRUE","คำนำหน้า","","","คำนำหน้า","FALSE","awalan","awalan","","awalan","TRUE","prefix","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"punctuation","punc","punc","puntuación","ortografía","ort","ortografía","TRUE","pontuação","pontuação","","pontuação","TRUE","ponctuation","ponctuation","ponc.","ponctuation","TRUE","פיסוק","","","פיסוק","TRUE","علامات ترقيم","علامات الترقيم","","علامات الترقيم","FALSE","विराम चिह्न","विराम चिह्न","","विराम चिह्न","TRUE","যতিচিহ্নসিন্নিবেশ","যতিচিহ্ন","যতি.","যতিচিহ্ন","TRUE","ଚିହ୍ନ ପ୍ରକରଣ","","","ଚିହ୍ନ ପ୍ରକରଣ","FALSE","","","FALSE","tanda baca","tanda baca","","tanda baca","TRUE","пунктуация","","","пунктуация","TRUE","标点","","","标点","FALSE","alamar rubutu","","","alamar rubutu","FALSE","uandishi","Uwekaji vituo","uw.vt","Uwekaji vituo","TRUE","ሥርዓተ ነጥብ","ሥርዓተ ነጥብ","","ሥርዓተ ነጥብ","TRUE","เครื่องหมายวรรคตอน","","","เครื่องหมายวรรคตอน","FALSE","tanda baca","tanda baca","","tanda baca","TRUE","bantas","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"suffix","suff","suff","sufijo","sufijo","suf","sufijo","TRUE","sufixo","sufixo","","sufixo","TRUE","suffixe","suffixe","suff.","suffixe","TRUE","סִיוֹמֶת","סופית","","סופית","TRUE","لاحقة","لاحقة","","لاحقة","FALSE","प्रत्यय","प्रत्यय","","प्रत्यय","TRUE","প্রত্যয়","প্রত্যয়","প্র.","প্রত্যয়","TRUE","ପରପଦ","","","ପରପଦ","FALSE","","","FALSE","akhiran","sufiks","","sufiks","TRUE","суффикс","","","суффикс","TRUE","后缀","","","后缀","FALSE","kari na baya baki","","","kari na baya baki","FALSE","suffix","Kiambishi tamati","ka.tm","Kiambishi tamati","TRUE","ቅጥያ","ባዕድ መድረሻ","","ባዕድ መድረሻ","TRUE","คำต่อท้าย","","","คำต่อท้าย","FALSE","akhiran","akhiran","","akhiran","TRUE","suffix.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"transitive verb","vt","vt","verbo transitivo","verbo transitivo","vt","verbo transitivo","TRUE","verbo transitivo","verbo transitivo","","verbo transitivo","TRUE","Verbe transitif","verbe transitif","v. tr.","verbe transitif","TRUE","יוֹצֵא הפועל","פועל יוצא (טרנזיטיבי)","","פועל יוצא (טרנזיטיבי)","TRUE","فعل متعد","فعل متعدٍ","","فعل متعدٍ","FALSE","सकर्मक क्रिया","सकर्मक क्रिया","","सकर्मक क्रिया","TRUE","সকর্মক ক্রিয়া","সকর্মক ক্রিয়া","সক.ক্রি.","সকর্মক ক্রিয়া","TRUE","ଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","","","ଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","FALSE","","","FALSE","kata kerja transitif","verba transitif","","verba transitif","TRUE","переходный глагол","","","переходный глагол","TRUE","及物动词","","","及物动词","FALSE","tsallakawa fi'ili","","","tsallakawa fi'ili","FALSE","elekezi kitenzi","Kitenzi elekezi","kt.el","Kitenzi elekezi","TRUE","ተሻጋሪ ግስ","ተሻጋሪ ግስ","","ተሻጋሪ ግስ","TRUE","สกรรมกริยา","","","สกรรมกริยา","FALSE","kata kerja transitif","kata kerja transitif","","kata kerja transitif","TRUE","palipat na pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"intransitive verb","vi","vi","verbo intransitivo","verbo intransitivo","vi","verbo intransitivo","TRUE","verbo intransitivo","verbo intransitivo","","verbo intransitivo","TRUE","verbe intransitif","verbe intransitif","v. intr.","verbe intransitif","TRUE","פּוֹעַל עוֹמֵד","פועל עומד (אינטרנזיטיבי)","","פועל עומד (אינטרנזיטיבי)","TRUE","فعل لازم","فعل لازم","","فعل لازم","FALSE","अकर्मक क्रिया","अकर्मक क्रिया","","अकर्मक क्रिया","TRUE","অকর্মক ক্রিয়া","অকর্মক ক্রিয়া","অক.ক্রি.","অকর্মক ক্রিয়া","TRUE","ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","","","ଇଟ୍ରାଞ୍ଜିଟିଭ୍ କ୍ରିୟାପଦ","FALSE","","","FALSE","kata kerja intransitif","verba intransitif","","verba intransitif","TRUE","непереходный глагол","","","непереходный глагол","TRUE","不及物动词","","","不及物动词","FALSE","mara tsallakawa fi'ili","","","mara tsallakawa fi'ili","FALSE","intransitive kitenzi","Kitenzi kisoelekeza","kt.kel","Kitenzi kisoelekeza","TRUE","ኢተሻጋሪ ግስ","የማይሻገር ግሥ","","የማይሻገር ግሥ","TRUE","กริยาอกรรมกริยา","","","กริยาอกรรมกริยา","FALSE","kata kerja intransitif","kata kerja tak transitif","","kata kerja tak transitif","TRUE","Katawan na pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"complement(izer)","comp","comp","del complemento (izante)","complement(ador)","com","complement(ador)","TRUE","complemento (izer)","complemento/ador","","complemento/ador","TRUE","complément (izer)","complément","compl. ","complément","TRUE","שלמה (izer)","משלים","","משלים","TRUE","تكملة (izer)","تتمّة","","تتمّة","FALSE","पूरक (izer)","पूरणकारी","","पूरणकारी","TRUE","সম্পূরক (izer)","পূরক/ পূরকায়ক","পূ.","পূরক/ পূরকায়ক","TRUE","ପରିପୂରକ (izer)","","","ପରିପୂରକ (izer)","FALSE","","","FALSE","komplemen (Izer)","pelengkap","","pelengkap","TRUE","дополнение (Izer)","комплемент(айзер)","","комплемент(айзер)","TRUE","补(IZER)","","","补(IZER)","FALSE","dace da (izer)","","","dace da (izer)","FALSE","inayosaidia (izer)","Kijalizo","kj","Kijalizo","TRUE","ማሟያ (የማዳበሪያ)","ሞይ","","ሞይ","TRUE","เสริม (izer)","","","เสริม (izer)","FALSE","pelengkap (izer)","pelengkap","","pelengkap","TRUE","umakma (izer)","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"compound","cpd","cpd","compuesto","compuesto","comp","compuesto","TRUE","composto","composto","","composto","TRUE","composé","composé","comp.","composé","TRUE","מתחם","הרכב","","הרכב","TRUE","مركب","مُرَكَّب","","مُرَكَّب","FALSE","यौगिक","समास / यौगिक","","समास / यौगिक","TRUE","যৌগিক","যৌগিক","যৌ.","যৌগিক","TRUE","Compound","","","Compound","FALSE","","","FALSE","senyawa","majemuk","","majemuk","TRUE","соединение","составной","","составной","TRUE","复合","","","复合","FALSE","fili","","","fili","FALSE","kiwanja","Mwambatano","mw","Mwambatano","TRUE","ውሁድ","ጥምር","","ጥምር","TRUE","สารประกอบ","","","สารประกอบ","FALSE","sebatian","majmuk","","majmuk","TRUE","tambalan","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"participle","pple","pple","participio","participio","ppio","participio","TRUE","particípio","particípio","","particípio","TRUE","participe","participe","p. ","participe","TRUE","פעול","בינוני פועל","","בינוני פועל","FALSE","إسم الفاعل","كلمة لها وظيفة قواعدية، ولا تُصنّف من أقسام الكلام ","","كلمة لها وظيفة قواعدية، ولا تُصنّف من أقسام الكلام ","FALSE","कृदंत","कृदंत विशेषण","","कृदंत विशेषण","TRUE","পার্টিসিপেল","কৃদন্ত পদ","কৃদ.","কৃদন্ত পদ","TRUE","participle","","","participle","FALSE","","","FALSE","partisip","partisipel","","partisipel","TRUE","причастие","","","причастие","TRUE","分词","","","分词","FALSE","participle","","","participle","FALSE","Mmoja","Kitenzivumishi","kt.vm","Kitenzivumishi","TRUE","ቦዝ","ግሳዊ ቅጽል","","ግሳዊ ቅጽል","TRUE","กริยา","","","กริยา","FALSE","participle.","partisipel","","partisipel","TRUE","pandinig","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"sentence","sent","sent","frase","oración","o","oración","TRUE","sentença","frase","","frase","TRUE","phrase","phrase","phr.","phrase","TRUE","משפט","","","משפט","TRUE","جملة او حكم على","جملة","","جملة","FALSE","वाक्य","वाक्य","","वाक्य","TRUE","বাক্য","বাক্য","বা.","বাক্য","TRUE","ବାକ୍ୟ","","","ବାକ୍ୟ","FALSE","","","FALSE","kalimat","kalimat","","kalimat","TRUE","приговор","предложение","","предложение","TRUE","句子","","","句子","FALSE","jumla","","","jumla","FALSE","hukumu","Sentensi","s","Sentensi","TRUE","አረፍተ ነገር","አረፍተ ነገር","","አረፍተ ነገር","TRUE","ประโยค","","","ประโยค","FALSE","ayat","ayat","","ayat","TRUE","pangungusap","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"proper noun","pr.n","pr.n","nombre propio","nombre proprio","nom.pr","nombre proprio","TRUE","nome próprio","nome próprio","","nome próprio","TRUE","nom propre","nom propre","n. propre","nom propre","TRUE","שם עצם נכון","שם עצם פרטי","","שם עצם פרטי","TRUE","الاسم الصحيح","اسم علم","","اسم علم","FALSE","संज्ञा विशेष","व्यक्तिवाचक संज्ञा","","व्यक्तिवाचक संज्ञा","TRUE","বিশেষ্য","নামবাচক বিশেষ্য","নাম বি.","নামবাচক বিশেষ্য","TRUE","ଉପଯୁକ୍ତ ବିଶେଷ୍ୟ","","","ଉପଯୁକ୍ତ ବିଶେଷ୍ୟ","FALSE","","","FALSE","kata benda nama diri","nomina nama diri","","nomina nama diri","TRUE","имя собственное","","","имя собственное","TRUE","专有名词","","","专有名词","FALSE","dace suna","","","dace suna","FALSE","sahihi nomino","Nomino pekee","nm.pk","Nomino pekee","TRUE","ተገቢ ስም","የተጸውዖ ስም","","የተጸውዖ ስም","TRUE","คำนามที่เหมาะสม","","","คำนามที่เหมาะสม","FALSE","kata nama yang betul","kata nama khas","","kata nama khas","TRUE","Wastong pangngalan","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"noun phrase","np","np","sintagma nominal","frase nominal","fr.n","frase nominal","TRUE","sintagma nominal","sintagma nominal","","sintagma nominal","TRUE","phrase nominale","groupe nominal","gr. nom.","groupe nominal","TRUE","צירוף שמני","","","צירוף שמני","TRUE","إسم العبارة","فقرة اسمية","","فقرة اسمية","FALSE","संज्ञा वाक्यांश","संज्ञा पदबंध","","संज्ञा पदबंध","TRUE","বিশেষ্য ফ্রেজ","বিশেষ্য বাক্যাংশ","বি.বাশ.","বিশেষ্য বাক্যাংশ","TRUE","ବିଶେଷ୍ୟ ଖଣ୍ଡବାକ୍ୟ","","","ବିଶେଷ୍ୟ ଖଣ୍ଡବାକ୍ୟ","FALSE","","","FALSE","frase nomina","frasa nomina","","frasa nomina","TRUE","словосочетание","именная группа","","именная группа","TRUE","名词短语","","","名词短语","FALSE","suna magana","","","suna magana","FALSE","nomino maneno","Kirai nomino","kr.nm","Kirai nomino","TRUE","ስም ሐረግ","ስማዊ ሐረግ","","ስማዊ ሐረግ","TRUE","วลีคำนาม","","","วลีคำนาม","FALSE","kata benda frasa","frasa nama","","frasa nama","TRUE","Pangngalan:","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"verb phrase","vp","vp","frase verbal","frase verbal","fr.v","frase verbal","TRUE","frase verbal","sintagma verbal","","sintagma verbal","TRUE","phrase verbe","phrase verbale","gr. v. ","phrase verbale","TRUE","ביטוי הפועל","צירוף פועלי","","צירוף פועלי","TRUE","جملة فعلية","فقرة فعلية","","فقرة فعلية","FALSE","क्रिया वाक्यांश","क्रिया पदबंध","","क्रिया पदबंध","TRUE","ক্রিয়া ফ্রেজ","ক্রিয়া বাক্যাংশ","ক্রি.বাশ.","ক্রিয়া বাক্যাংশ","TRUE","କ୍ରିୟାପଦ ଖଣ୍ଡବାକ୍ୟ","","","କ୍ରିୟାପଦ ଖଣ୍ଡବାକ୍ୟ","FALSE","","","FALSE","frasa verba","frasa verba","","frasa verba","TRUE","фразовый глагол","глагольная группа","","глагольная группа","TRUE","动词词组","","","动词词组","FALSE","fi'ili magana","","","fi'ili magana","FALSE","kitenzi maneno","Kirai kitenzi","kr.kt","Kirai kitenzi","TRUE","ግሥ ሐረግ","ግሣዊ ሐረግ","","ግሣዊ ሐረግ","TRUE","กริยาวลี","","","กริยาวลี","FALSE","Frasa kata kerja","frasa kerja","","frasa kerja","TRUE","Pandiwa:","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"adjective phrase","ap","ap","sintagma adjetivo","frase adjetival","fr.adj","frase adjetival","TRUE","frase adjetivo","sintagma adjectival","","sintagma adjectival","TRUE","phrase adjectif","phrase adjective","phr. adj.","phrase adjective","TRUE","ביטוי תואר","צירוף תוארי","","צירוף תוארי","TRUE","عبارة نعت","فقرة وصفية","","فقرة وصفية","FALSE","विशेषण वाक्यांश","विशेषण पदबंध","","विशेषण पदबंध","TRUE","বিশেষণ ফ্রেজ","বিশেষণ বাক্যাংশ","বিণ.বাশ.","বিশেষণ বাক্যাংশ","TRUE","ବିଶେଷଣ ଖଣ୍ଡବାକ୍ୟ","","","ବିଶେଷଣ ଖଣ୍ଡବାକ୍ୟ","FALSE","","","FALSE","frase kata sifat","frasa adjektiva","","frasa adjektiva","TRUE","прилагательное фраза","группа прилагательного","","группа прилагательного","TRUE","形容词短语","","","形容词短语","FALSE","siffa magana","","","siffa magana","FALSE","kivumishi maneno","Kirai kivumishi","kr.kv","Kirai kivumishi","TRUE","ቅፅል ሐረግ","ቅጽላዊ ሐረግ","","ቅጽላዊ ሐረግ","TRUE","วลีคำคุณศัพท์","","","วลีคำคุณศัพท์","FALSE","ungkapan kata sifat","frasa adjektif","","frasa adjektif","TRUE","Pangngalan:","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"adverb phrase","adv.p","adv.p","frase adverbio","frase adverbial","fr.adv","frase adverbial","TRUE","frase advérbio","sintagma adverbial","","sintagma adverbial","TRUE","expression adverbiale","phrase adverbiale","phr. adv.","phrase adverbiale","TRUE","ביטוי תואר פועל","צירוף שם-תוארי","","צירוף שם-תוארי","TRUE","عبارة ظرف","فقرة ظرفية","","فقرة ظرفية","FALSE","क्रिया विशेषण वाक्यांश","क्रिया विशेषण पदबंध","","क्रिया विशेषण पदबंध","TRUE","ক্রিয়া বিশেষণ ফ্রেজ","ক্রিয়া-বিশেষণ বাক্যাংশ","ক্রি.বিণ.বাশ.","ক্রিয়া-বিশেষণ বাক্যাংশ","TRUE","ଉପକ୍ରିୟା ଖଣ୍ଡବାକ୍ୟ","","","ଉପକ୍ରିୟା ଖଣ୍ଡବାକ୍ୟ","FALSE","","","FALSE","frase adverbia","frasa adverbia","","frasa adverbia","TRUE","наречие фраза","группа наречия","","группа наречия","TRUE","副词短语","","","副词短语","FALSE","yar bab magana","","","yar bab magana","FALSE","kielezi maneno","Kirai kielezi","kr.kl","Kirai kielezi","TRUE","ተውሳከ ሐረግ","ተውሳከግሣዊ ሐረግ","","ተውሳከግሣዊ ሐረግ","TRUE","วลีคำวิเศษณ์","","","วลีคำวิเศษณ์","FALSE","Ungkapan frasa","frasa adverba","","frasa adverba","TRUE","adverb ph parirala","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"question marker","q","q","marcador pregunta","marca de pregunta","preg","marca de pregunta","TRUE","marcador questão","marcador de pergunta","","marcador de pergunta","TRUE","marqueur question","marqueur d'interrogation","interr.","marqueur d'interrogation","TRUE","סמן שאלה","","","סמן שאלה","FALSE","علامة السؤال","علامة استفهام","","علامة استفهام","FALSE","सवाल मार्कर","प्रश्न चिन्ह","","प्रश्न चिन्ह","TRUE","প্রশ্ন মার্কার","প্রশ্নবাচক চিহ্ন","প্রশ্ন চি.","প্রশ্নবাচক চিহ্ন","TRUE","ପ୍ରଶ୍ନ ଚିହ୍ନଟକ","","","ପ୍ରଶ୍ନ ଚିହ୍ନଟକ","FALSE","","","FALSE","pertanyaan penanda","pemarkah pertanyaan","","pemarkah pertanyaan","TRUE","вопрос маркер","вопросительный маркер","","вопросительный маркер","TRUE","问题标记","","","问题标记","FALSE","tambayar alama","","","tambayar alama","FALSE","swali alama","Kiulizi","ku","Kiulizi","TRUE","ጥያቄ ምልክት ማድረጊያ","ጥያቄ ምልክት ማድረጊያ","","ጥያቄ ምልክት ማድረጊያ","TRUE","เครื่องหมายคำถาม","","","เครื่องหมายคำถาม","FALSE","penanda soalan","penanda pertanyaan","","penanda pertanyaan","TRUE","Marker ng Tanong","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"gerund","ger","ger","gerundio","gerundio","ger","gerundio","TRUE","gerúndio","gerúndio","","gerúndio","TRUE","gérondif","gérondif","gér.","gérondif","TRUE","שֵׁם פְּעוּלָה","שם פעולה","","שם פעולה","TRUE","صيغة الفعل","المصدر","","المصدر","FALSE","क्रियावाचक संज्ञा","क्रियार्थक संज्ञा","","क्रियार्थक संज्ञा","TRUE","ক্রিয়াবাচক বিশেষ্যপদ","ক্রিয়াবাচক বিশেষ্য.","ক্রি.বি.","ক্রিয়াবাচক বিশেষ্য.","TRUE","gerund","","","gerund","FALSE","","","FALSE","gerund","gerund","","gerund","TRUE","герундий","","","герундий","TRUE","动名词","","","动名词","FALSE","gerund","","","gerund","FALSE","gerund","Kitenzi nomino","kt.nm","Kitenzi nomino","TRUE","gerund","ቦዝ አንቀጽ","","ቦዝ አንቀጽ","TRUE","เกอรุนด์","","","เกอรุนด์","FALSE","Gerund.","gerund","","gerund","TRUE","Gerund.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"article","art","art","artículo","artículo","art","artículo","TRUE","artigo","artigo","","artigo","TRUE","article","article","art. ","article","TRUE","מאמר","תווית","","תווית","TRUE","مقالة - سلعة","أداة تعريف","","أداة تعريف","FALSE","लेख","उपपद","","उपपद","TRUE","প্রবন্ধ","নির্দেশক","নি.","নির্দেশক","TRUE","ପ୍ରବନ୍ଧ","","","ପ୍ରବନ୍ଧ","FALSE","","","FALSE","artikel","artikel","","artikel","TRUE","статья","артикль","","артикль","TRUE","文章","","","文章","FALSE","labarin","","","labarin","FALSE","makala","Kibainishio","kb","Kibainishio","TRUE","ጽሑፍ","ዕምርነት ማመልከቻ","","ዕምርነት ማመልከቻ","TRUE","บทความ","","","บทความ","FALSE","artikel","kata sandang","","kata sandang","TRUE","Artikulo.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"postposition","post","post","posposición","postposición","post","postposición","TRUE","posposição","posposição","","posposição","TRUE","postposition","postposition","post.","postposition","TRUE","postposition","מילת יחס (סופית, postposition)","","מילת יחס (סופית, postposition)","TRUE","postposition","لاحقة","","لاحقة","FALSE","परसर्ग","परसर्ग","","परसर्ग","TRUE","postposition","পরসর্গ","প.স.","পরসর্গ","TRUE","postposition","","","postposition","FALSE","","","FALSE","kata belakang","posposisi","","posposisi","TRUE","постпозиция","послелог","","послелог","TRUE","后置","","","后置","FALSE","postposition","","","postposition","FALSE","postposition","Vihusishi tamati","vh.tm","Vihusishi tamati","TRUE","postposition","መስተዋድድ","","መስተዋድድ","TRUE","การโพสปลายทาง","","","การโพสปลายทาง","FALSE","postposition.","kata sendi nama belakang","","kata sendi nama belakang","TRUE","postposisyon","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"entry word / discourse particle","e.w","e.w","palabra de entrada / partícula discurso","palabra de entrada / partícula del discurso","pal","palabra de entrada / partícula del discurso","TRUE","palavra de entrada / partícula discurso","palavra de entrada/partícula discursiva","","palavra de entrada/partícula discursiva","TRUE","entrée mot / particule discours","particule de discours","part. disc.","particule de discours","TRUE","כניסת מילה / חלקיקי שיח","","","כניסת מילה / חלקיקי שיח","FALSE","كلمة دخول / الجسيمات الخطاب","كلمات(و/أو عبارات) لها دور في إدارة مجرى الخطاب ","","كلمات(و/أو عبارات) لها دور في إدارة مجرى الخطاب ","FALSE","प्रवेश शब्द / प्रवचन कण","मूल प्रविष्टि / प्रोक्ति निपात","","मूल प्रविष्टि / प्रोक्ति निपात","TRUE","এন্ট্রি শব্দ / বক্তৃতা কণা","সূচক শব্দ / উক্তি নিপাত","সূ.শ./ উ.নি.","সূচক শব্দ / উক্তি নিপাত","TRUE","ପ୍ରବେଶପଥ ଶବ୍ଦ / discourse particle","","","ପ୍ରବେଶପଥ ଶବ୍ଦ / discourse particle","FALSE","","","FALSE","entri kata / wacana partikel","entri kata / partikel wacana","","entri kata / partikel wacana","TRUE","запись слова / дискурсе частица","вводное слово / дискурсивная частица","","вводное слово / дискурсивная частица","TRUE","条目字/话语粒子","","","条目字/话语粒子","FALSE","shigarwa kalmar / lãbãri barbashi","","","shigarwa kalmar / lãbãri barbashi","FALSE","kuingia neno / mjadala chembe","Kidahizo / kipashio cha usemi","kd / ka.us","Kidahizo / kipashio cha usemi","TRUE","የመግቢያ ቃል / ንግግር ቅንጣት","የመግቢያ ቃል ","","የመግቢያ ቃል ","TRUE","คำแปลคำ / วาทกรรม","","","คำแปลคำ / วาทกรรม","FALSE","Kemasukan perkataan / zarah wacana","partikel wacana","","partikel wacana","TRUE","Entry word / discourse particle.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"measure word","m.w","m.w","palabra de medida","término de medición","med","término de medición","TRUE","palavra medida","medir palavra","","medir palavra","TRUE","mot de mesure","mot de mesure","mes.","mot de mesure","TRUE","מילת מידה","מילת ספירה","","מילת ספירה","FALSE","كلمة قياس","كلمة للقياس","","كلمة للقياس","FALSE","शब्द नापो","मापन शब्द","","मापन शब्द","TRUE","শব্দ নির্নয়","পরিমাপক","পরিমা.","পরিমাপক","TRUE","ମାପ ଶବ୍ଦ","","","ମାପ ଶବ୍ଦ","FALSE","","","FALSE","ukuran kata","kata bantu bilangan","","kata bantu bilangan","TRUE","счетное слово","","","счетное слово","TRUE","量词","","","量词","FALSE","awo kalma","","","awo kalma","FALSE","hatua neno","Neno la kipimo","n.kp","Neno la kipimo","TRUE","መስፈሪያ ቃል","መስፈሪያ ቃል","","መስፈሪያ ቃል","TRUE","วัดคำ","","","วัดคำ","FALSE","mengukur perkataan","kata bilangan","","kata bilangan","TRUE","sukatan ng Salita","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"masdar","msd","msd","masdar","masdar","msd","masdar","TRUE","masdar","masdar","","masdar","TRUE","Masdar","masdar","mas.","masdar","TRUE","Masdar","צורת מקור (ערבית)","","צורת מקור (ערבית)","TRUE","مصدر","مصدر","","مصدر","FALSE","Masdar","मसदार","","मसदार","TRUE","মাসদার","মাসদার","মাসদা.","মাসদার","TRUE","masdar","","","masdar","FALSE","","","FALSE","masdar","masdar","","masdar","TRUE","Масдар","масдар","","масдар","TRUE","马斯达尔","","","马斯达尔","FALSE","masdar","","","masdar","FALSE","Masdar","Masdar","msd","Masdar","TRUE","masdar","አርእስት አንቀጽ","","አርእስት አንቀጽ","TRUE","Masdar","","","Masdar","FALSE","masdar.","masdar","","masdar","TRUE","Masdar.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"idafa","idf","idf","idafa","idafa","idf","idafa","TRUE","idafa","idafa","","idafa","TRUE","idafa","idafa","id.","idafa","TRUE","idafa","מוספית שייכות/בעלות (ערבית)","","מוספית שייכות/בעלות (ערבית)","TRUE","idafa","إضافة","","إضافة","FALSE","idafa","इदाफा","","इदाफा","TRUE","idafa","ঈদফা","ঈদফ.","ঈদফা","TRUE","idafa","","","idafa","FALSE","","","FALSE","idafa","idafa","","idafa","TRUE","idafa","изафет","","изафет","TRUE","idafa","","","idafa","FALSE","idafa","","","idafa","FALSE","idafa","Idafa","idf","Idafa","TRUE","idafa","ሙያ","","ሙያ","TRUE","ไอดาฟา","","","ไอดาฟา","FALSE","idafa","idafa","","idafa","TRUE","Idafa.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"verbal paradigm","v.prdg","v.prdg","verbal paradigma","paradigma verbal","pdma.verb","paradigma verbal","TRUE","verbal paradigma","paradigma verbal","","paradigma verbal","TRUE","verbal paradigme","paradigme verbal","par. v.","paradigme verbal","TRUE","מילולית הפרדיגמה","בניין פועל","","בניין פועל","FALSE","اللفظية نموذج","نموذج الأفعال","","نموذج الأفعال","FALSE","मौखिक प्रतिमान","शाब्दिक रूपावली","","शाब्दिक रूपावली","TRUE","মৌখিক দৃষ্টান্ত","ক্রিয়া দৃষ্টান্ত","ক্রি.দৃ.","ক্রিয়া দৃষ্টান্ত","TRUE","େମୗକିକ paradigm","","","େମୗକିକ paradigm","FALSE","","","FALSE","lisan paradigma","paradigma verba","","paradigma verba","TRUE","словесная парадигма","глагольная парадигма","","глагольная парадигма","TRUE","口头范式","","","口头范式","FALSE","fi'ili yayi","","","fi'ili yayi","FALSE","matusi dhana","kiolezofaridi cha kitenzi","kfd.kt","kiolezofaridi cha kitenzi","TRUE","የቃል ለሆነችው","የግሥ ሥርአት","","የግሥ ሥርአት","TRUE","กระบวนทัศน์ทางวาจา","","","กระบวนทัศน์ทางวาจา","FALSE","Paradigma Verbal.","paradigma kata kerja","","paradigma kata kerja","TRUE","pandiwang paradigm","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"acronym","acr","acr","acrónimo","acrónimo","acr","acrónimo","TRUE","acrônimo","acrónimo","","acrónimo","TRUE","acronyme","acronyme","acro.","acronyme","TRUE","ראשי תיבות","","","ראשי תיבות","TRUE","اختصار","اختصار","","اختصار","FALSE","परिवर्णी शब्द","परिवर्णी शब्द","","परिवर्णी शब्द","TRUE","অন্য শব্দের আদ্যক্ষর দ্বারা গঠিত শব্দ","সংক্ষিপ্ত শব্দ","সং.শ.","সংক্ষিপ্ত শব্দ","TRUE","ଆକ୍ରୋନିମ","","","ଆକ୍ରୋନିମ","FALSE","","","FALSE","akronim","akronim","","akronim","TRUE","акроним","","","акроним","TRUE","缩写","","","缩写","FALSE","acronym","","","acronym","FALSE","kifupi","Akronimi","akr","Akronimi","TRUE","ምህጻረ","ምኅጻረ ቃል","","ምኅጻረ ቃል","TRUE","อักษรย่อ","","","อักษรย่อ","FALSE","akronim","akronim","","akronim","TRUE","acronym.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"contraction","cntr","cntr","contracción","contracción","cntr","contracción","TRUE","contração","contração","","contração","TRUE","contraction","contraction","contr.","contraction","TRUE","צִמצוּם","קיצור, השמטה, או האחדה","","קיצור, השמטה, או האחדה","FALSE","التقلص","تقليص","","تقليص","FALSE","संकुचन","संकुचन","","संकुचन","TRUE","সংকোচন","সংকোচন","সংক.","সংকোচন","TRUE","ସଂେକାଚନ","","","ସଂେକାଚନ","FALSE","","","FALSE","kontraksi","kontraksi","","kontraksi","TRUE","сокращение","стяжение","","стяжение","TRUE","收缩","","","收缩","FALSE","ƙanƙancewa","","","ƙanƙancewa","FALSE","contraction","Msinyao","ms ","Msinyao","TRUE","ማሳጠር","ማሳጠር","","ማሳጠር","TRUE","การหดตัว","","","การหดตัว","FALSE","penguncupan","singkatan","","singkatan","TRUE","contraction.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"numeral","num","num","número","numeral","num","numeral","TRUE","numeral","numeral","","numeral","TRUE","numéral","chiffre","num.","chiffre","TRUE","סִפְרָה","שמות מספרים","","שמות מספרים","TRUE","عددي","عددي","","عددي","FALSE","अंक","संख्यावाचक","","संख्यावाचक","TRUE","সংখ্যা","সংখ্যা শব্দ","স.","সংখ্যা শব্দ","TRUE","ସଂଖ୍ଯାବାଚକ","","","ସଂଖ୍ଯାବାଚକ","FALSE","","","FALSE","angka","numeralia","","numeralia","TRUE","цифра","числительное","","числительное","TRUE","数字","","","数字","FALSE","adadi","","","adadi","FALSE","numeral","Namba","na","Namba","TRUE","አኅዝ","አኅዝ","","አኅዝ","TRUE","ตัวเลข","","","ตัวเลข","FALSE","Numeral.","angka","","angka","TRUE","numeral","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"active verb","act.v","act.v","verbo activo","verbo activo","v.act","verbo activo","TRUE","verbo ativo","verbo activo","","verbo activo","TRUE","verbe actif","verbe actif","v. act. ","verbe actif","TRUE","הפועל פעיל","פועל פעיל","","פועל פעיל","TRUE","فعل نشط","فعل مبني للمعلوم","","فعل مبني للمعلوم","FALSE","सक्रिय क्रिया","कर्तृ-क्रिया","","कर्तृ-क्रिया","TRUE","সক্রিয় ক্রিয়া","সক্রিয় ক্রিয়া","সক্রি.ক্রি.","সক্রিয় ক্রিয়া","TRUE","ସକ୍ରିୟ କ୍ରିୟାପଦ","","","ସକ୍ରିୟ କ୍ରିୟାପଦ","FALSE","","","FALSE","kata kerja aktif","verba aktif","","verba aktif","TRUE","активный глагол","","","активный глагол","TRUE","主动动词","","","主动动词","FALSE","aiki fi'ili","","","aiki fi'ili","FALSE","kazi kitenzi","Kitenzi tendi","kt.tnd","Kitenzi tendi","TRUE","ንቁ ግስ","ገቢር ግሥ","","ገቢር ግሥ","TRUE","กริยาที่ใช้งาน","","","กริยาที่ใช้งาน","FALSE","kata kerja yang aktif","kata kerja aktif","","kata kerja aktif","TRUE","Aktibong pandiwa","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"stative verb","stat.v","stat.v","verbo intransitivo","verbo estativo","v.est","verbo estativo","TRUE","verbo stative","verbo estativo","","verbo estativo","TRUE","verbe d'état","verbe statif","v. stat.","verbe statif","TRUE","הפועל stative","פועל המציין מצב","","פועל המציין מצב","TRUE","الفعل خبري","فعل جامد","","فعل جامد","FALSE","स्टेटीव क्रिया","","","स्टेटीव क्रिया","FALSE","স্থাবর ক্রিয়া","স্থিতিক্রিয়া","স্থি.ক্রি.","স্থিতিক্রিয়া","TRUE","stative କ୍ରିୟାପଦ","","","stative କ୍ରିୟାପଦ","FALSE","","","FALSE","kata kerja statis","verba statis","","verba statis","TRUE","глагол","стативный глагол","","стативный глагол","TRUE","状态动词","","","状态动词","FALSE","stative fi'ili","","","stative fi'ili","FALSE","stative kitenzi","Kitenzi kitendeka","kt.knd","Kitenzi kitendeka","TRUE","stative ግስ","ተገብሮ ግሥ","","ተገብሮ ግሥ","TRUE","กริยา","","","กริยา","FALSE","kata kerja stative","kata kerja statif","","kata kerja statif","TRUE","stative verb","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"causative verb","caus.v","caus.v","verbo causativo","verbo causativo","v.caus","verbo causativo","TRUE","causador verbo","verbo causativo","","verbo causativo","TRUE","causal verbe","verbe causatif","v. caus. ","verbe causatif","TRUE","סיבתי הפועל","פועל סיבתי","","פועל סיבתי","TRUE","الفعل المسبب","فعل مسبب","","فعل مسبب","FALSE","प्रेरणा का क्रिया","प्रेरणार्थक क्रिया","","प्रेरणार्थक क्रिया","TRUE","ণিজন্ত ক্রিয়া","নিজন্ত ক্রিয়া","নি.ক্রি.","নিজন্ত ক্রিয়া","TRUE","causative କ୍ରିୟାପଦ","","","causative କ୍ରିୟାପଦ","FALSE","","","FALSE","penyebab kata kerja","verba kausatif","","verba kausatif","TRUE","Возбудитель глагол","каузативный глагол","","каузативный глагол","TRUE","使役动词","","","使役动词","FALSE","causative fi'ili","","","causative fi'ili","FALSE","sababishi kitenzi","Kitenzi sababishi","kt.sbb","Kitenzi sababishi","TRUE","ከፔል ግስ","አድራጊ /አስደራጊ ግሥ","","አድራጊ /አስደራጊ ግሥ","TRUE","คำกริยาสาเหตุ","","","คำกริยาสาเหตุ","FALSE","kata kerja kausatif","kata kerja kausatif","","kata kerja kausatif","TRUE","causative verb","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"verb suffix","v.suff","v.suff","sufijo verbal","sufijo verbal","suf.v","sufijo verbal","TRUE","verbo sufixo","sufixo verbal","","sufixo verbal","TRUE","suffixe verbe","suffixe verbal","suff. v. ","suffixe verbal","TRUE","פועל סיומת","סופית לפועל","","סופית לפועל","TRUE","الفعل لاحقة","لواحق الفعل الأخيرة","","لواحق الفعل الأخيرة","FALSE","क्रिया प्रत्यय","क्रिया प्रत्यय","","क्रिया प्रत्यय","TRUE","ক্রিয়া প্রত্যয়","ক্রিয়া প্রত্যয়","ক্রি.প্র.","ক্রিয়া প্রত্যয়","TRUE","କ୍ରିୟାପଦ ପରପଦ","","","କ୍ରିୟାପଦ ପରପଦ","FALSE","","","FALSE","kata kerja akhiran","sufiks verba","","sufiks verba","TRUE","глагол суффикс","глагольный суффикс","","глагольный суффикс","TRUE","动词后缀","","","动词后缀","FALSE","fi'ili kari na baya baki","","","fi'ili kari na baya baki","FALSE","kitenzi suffix","Kiambishi tamati cha kitenzi","ka.tm.kt","Kiambishi tamati cha kitenzi","TRUE","ግስ ቅጥያ","የግሥ ባዕድ መድረሻ","","የግሥ ባዕድ መድረሻ","TRUE","คำต่อท้ายกริยา","","","คำต่อท้ายกริยา","FALSE","Suffix kata kerja.","akhiran kata kerja","","akhiran kata kerja","TRUE","pandiwa suffix","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"noun suffix","n.suff","n.suff","sustantivo sufijo","sufijo sustantivo","suj.s","sufijo sustantivo","TRUE","substantivo sufixo","sufixo nominal","","sufixo nominal","TRUE","nom suffixe","suffixe nominal ","suff. n.","suffixe nominal ","TRUE","עצם סיומת","סופית לשם עצם","","סופית לשם עצם","TRUE","إسم احقة","لواحق الاسم الأخيرة","","لواحق الاسم الأخيرة","FALSE","संज्ञा प्रत्यय","संज्ञा प्रत्यय","","संज्ञा प्रत्यय","TRUE","বিশেষ্য প্রত্যয়","বিশেষ্য প্রত্যয়","বি.প্র.","বিশেষ্য প্রত্যয়","TRUE","ବିଶେଷ୍ୟ ପରପଦ","","","ବିଶେଷ୍ୟ ପରପଦ","FALSE","","","FALSE","kata benda akhiran","sufiks nomina","","sufiks nomina","TRUE","существительное суффикс","суффикс существительного","","суффикс существительного","TRUE","名词后缀","","","名词后缀","FALSE","suna kari na baya baki","","","suna kari na baya baki","FALSE","nomino suffix","Kiambishi tamati cha nomino","ka.tm.nm","Kiambishi tamati cha nomino","TRUE","ስም ቅጥያ","የስም ባዕድ መድረሻ","","የስም ባዕድ መድረሻ","TRUE","คำนามคำนาม","","","คำนามคำนาม","FALSE","kata akhiran kata nama","akhiran kata nama","","akhiran kata nama","TRUE","pangngalan suffix","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"noun prefix","n.pref","n.pref","sustantivo prefijo","prefijo de sustantivo","pref.s","prefijo de sustantivo","TRUE","substantivo prefixo","prefixo nominal","","prefixo nominal","TRUE","nom préfixe","préfixe nominal","préf. n. ","préfixe nominal","TRUE","עצם קידומת","תחילית לשם עצם","","תחילית לשם עצם","TRUE","إسم البادئة","لواحق الاسم الاستهلالية","","لواحق الاسم الاستهلالية","FALSE","संज्ञा उपसर्ग","संज्ञा उपसर्ग","","संज्ञा उपसर्ग","TRUE","বিশেষ্য উপসর্গ","বিশেষ্য উপসর্গ","বি.উপ.","বিশেষ্য উপসর্গ","TRUE","ବିଶେଷ୍ୟ ପୂର୍ବପଦ","","","ବିଶେଷ୍ୟ ପୂର୍ବପଦ","FALSE","","","FALSE","kata benda awalan","prefiks nomina","","prefiks nomina","TRUE","существительное префикс","префикс существительного","","префикс существительного","TRUE","名词前缀","","","名词前缀","FALSE","suna prefix","","","suna prefix","FALSE","nomino kiambishi awali","Kiambishiawali cha nomino","kaw.nm","Kiambishiawali cha nomino","TRUE","ስም ቅጥያ","የስም ባዕድ መነሻ","","የስም ባዕድ መነሻ","TRUE","คำนามคำนาม","","","คำนามคำนาม","FALSE","kata nama awalan","awalan kata nama","","awalan kata nama","TRUE","Pangngalan: Prefix","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"verb prefix","v.pref","v.pref","verbo prefijo","prefijo verbal","pref.v","prefijo verbal","TRUE","verbo prefixo","prefixo verbal","","prefixo verbal","TRUE","préfixe verbe","préfixe verbal","préf. v.","préfixe verbal","TRUE","הפועל קידומת","תחילית לפועל","","תחילית לפועל","TRUE","الفعل بادئة","لواحق الفعل الاستهلالية","","لواحق الفعل الاستهلالية","FALSE","क्रिया उपसर्ग","क्रिया उपसर्ग","","क्रिया उपसर्ग","TRUE","ক্রিয়া উপসর্গ","ক্রিয়া উপসর্গ","ক্রি.উপ.","ক্রিয়া উপসর্গ","TRUE","କ୍ରିୟାପଦ ପୂର୍ବପଦ","","","କ୍ରିୟାପଦ ପୂର୍ବପଦ","FALSE","","","FALSE","kata kerja awalan","prefiks verba","","prefiks verba","TRUE","глагол префикс","глагольный префикс","","глагольный префикс","TRUE","动词前缀","","","动词前缀","FALSE","fi'ili prefix","","","fi'ili prefix","FALSE","kitenzi kiambishi awali","Kiambishiawali cha kitenzi","kaw.kt","Kiambishiawali cha kitenzi","TRUE","ግስ ቅድመ ቅጥያ","የግሥ ባዕድ መነሻ","","የግሥ ባዕድ መነሻ","TRUE","คำนำหน้าคำกริยา","","","คำนำหน้าคำกริยา","FALSE","awalan kata kerja.","awalan kata kerja","","awalan kata kerja","TRUE","Previx Previx.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"ideophone (onomatoepia / expressives)","ideo","ideo","ideófono (onomatoepia / expresivos)","ideófono (onomatopeya / expresivos)","ideo","ideófono (onomatopeya / expresivos)","TRUE","ideofone (onomatoepia / expressivos)","Ideofones (onomatopeias/expressivos)","","Ideofones (onomatopeias/expressivos)","TRUE","idéophone (onomatoepia / expressives)","idéophone (onomatopée / expressif)","idéo. ","idéophone (onomatopée / expressif)","TRUE","ideophone (onomatoepia / expressives)","אידאופון או אונומטופיאה","","אידאופון או אונומטופיאה","TRUE","ideophone (onomatoepia / expressives)","المحاكاة الصوتية","","المحاكاة الصوتية","FALSE","ideophone (onomatoepia / expressives)","भावस्वन (अनुकरणात्मक / अभिव्यंजक)","","भावस्वन (अनुकरणात्मक / अभिव्यंजक)","TRUE","ideophone (onomatoepia / expressives)","ধ্বন্যাত্মক শব্দ","ধ্বন.","ধ্বন্যাত্মক শব্দ","TRUE","ideophone (onomatoepia / expressives)","","","ideophone (onomatoepia / expressives)","FALSE","","","FALSE","ideofon (onomatoepia / ekspresif)","Ideofon (Onomatope/ekspresif)","","Ideofon (Onomatope/ekspresif)","TRUE","идеофон (onomatoepia / Артисты)","идеофон (звукоподражание / экспрессив)","","идеофон (звукоподражание / экспрессив)","TRUE","形声(onomatoepia /表述语言)","","","形声(onomatoepia /表述语言)","FALSE","ideophone (onomatoepia / expressives)","","","ideophone (onomatoepia / expressives)","FALSE","ideophone (onomatoepia / expressives)","Idiofoni (onomatopia) / vielezi hisia","idfn (onm / vlhs","Idiofoni (onomatopia) / vielezi hisia","TRUE","ideophone (onomatoepia / expressives)","ቃል አጋኖ","","ቃል አጋኖ","TRUE","อุดมการณ์ (Onomatoepia / การแสดงออก)","","","อุดมการณ์ (Onomatoepia / การแสดงออก)","FALSE","Ideophone (Onomoepia / Expressif)","ideofon (onomatopeia / ekspresif)","","ideofon (onomatopeia / ekspresif)","TRUE","iDophone (onomatoepia / expressives)","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"classifier","clf","clf","clasificador","clasificador","clf","clasificador","TRUE","classificador","classificador","","classificador","TRUE","classificateur","classificateur","class.","classificateur","TRUE","מְמַיֵן","מילת סיווג","","מילת סיווג","FALSE","مصنف","أداة التصنيف","","أداة التصنيف","FALSE","वर्गीकारक","वर्गक, वर्गीकारक","","वर्गक, वर्गीकारक","TRUE","ক্লাসিফায়ার","শ্রেণ্যায়ক","শ্রেণ.","শ্রেণ্যায়ক","TRUE","କ୍ଲାସିଫାୟର୍","","","କ୍ଲାସିଫାୟର୍","FALSE","","","FALSE","penggolong","penggolong","","penggolong","TRUE","классификатор","","","классификатор","TRUE","分类","","","分类","FALSE","classifier","","","classifier","FALSE","classifier","Kiainishi","kia","Kiainishi","TRUE","ክላሲፋየር","መመደቢያ","","መመደቢያ","TRUE","ลักษณนาม","","","ลักษณนาม","FALSE","classifier.","penjodoh bilangan","","penjodoh bilangan","TRUE","Classifier.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"tense marker","tns","tns","marcador tensa","marcador de tiempo","m.tiemp","marcador de tiempo","TRUE","marcador tenso","marca de tempo","","marca de tempo","TRUE","marqueur tendu","marqueur de tension","tens.","marqueur de tension","TRUE","סמן מתוח","סמן זמן (דקדוקי)","","סמן זמן (דקדוקי)","TRUE","علامة متوترة","صيغة زمن الفعل","","صيغة زمن الفعل","FALSE","तनाव मार्कर","काल चिह्न","","काल चिह्न","TRUE","কাল মার্কার","কালবাচক চিহ্ন","কাল চি.","কালবাচক চিহ্ন","TRUE","କ୍ରିୟାର କାଳ ଚିହ୍ନଟକ","","","କ୍ରିୟାର କାଳ ଚିହ୍ନଟକ","FALSE","","","FALSE","penanda tegang","pemarkah kala","","pemarkah kala","TRUE","напряженный маркер","временной маркер","","временной маркер","TRUE","紧张的标志","","","紧张的标志","FALSE","siga alama","","","siga alama","FALSE","wasiwasi marker","Kitambulishi njeo","kinj","Kitambulishi njeo","TRUE","የተካረረ ማድረጊያ","የጊዜ አመልካች","","የጊዜ አመልካች","TRUE","ตึง","","","ตึง","FALSE","penanda tegang","penanda kala","","penanda kala","TRUE","tense marker.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"aspect marker","asp","asp","marcador de aspecto","marcador de aspecto","asp","marcador de aspecto","TRUE","marcador de aspecto","marca de aspecto","","marca de aspecto","TRUE","marqueur d'aspect","marqueur d'aspect","asp.","marqueur d'aspect","TRUE","היבט סמן","סמן אספקט (היבט)","","סמן אספקט (היבט)","TRUE","الجانب علامة","صيغة هيئة الفعل","","صيغة هيئة الفعل","FALSE","पहलू मार्कर","पक्ष चिह्न","","पक्ष चिह्न","TRUE","দৃষ্টিভঙ্গি মার্কার","প্রকার চিহ্ন","প্রক.চি.","প্রকার চিহ্ন","TRUE","ଆଶାତିତ ଚିହ୍ନଟକ","","","ଆଶାତିତ ଚିହ୍ନଟକ","FALSE","","","FALSE","aspek penanda","pemarkah aspek","","pemarkah aspek","TRUE","аспект маркера","видовой маркер","","видовой маркер","TRUE","体标记","","","体标记","FALSE","al'amari alama","","","al'amari alama","FALSE","kipengele marker","Kitambulishi cha njeohali","kinjh","Kitambulishi cha njeohali","TRUE","ገጽታ ምልክት ማድረጊያ","የስልት አመልካች","","የስልት አመልካች","TRUE","เครื่องหมายด้าน","","","เครื่องหมายด้าน","FALSE","aspek penanda","penanda aspek","","penanda aspek","TRUE","aspeto marker.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"mood marker","mod","mod","marcador de estado de ánimo","indicador de modo","mod","indicador de modo","TRUE","humor marcador","marca de modo","","marca de modo","TRUE","marqueur d'humeur","marqueur d'humeur","hum.","marqueur d'humeur","TRUE","מצב רוח סמן","סמן מודוס (דרך)","","סמן מודוס (דרך)","TRUE","المزاج علامة","صيغة حالة الفعل","","صيغة حالة الفعل","FALSE","मूड मार्कर","वृति चिह्न","","वृति चिह्न","TRUE","মেজাজ মার্কার","ক্রিয়াভাব চিহ্ন","ক্রিভা.চি.","ক্রিয়াভাব চিহ্ন","TRUE","Mood ଚିହ୍ନଟକ","","","Mood ଚିହ୍ନଟକ","FALSE","","","FALSE","suasana hati penanda","pemarkah modus","","pemarkah modus","TRUE","настроение маркер","залоговый маркер","","залоговый маркер","TRUE","心情标志","","","心情标志","FALSE","yanayi alama","","","yanayi alama","FALSE","mood marker","Kitambulishi dhamira","kidh","Kitambulishi dhamira","TRUE","የስሜት ማድረጊያ","የስልት አመልካች","","የስልት አመልካች","TRUE","Mood Marker","","","Mood Marker","FALSE","mood mood.","penanda suasana","","penanda suasana","TRUE","Mood marker.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"noun class marker","n.cls","n.cls","marcador de la clase del sustantivo","marcador de clase de sustantivo","s.cls","marcador de clase de sustantivo","TRUE","marcador classe substantivo","marca de classe nominal","","marca de classe nominal","TRUE","nom marqueur de classe","marqueur de classe nominale","cl. nom.","marqueur de classe nominale","TRUE","סמן בכיתת עצם","סמן קבוצת שמות עצם","","סמן קבוצת שמות עצם","TRUE","علامة الدرجة الاسمية","علامة إعراب فئة الأسماء","ف.س.","علامة إعراب فئة الأسماء","FALSE","संज्ञा वर्ग मार्कर","संज्ञा वर्ग चिह्न","","संज्ञा वर्ग चिह्न","TRUE","বিশেষ্য শ্রেণী মার্কার","নাম-শব্দ চিহ্ন","নাম চি.","নাম-শব্দ চিহ্ন","TRUE","ବିଶେଷ୍ୟ ଶ୍ରେଣୀ ଚିହ୍ନଟକ","","","ବିଶେଷ୍ୟ ଶ୍ରେଣୀ ଚିହ୍ନଟକ","FALSE","","","FALSE","kata benda kelas penanda","pemarkah kelas nomina","","pemarkah kelas nomina","TRUE","существительное класса маркер","маркер именного класса","","маркер именного класса","TRUE","名词类别标记","","","名词类别标记","FALSE","suna aji alama","","","suna aji alama","FALSE","nomino marker darasa","Kibainishi cha Ngeli nomino","kb.nm","Kibainishi cha Ngeli nomino","TRUE","ስም ክፍል ማድረጊያ","የስም ክፍል አመልካች","","የስም ክፍል አመልካች","TRUE","เครื่องหมายคำนาม","","","เครื่องหมายคำนาม","FALSE","Noun Class Marker.","penanda golongan kata nama","","penanda golongan kata nama","TRUE","Pangngalan: Class Marker.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"quotative","quot","quot","de citación","cuotativo","cuot","cuotativo","TRUE","quotative","quotativo","","quotativo","TRUE","quotative","quotatif","quot.","quotatif","TRUE","quotative","סממן ציטוט או דיבור ישיר","","סממן ציטוט או דיבור ישיר","TRUE","quotative","استشهادي/ مقتبَس","ع تنص","استشهادي/ مقتبَس","FALSE","quotative","उद्धरण","","उद्धरण","TRUE","quotative","উক্তিমূলক","উ.মূ.","উক্তিমূলক","TRUE","quotative","","","quotative","FALSE","","","FALSE","quotative","kuotatif","","kuotatif","TRUE","квотатив","","","квотатив","TRUE","quotative","","","quotative","FALSE","quotative","","","quotative","FALSE","quotative","Kinukuu","kn","Kinukuu","TRUE","quotative","ብለት","","ብለት","TRUE","เกี่ยวกับคำพูด","","","เกี่ยวกับคำพูด","FALSE","kutipan","kata petikan","","kata petikan","TRUE","Sipi","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"adposition","adp","adp","adposición","adposición","adpos","adposición","TRUE","adposition","adposição","","adposição","TRUE","adposition","adposition","adpos.","adposition","TRUE","adposition","מילת יחס","","מילת יחס","TRUE","adposition","حرف مساند","ح. ج.","حرف مساند","FALSE","adposition","","","adposition","FALSE","adposition","সংসর্গ","সংস.","সংসর্গ","TRUE","adposition","","","adposition","FALSE","","","FALSE","adposition","adposisi","","adposisi","TRUE","Позиция объявления","предлог / послелог","","предлог / послелог","TRUE","adposition","","","adposition","FALSE","adposition","","","adposition","FALSE","adposition","Kihusishi","kh","Kihusishi","TRUE","adposition","መስተዋድድ","","መስተዋድድ","TRUE","การ adposition","","","การ adposition","FALSE","adposition.","kata sendi nama","","kata sendi nama","TRUE","Adposition.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"definite article","def","def","artículo determinado","artículo definido","déf","artículo definido","TRUE","artigo definido","artigo definido","","artigo definido","TRUE","article défini","article défini","art. déf.","article défini","TRUE","ה""א הידיעה","תווית מיידעת","","תווית מיידעת","TRUE","أداة التعريف","أداة التعريف","أد. تعر.","أداة التعريف","FALSE","निश्चित लेख","निश्चायक उपपद","","निश्चायक उपपद","TRUE","নির্দিষ্ট নিবন্ধ","নির্দিষ্ট নির্দেশক","নিদ. নি.","নির্দিষ্ট নির্দেশক","TRUE","ନିର୍ଦ୍ଦିଷ୍ଟ ପ୍ରବନ୍ଧ","","","ନିର୍ଦ୍ଦିଷ୍ଟ ପ୍ରବନ୍ଧ","FALSE","","","FALSE","Artikel yang pasti","artikel definit","","artikel definit","TRUE","определенный артикль","","","определенный артикль","TRUE","定冠词","","","定冠词","FALSE","tabbataccen labarin","","","tabbataccen labarin","FALSE","Nakala sahihi","Kibainishi bayana","kb.by","Kibainishi bayana","TRUE","ጠቃሽ","ዕምር አመልካች","","ዕምር አመልካች","TRUE","บทความที่แน่นอน","","","บทความที่แน่นอน","FALSE","Pasangan yang pasti","kata sandang pasti","","kata sandang pasti","TRUE","Tiyak na artikulo","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"indefinite article","indf","indf","articulo indefinido","artículo indefinido","indf","artículo indefinido","TRUE","artigo indefinido","artigo indefinido","","artigo indefinido","TRUE","article indéfini","article indéfini","art. indéf.","article indéfini","TRUE","מאמר לא החלטי","תווית בלתי-מיידעת","","תווית בלתי-מיידעת","TRUE","اداة نكرة","أداة النكرة","أد. تنك.","أداة النكرة","FALSE","अनिश्चितकालीन लेख","अनिश्चायक उपपद","","अनिश्चायक उपपद","TRUE","অনির্দিষ্ট নিবন্ধ","অনির্দিষ্ট আর্টিকেল","অনিদ.নি.","অনির্দিষ্ট আর্টিকেল","TRUE","ଅନିର୍ଦ୍ଦିଷ୍ଟ ପ୍ରବନ୍ଧ","","","ଅନିର୍ଦ୍ଦିଷ୍ଟ ପ୍ରବନ୍ଧ","FALSE","","","FALSE","kata sandang tak tertentu","artikel indefinit","","artikel indefinit","TRUE","неопределенный артикль","","","неопределенный артикль","TRUE","不定冠词","","","不定冠词","FALSE","m labarin","","","m labarin","FALSE","nakala isiyo","Kibainishi fiche","kbf","Kibainishi fiche","TRUE","ያልተወሰነ አንቀጽ","ኢዕምር አመልካች","","ኢዕምር አመልካች","TRUE","บทความไม่มีกำหนด","","","บทความไม่มีกำหนด","FALSE","Perkara yang tidak terbatas","kata sandang tidak pasti","","kata sandang tidak pasti","TRUE","indefinite article.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"indefinite pronoun","indfpro","indfpro","pronombre indefinido","pronombre indefinido","indf","pronombre indefinido","TRUE","pronome indefinido","pronome indefinido","","pronome indefinido","TRUE","pronom indéfini","pronom indéfini","pr. indéf.","pronom indéfini","TRUE","כנוי ללא הגבלת זמן","כינוי גוף בלתי-מיידע","","כינוי גוף בלתי-מיידע","TRUE","ضمير نكرة","ضمير نكرة","ضم. نك.","ضمير نكرة","FALSE","अनिश्चितकालीन सर्वनाम","अनिश्चयवाचक सर्वनाम","","अनिश्चयवाचक सर्वनाम","TRUE","অনির্দিষ্ট সর্বনাম","অনির্দেশক সর্বনা্ম","অনি.সর্ব.","অনির্দেশক সর্বনা্ম","TRUE","ଅନିର୍ଦ୍ଦିଷ୍ଟ ବିଶେଷଣ","","","ଅନିର୍ଦ୍ଦିଷ୍ଟ ବିଶେଷଣ","FALSE","","","FALSE","kata ganti tak tentu","pronomina indefinit","","pronomina indefinit","TRUE","неопределенный местоимение","неопределенное местоимение","","неопределенное местоимение","TRUE","不定代词","","","不定代词","FALSE","m wakilin suna","","","m wakilin suna","FALSE","muda usiojulikana kiwakilishi","Kiwakilishi jumla","kwj","Kiwakilishi jumla","TRUE","ያልተወሰነ ተውላጠ ስም","ኢዕምር ተውላጠስም","","ኢዕምር ተውላጠስም","TRUE","สรรพนามไม่ จำกัด","","","สรรพนามไม่ จำกัด","FALSE","kata ganti biasa","kata ganti nama tak tentu","","kata ganti nama tak tentu","TRUE","indefinite pronoun.","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" \ No newline at end of file diff --git a/scripts/Semantic-Domains.csv b/scripts/Semantic-Domains.csv new file mode 100644 index 000000000..e53a7ad6b --- /dev/null +++ b/scripts/Semantic-Domains.csv @@ -0,0 +1,245 @@ +"en","key","Spanish","write-in","es","✓","Portuguese","write-in","pt","✓","French","write-in","fr","✓","Hebrew","write-in","he","✓","Arabic","write-in","ar","✓","Hindi","write-in","hi","✓","Bengali","write-in","bn","✓","Oriya","write-in","or","✓","Assamese","as","✓","Indonesian","write-in","id","✓","Russian","write-in","ru","✓","Mandarin Chinese (simplified)","write-in","zh","✓","Hausa","write-in","ha","✓","Swahili","write-in","sw","✓","Amharic","write-in","am","✓","Malay","write-in","ms","✓","Filipino","write-in","fil","✓","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Universe and the natural world","1","Universo y el mundo natural","El universo y el mundo natural","El universo y el mundo natural","TRUE","Universo e do mundo natural","Universo e o mundo natural","Universo e o mundo natural","TRUE","Univers et le monde naturel","L'univers et le monde naturel","L'univers et le monde naturel","TRUE","היקום ואת עולם הטבע","היקום ועולם הטבע","היקום ועולם הטבע","TRUE","الكون والعالم الطبيعي","الكون والعالم الطبيعي","الكون والعالم الطبيعي","FALSE","ब्रह्मांड और प्राकृतिक दुनिया","","ब्रह्मांड और प्राकृतिक दुनिया","FALSE","ইউনিভার্স এবং প্রাকৃতিক বিশ্বের","মহাবিশ্ব এবং প্রাকৃতিক বিশ্ব","মহাবিশ্ব এবং প্রাকৃতিক বিশ্ব","TRUE","ବିଶ୍ବ ଏବଂ ପ୍ରାକୃତିକ ସାରା","","ବିଶ୍ବ ଏବଂ ପ୍ରାକୃତିକ ସାରା","FALSE","","","FALSE","Alam semesta dan alam","Jagat raya dan alam","Jagat raya dan alam","TRUE","Вселенная и мир природы","","Вселенная и мир природы","TRUE","宇宙和自然世界","","宇宙和自然世界","FALSE","Sãsanni da kuma cikin halitta duniya","","Sãsanni da kuma cikin halitta duniya","FALSE","Universe na ulimwengu wa asili","Ulimwengu na dunia ya asili","Ulimwengu na dunia ya asili","TRUE","አጽናፈ ዓለም እና ተፈጥሮአዊው ዓለም","አጽናፈ ሰማይ እና የተፈጥሮ ዓለም","አጽናፈ ሰማይ እና የተፈጥሮ ዓለም","FALSE","Universe dan dunia semulajadi","Alam semesta dan alam sekitar","Alam semesta dan alam sekitar","TRUE","Uniberso at ang natural na mundo","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sky, weather and climate","1.1","Cielo, tiempo y el clima","Cielo, tiempo y clima","Cielo, tiempo y clima","TRUE","Céu, tempo e do clima","Céu, temperatura e clima","Céu, temperatura e clima","TRUE","Ciel, la météo et le climat","Le ciel, le temps et le climat","Le ciel, le temps et le climat","TRUE","סקיי, מזג אוויר ואקלים","שמים, מזג אוויר ואקלים","שמים, מזג אוויר ואקלים","TRUE","السماء، والطقس والمناخ","السماء والطقس والمناخ","السماء والطقس والمناخ","FALSE","आकाश, मौसम और जलवायु","","आकाश, मौसम और जलवायु","FALSE","আকাশ, আবহাওয়া এবং জলবায়ু","আকাশ, আবহাওয়া এবং জলবায়ু","আকাশ, আবহাওয়া এবং জলবায়ু","TRUE","ଆକାଶ, ପାଣିପାଗ ଓ ଜଳବାୟୁ","","ଆକାଶ, ପାଣିପାଗ ଓ ଜଳବାୟୁ","FALSE","","","FALSE","Sky, cuaca dan iklim","Langit, cuaca, dan iklim","Langit, cuaca, dan iklim","TRUE","Небо, погода и климат","","Небо, погода и климат","TRUE","天空,天气和气候","","天空,天气和气候","FALSE","Sky, weather da kuma sauyin yanayi","","Sky, weather da kuma sauyin yanayi","FALSE","Anga, hali ya hewa na hali ya hewa","Anga, hali ya hewa na mabadiliko ya hali ya hewa","Anga, hali ya hewa na mabadiliko ya hali ya hewa","TRUE","Sky, የአየር ሁኔታ እና የአየር ንብረት","Sky, የአየር ሁኔታ እና የአየር ንብረት","Sky, የአየር ሁኔታ እና የአየር ንብረት","TRUE","Langit, cuaca dan iklim","Langit, cuaca dan iklim","Langit, cuaca dan iklim","TRUE","Kalangitan, panahon at klima","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Earth, geology and landscape","1.2","Tierra, geología y el paisaje","Tierra, geología y paisaje","Tierra, geología y paisaje","TRUE","Terra, geologia e paisagem","Terra, geologia e paisagem","Terra, geologia e paisagem","TRUE","Terre, la géologie et le paysage","La Terre, la géologie et le paysage","La Terre, la géologie et le paysage","TRUE","כדור הארץ, גיאולוגיה ונוף","כדור הארץ, אדמה, שטח ונוף","כדור הארץ, אדמה, שטח ונוף","TRUE","الأرض والجيولوجيا والمناظر الطبيعية","الأرض والجيولوجيا والمناظر الطبيعية","الأرض والجيولوجيا والمناظر الطبيعية","FALSE","पृथ्वी, भूविज्ञान और परिदृश्य","","पृथ्वी, भूविज्ञान और परिदृश्य","FALSE","পৃথিবী, ভূতত্ত্ব এবং ল্যান্ডস্কেপ","পৃথিবী, ভূতত্ত্ব এবং ভূদৃশ্য","পৃথিবী, ভূতত্ত্ব এবং ভূদৃশ্য","TRUE","ପୃଥିବୀ, ଭୂତତ୍ତ୍ବ ଏବଂ ଦୃଶ୍ୟପଟ୍ଟରେ","","ପୃଥିବୀ, ଭୂତତ୍ତ୍ବ ଏବଂ ଦୃଶ୍ୟପଟ୍ଟରେ","FALSE","","","FALSE","Bumi, geologi dan lanskap","Bumi, geologi, dan bentang alam","Bumi, geologi, dan bentang alam","TRUE","Земля, геология и пейзаж","Земля, геология и ландшафт","Земля, геология и ландшафт","TRUE","地球,地质和景观","","地球,地质和景观","FALSE","Duniya, a fannin binciken kasa da kuma wuri mai faɗi","","Duniya, a fannin binciken kasa da kuma wuri mai faɗi","FALSE","Dunia, geologi na mazingira","Dunia, jiolojia na sura ya nchi","Dunia, jiolojia na sura ya nchi","TRUE","ምድር, ጂኦሎጂ እና የመሬት ገጽታ","ምድር፣ ጂኦሎጂ እና የመሬትአቀማመጥ","ምድር፣ ጂኦሎጂ እና የመሬትአቀማመጥ","TRUE","Bumi, geologi dan landskap","Bumi, geologi dan landskap","Bumi, geologi dan landskap","TRUE","Earth, Geology and Landscape.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Water, bodies of water and the water cycle","1.3","Agua, cuerpos de agua y el ciclo del agua","Agua, masas de agua y ciclo del agua","Agua, masas de agua y ciclo del agua","TRUE","Água, massas de água e o ciclo de água","Água, massas de água e ciclo de água","Água, massas de água e ciclo de água","TRUE","Eau, plans d'eau et le cycle de l'eau","L'eau, les masses d'eau et le cycle de l'eau","L'eau, les masses d'eau et le cycle de l'eau","TRUE","מים, גופי מי מחזור המים","גופי מים ומחזור המים","גופי מים ומחזור המים","TRUE","المياه والمسطحات المائية ودورة المياه","المياه والمسطحات المائية ودورة المياه","المياه والمسطحات المائية ودورة المياه","FALSE","जल, जल निकायों और जल चक्र","","जल, जल निकायों और जल चक्र","FALSE","পানি, পানির সংস্থা এবং জল চক্র","জল, জলাশয় এবং জলচক্র","জল, জলাশয় এবং জলচক্র","TRUE","ଜଳ, ଜଳ ଶରୀର ଓ ଜଳଚକ୍ର","","ଜଳ, ଜଳ ଶରୀର ଓ ଜଳଚକ୍ର","FALSE","","","FALSE","Air, badan air dan siklus air","Air, badan air, dan siklus air","Air, badan air, dan siklus air","TRUE","Вода, водоемы и круговорот воды","Вода, водоемы и круговорот воды","Вода, водоемы и круговорот воды","TRUE","水,水体和水的循环","","水,水体和水的循环","FALSE","Ruwa, jikin ruwa da kuma ruwan sake zagayowar","","Ruwa, jikin ruwa da kuma ruwan sake zagayowar","FALSE","Maji, miili ya maji na mzunguko wa maji","Maji, sehemu zenye maji na mzunguko wa maji","Maji, sehemu zenye maji na mzunguko wa maji","TRUE","ውሃ, የውሃ አካላት እና የውሃ ዑደት","ውሃ, የውሃ አካላት እና የውሃ ዑደት","ውሃ, የውሃ አካላት እና የውሃ ዑደት","TRUE","Air, badan air dan kitaran air","Air, jasad air dan kitaran air","Air, jasad air dan kitaran air","TRUE","Tubig, katawan ng tubig at ang cycle ng tubig.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Plants, trees and other vegetation","1.4","Plantas, árboles y otra vegetación","Plantas, árboles y otra vegetación","Plantas, árboles y otra vegetación","TRUE","Plantas, árvores e outras vegetações","Plantas, árvores e outras vegetações","Plantas, árvores e outras vegetações","TRUE","Les plantes, les arbres et autres végétaux","Les plantes, les arbres et la végétation","Les plantes, les arbres et la végétation","TRUE","צמחים, עצים וצמחייה אחרת","צמחים, עצים, צמחייה","צמחים, עצים, צמחייה","TRUE","النباتات والأشجار وغيرها من النباتات","المزروعات والأشجار والحياة النباتية الأخرى","المزروعات والأشجار والحياة النباتية الأخرى","FALSE","पौधे, पेड़ और अन्य वनस्पतियों","","पौधे, पेड़ और अन्य वनस्पतियों","FALSE","চারাগাছ, গাছপালা ও অন্যান্য গাছপালা","উদ্ভিদ, গাছ এবং অন্যান্য উদ্ভিদসমূহ","উদ্ভিদ, গাছ এবং অন্যান্য উদ্ভিদসমূহ","TRUE","ଉଦ୍ଭିଦ, ବୃକ୍ଷ ଓ ଅନ୍ୟାନ୍ୟ vegetation","","ଉଦ୍ଭିଦ, ବୃକ୍ଷ ଓ ଅନ୍ୟାନ୍ୟ vegetation","FALSE","","","FALSE","Tanaman, pohon dan vegetasi lainnya","Tanaman, pohon, and tumbuhan lainnya","Tanaman, pohon, and tumbuhan lainnya","TRUE","Растения, деревья и другая растительность","","Растения, деревья и другая растительность","TRUE","植物,树木和其他植物","","植物,树木和其他植物","FALSE","Shuke-shuke da bishiyoyi da sauran ciyayi","","Shuke-shuke da bishiyoyi da sauran ciyayi","FALSE","Mimea, miti na mimea mingine","Mimea, miti na uoto mwingine","Mimea, miti na uoto mwingine","TRUE","እፅዋቶች, ዛፎች እና ሌሎች እፅዋት","እፅዋቶች, ዛፎች እና ሌሎች እፅዋት","እፅዋቶች, ዛፎች እና ሌሎች እፅዋት","TRUE","Tumbuhan, pokok dan tumbuh-tumbuhan lain","Tanaman, pokok-pokok dan tumbuh-tumbuhan lain","Tanaman, pokok-pokok dan tumbuh-tumbuhan lain","TRUE","Mga halaman, mga puno at iba pang mga halaman","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Animals","1.5","animales","Animales","Animales","TRUE","animais","Animais","Animais","TRUE","Animaux","Les animaux","Les animaux","TRUE","חיות","","חיות","TRUE","الحيوانات","الحيوانات","الحيوانات","FALSE","जानवरों","","जानवरों","FALSE","জীবজন্তু","প্রাণী","প্রাণী","TRUE","ପ୍ରାଣୀ","","ପ୍ରାଣୀ","FALSE","","","FALSE","hewan","Hewan","Hewan","TRUE","животные","","животные","TRUE","动物","","动物","FALSE","Animals","","Animals","FALSE","Wanyama","Wanyama","Wanyama","TRUE","እንስሳት","እንስሳት","እንስሳት","TRUE","Haiwan","Haiwan","Haiwan","TRUE","Mga Hayop.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Colors","1.6","Colores","Colores","Colores","TRUE","cores","Cores","Cores","TRUE","Couleurs","Les couleurs","Les couleurs","TRUE","צבעים","","צבעים","TRUE","الألوان","الألوان","الألوان","FALSE","रंग की","","रंग की","FALSE","রং","রঙ","রঙ","TRUE","ରଙ୍ଗ","","ରଙ୍ଗ","FALSE","","","FALSE","warna","Warna","Warna","TRUE","Цвета","","Цвета","TRUE","颜色","","颜色","FALSE","launuka","","launuka","FALSE","rangi","Rangi","Rangi","TRUE","ቀለሞች","ቀለሞች","ቀለሞች","TRUE","Warna","Warna","Warna","TRUE","Kulay","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Birds","1.7","Aves","Aves","Aves","TRUE","aves","Pássaros","Pássaros","TRUE","Des oiseaux","Les oiseaux","Les oiseaux","TRUE","ציפור","ציפורים","ציפורים","TRUE","الطيور","الطيور","الطيور","FALSE","पक्षियों","","पक्षियों","FALSE","পাখি","পাখি","পাখি","TRUE","ପକ୍ଷୀ","","ପକ୍ଷୀ","FALSE","","","FALSE","Burung-burung","Burung-burung","Burung-burung","TRUE","птицы","","птицы","TRUE","鸟类","","鸟类","FALSE","Birds","","Birds","FALSE","Ndege","Ndege","Ndege","TRUE","ወፎች","ወፎች","ወፎች","TRUE","Burung.","Burung","Burung","TRUE","Mga ibon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Fish and marine creatures","1.8","Peces y criaturas marinas","Peces y vida marina","Peces y vida marina","TRUE","peixes e criaturas marinhas","Peixes e criaturas marinhas","Peixes e criaturas marinhas","TRUE","Poissons et créatures marines","Les poissons et la vie marine","Les poissons et la vie marine","TRUE","יצורי דגים ימיים","דגים ויצורים ימיים","דגים ויצורים ימיים","TRUE","الأسماك والمخلوقات البحرية","الأسماك والكائنات البحرية","الأسماك والكائنات البحرية","FALSE","मछली और समुद्री जीव","","मछली और समुद्री जीव","FALSE","মাছ এবং সামুদ্রিক প্রাণীর","মাছ এবং সামুদ্রিক প্রাণী","মাছ এবং সামুদ্রিক প্রাণী","TRUE","ମାଛ ଓ ସାମୁଦ୍ରିକ ପ୍ରାଣୀ","","ମାଛ ଓ ସାମୁଦ୍ରିକ ପ୍ରାଣୀ","FALSE","","","FALSE","Ikan dan laut makhluk","Ikan dan hewan-hewan laut","Ikan dan hewan-hewan laut","TRUE","Рыба и морские существа","Рыбы и морские существа","Рыбы и морские существа","TRUE","鱼类和海洋生物","","鱼类和海洋生物","FALSE","Kifi da marine halittun","","Kifi da marine halittun","FALSE","Samaki na bahari viumbe","Samaki na viumbe vya baharini","Samaki na viumbe vya baharini","TRUE","የዓሳ እና የባህር ፍጥረታት","የዓሳ እና የባህር ፍጥረታት","የዓሳ እና የባህር ፍጥረታት","TRUE","Makhluk Ikan dan Marin","Ikan dan makhluk laut","Ikan dan makhluk laut","TRUE","Isda at marine nilalang.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Insects and small creatures","1.9","Insectos y pequeños animales","Insectos y pequeñas criaturas","Insectos y pequeñas criaturas","TRUE","Insetos e criaturas pequenas","Insectos e pequenas criaturas ","Insectos e pequenas criaturas ","TRUE","Insectes et petites créatures","Les insectes et les petites bêtes","Les insectes et les petites bêtes","TRUE","חרקים ויצורים קטנים","","חרקים ויצורים קטנים","TRUE","حشرات و مخلوقات صغيرة","الحشرات والكائنات الصغيرة","الحشرات والكائنات الصغيرة","FALSE","कीड़े और छोटे जीव","","कीड़े और छोटे जीव","FALSE","কীটপতঙ্গ এবং ছোট প্রাণীকে","পোকামাকড় এবং ছোট প্রাণী","পোকামাকড় এবং ছোট প্রাণী","TRUE","କୀଟ ଏବଂ ଛୋଟ ପ୍ରାଣୀ","","କୀଟ ଏବଂ ଛୋଟ ପ୍ରାଣୀ","FALSE","","","FALSE","Serangga dan makhluk kecil","Serangga dan hewan-hewan kecil","Serangga dan hewan-hewan kecil","TRUE","Насекомые и маленькие существа","","Насекомые и маленькие существа","TRUE","昆虫","","昆虫","FALSE","Kwari da kuma kananan halittun","","Kwari da kuma kananan halittun","FALSE","Wadudu na viumbe wadogo","Wadudu na viumbe wadogo","Wadudu na viumbe wadogo","TRUE","ነፍሳት እና ትናንሽ ፍጥረታት","ነፍሳት እና ትናንሽ ፍጥረታት","ነፍሳት እና ትናንሽ ፍጥረታት","TRUE","Serangga dan makhluk kecil","Serangga dan makhluk kecil","Serangga dan makhluk kecil","TRUE","Mga insekto at maliliit na nilalang","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Reptiles and amphibians","1.10","Reptiles y anfibios","Reptiles y anfibios","Reptiles y anfibios","TRUE","Répteis e anfíbios","Répteis e Anfíbios","Répteis e Anfíbios","TRUE","Reptiles et amphibies","Les reptiles et les amphibiens","Les reptiles et les amphibiens","TRUE","זוחלים ודו-חיים","","זוחלים ודו-חיים","TRUE","الزواحف والبرمائيات","الزواحف والبرمائيات","الزواحف والبرمائيات","FALSE","सरीसृप और उभयचर","","सरीसृप और उभयचर","FALSE","সরীসৃপ এবং অ্যামফিবিআনস","সরীসৃপ এবং উভচর প্রাণী","সরীসৃপ এবং উভচর প্রাণী","TRUE","ସରୀସୃପ ଏବଂ amphibians","","ସରୀସୃପ ଏବଂ amphibians","FALSE","","","FALSE","Reptil dan amfibi","Reptil dan amfibi","Reptil dan amfibi","TRUE","Рептилии и амфибии","","Рептилии и амфибии","TRUE","爬行动物和两栖动物","","爬行动物和两栖动物","FALSE","Dabbobi masu rarrafe da halittar dabba mai kafafuwa","","Dabbobi masu rarrafe da halittar dabba mai kafafuwa","FALSE","Nyoka na vyura","Wanyama watambaao na viumbe vya majini","Wanyama watambaao na viumbe vya majini","TRUE","ተሳቢ እንስሳት እና አሞሌዎች","ተሳቢ እንስሳት","ተሳቢ እንስሳት","TRUE","Reptilia dan amfibia.","Reptilia dan amfibia","Reptilia dan amfibia","TRUE","Reptilya at amphibians.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Humans, Social Relations and Organization","2","Los seres humanos, las relaciones sociales y la Organización","Humanos, Relaciones Sociales y Organización","Humanos, Relaciones Sociales y Organización","TRUE","Os seres humanos, relações sociais e Organização","Humanos, Relações Sociais e Organização","Humanos, Relações Sociais e Organização","TRUE","Les humains, les relations sociales et de l'Organisation","L'homme, les rapports sociaux et l'organisation sociale","L'homme, les rapports sociaux et l'organisation sociale","TRUE","בני אדם, יחסים חברתיים ארגון","בני אדם, יחסים חברתיים, סדר חברתי והתארגנות","בני אדם, יחסים חברתיים, סדר חברתי והתארגנות","FALSE","البشر، والعلاقات الاجتماعية ومنظمة","البشر، والعلاقات والمنظمات الاجتماعية","البشر، والعلاقات والمنظمات الاجتماعية","FALSE","मनुष्य, सामाजिक संबंधों और संगठन","","मनुष्य, सामाजिक संबंधों और संगठन","FALSE","হিউম্যানস, সামাজিক সম্পর্ক ও সংগঠন","মানুষ, সামাজিক সম্পর্ক এবং সংস্থা","মানুষ, সামাজিক সম্পর্ক এবং সংস্থা","TRUE","ମାନବ, ସାମାଜିକ Relations ଏବଂ ସଂସ୍ଥା","","ମାନବ, ସାମାଜିକ Relations ଏବଂ ସଂସ୍ଥା","FALSE","","","FALSE","Manusia, Hubungan Sosial dan Organisasi","Manusia, Hubungan Sosial dan Organisasi","Manusia, Hubungan Sosial dan Organisasi","TRUE","Люди, социальные отношения и организации","","Люди, социальные отношения и организации","TRUE","人类,社会关系和组织","","人类,社会关系和组织","FALSE","Mutane, Social Relations da kuma Organization","","Mutane, Social Relations da kuma Organization","FALSE","Binadamu, Social Relations na Shirika","Binadamu, Mahusiano ya Kijamii na Taasisi","Binadamu, Mahusiano ya Kijamii na Taasisi","TRUE","ሰዎች, ማህበራዊ ግንኙነቶች እና ድርጅት","ሰዎች, ማህበራዊ ግንኙነቶች እና ድርጅት","ሰዎች, ማህበራዊ ግንኙነቶች እና ድርጅት","TRUE","Manusia, Perhubungan Sosial dan Organisasi","Manusia, Hubungan Sosial dan Pertubuhan","Manusia, Hubungan Sosial dan Pertubuhan","TRUE","Mga tao, relasyon sa lipunan at organisasyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Body parts","2.1","Partes del cuerpo","Partes del cuerpo","Partes del cuerpo","TRUE","Partes do corpo","Partes do corpo","Partes do corpo","TRUE","Parties du corps","Les parties du corps","Les parties du corps","TRUE","חלקי גוף","","חלקי גוף","TRUE","أجزاء الجسم","أجزاء الجسم","أجزاء الجسم","FALSE","शरीर के अंग","","शरीर के अंग","FALSE","শরীরের অংশ","শরীরের অংশ","শরীরের অংশ","TRUE","ଶରୀର ଅଂଶ","","ଶରୀର ଅଂଶ","FALSE","","","FALSE","Bagian tubuh","Bagian tubuh","Bagian tubuh","TRUE","Части тела","","Части тела","TRUE","身体部位","","身体部位","FALSE","sassan jiki","","sassan jiki","FALSE","Sehemu za mwili","Sehemu za Mwili","Sehemu za Mwili","TRUE","የሰውነት ክፍሎች","የሰውነት ክፍሎች","የሰውነት ክፍሎች","FALSE","Bahagian badan","Anggota badan","Anggota badan","TRUE","Mga bahagi ng katawan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Body functions","2.2","Las funciones del cuerpo","Las funciones del cuerpo","Las funciones del cuerpo","TRUE","funções do corpo","Funções do corpo","Funções do corpo","TRUE","Les fonctions corporelles","Les fonctions de l'organisme","Les fonctions de l'organisme","TRUE","פונקציות גוף","","פונקציות גוף","TRUE","وظائف الجسم","وظائف الجسم","وظائف الجسم","FALSE","शरीर के कार्यों","","शरीर के कार्यों","FALSE","দেহ ফাংশন","শারীরিক ক্রিয়া","শারীরিক ক্রিয়া","TRUE","ଶରୀର ଫଳନ","","ଶରୀର ଫଳନ","FALSE","","","FALSE","fungsi tubuh","Fungsi tubuh","Fungsi tubuh","TRUE","функции тела","","функции тела","TRUE","身体功能","","身体功能","FALSE","jikin ayyuka","","jikin ayyuka","FALSE","kazi mwili","Kazi za mwili","Kazi za mwili","TRUE","የሰውነት ተግባራት","የሰውነት ተግባራት","የሰውነት ተግባራት","TRUE","Fungsi badan","Fungsi badan","Fungsi badan","TRUE","Mga function ng katawan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Senses and perception","2.3","Sentidos y la percepción","Sentidos y percepción","Sentidos y percepción","TRUE","Sentidos e percepção","Sentidos e percepção","Sentidos e percepção","TRUE","Sens et de la perception","Les sens et la perception","Les sens et la perception","TRUE","החושים והתפיסה","חושים, תחושות ותפיסה","חושים, תחושות ותפיסה","FALSE","الحواس والإدراك","الحواس والإدراك","الحواس والإدراك","FALSE","होश और धारणा","","होश और धारणा","FALSE","অজ্ঞান ও উপলব্ধি","ইন্দ্রিয় এবং উপলব্ধি","ইন্দ্রিয় এবং উপলব্ধি","TRUE","Senses ଏବଂ ଅନୁଭବ କରିବାର ଶକ୍ତି","","Senses ଏବଂ ଅନୁଭବ କରିବାର ଶକ୍ତି","FALSE","","","FALSE","Indera dan persepsi","Indera dan persepsi","Indera dan persepsi","TRUE","Чувства и восприятие","","Чувства и восприятие","TRUE","感官和感知","","感官和感知","FALSE","Hankula da kuma fahimta","","Hankula da kuma fahimta","FALSE","Akili na mtazamo","Hisia na mtazamo","Hisia na mtazamo","TRUE","ስሜቶች እና ግንዛቤ","ስሜቶች እና ግንዛቤ","ስሜቶች እና ግንዛቤ","TRUE","Deria dan persepsi","Deria dan persepsi","Deria dan persepsi","TRUE","Pandama at pandama","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Health, well-being and sickness","2.4","La salud, el bienestar y la enfermedad","Salud, bienestar y enfermedad","Salud, bienestar y enfermedad","TRUE","Saúde, bem-estar e doença","Saúde, bem-estar e doença","Saúde, bem-estar e doença","TRUE","Santé, bien-être et la maladie","La santé, le bien-être et les maladies","La santé, le bien-être et les maladies","TRUE","בריאות, רווחה מחלה","בריאות, רווחה ומחלה/חולי","בריאות, רווחה ומחלה/חולי","FALSE","الصحة والرفاه والمرض","اصحة والعافية والمرض","اصحة والعافية والمرض","FALSE","स्वास्थ्य, खुशहाली और बीमारी","","स्वास्थ्य, खुशहाली और बीमारी","FALSE","স্বাস্থ্য, মঙ্গল এবং অসুস্থতা","স্বাস্থ্য, মঙ্গল এবং অসুস্থতা","স্বাস্থ্য, মঙ্গল এবং অসুস্থতা","TRUE","ସ୍ଵାସ୍ଥ୍ୟ, ଉତ୍ତମ କରାଯାଉଛି ଏବଂ ଅସୁସ୍ଥତା","","ସ୍ଵାସ୍ଥ୍ୟ, ଉତ୍ତମ କରାଯାଉଛି ଏବଂ ଅସୁସ୍ଥତା","FALSE","","","FALSE","Kesehatan, kesejahteraan dan penyakit","Kesehatan, kesejahteraan dan penyakit","Kesehatan, kesejahteraan dan penyakit","TRUE","Здоровье, благополучие и болезни","","Здоровье, благополучие и болезни","TRUE","健康,福祉和疾病","","健康,福祉和疾病","FALSE","Lafiya, da walwala da kuma cuta","","Lafiya, da walwala da kuma cuta","FALSE","Afya, ustawi na ugonjwa","Afya, ustawi na magonjwa","Afya, ustawi na magonjwa","TRUE","ጤና, ደህንነት እና ህመም","ጤና, ደህንነት እና ህመም","ጤና, ደህንነት እና ህመም","TRUE","Kesihatan, Kesejahteraan dan Penyakit","Kesihatan, kesejahteraan dan penyakit","Kesihatan, kesejahteraan dan penyakit","TRUE","Kalusugan, kagalingan at pagkakasakit","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Life stages and rites of passage","2.5","Etapas de la vida y ritos de paso","Etapas de la vida y ritos de iniciación","Etapas de la vida y ritos de iniciación","TRUE","fases da vida e ritos de passagem","Fases da vida e ritos de passagem","Fases da vida e ritos de passagem","TRUE","les étapes de la vie et les rites de passage","Les étapes de la vie et les rites de passage","Les étapes de la vie et les rites de passage","TRUE","שלבי חיים וטקסי חניכה","","שלבי חיים וטקסי חניכה","TRUE","مراحل الحياة وطقوس العبور","مراحل الحياة وطقوس الانتقال من مرحلة إلى أخرى","مراحل الحياة وطقوس الانتقال من مرحلة إلى أخرى","FALSE","जीवन चरणों और पारित होने के संस्कार","","जीवन चरणों और पारित होने के संस्कार","FALSE","লাইফ পর্যায়ে এবং যাযাবর আচার-অনুষ্ঠান","জীবনের পর্যায় এবং উত্তীর্ণের অনুষ্ঠান","জীবনের পর্যায় এবং উত্তীর্ণের অনুষ্ঠান","TRUE","ଜୀବନ ପର୍ଯ୍ଯାୟ ଏବଂ ଲେଖିଲେ ର rites","","ଜୀବନ ପର୍ଯ୍ଯାୟ ଏବଂ ଲେଖିଲେ ର rites","FALSE","","","FALSE","tahap kehidupan dan Ritus peralihan","Tahapan-tahapan kehidupan dan ritus peralihan","Tahapan-tahapan kehidupan dan ritus peralihan","TRUE","Этапы жизни и обряды","Этапы жизни и похоронные обряды","Этапы жизни и похоронные обряды","TRUE","人生阶段,通过仪式","","人生阶段,通过仪式","FALSE","Rayuwa saukarwa da ayyukan hajji na nassi","","Rayuwa saukarwa da ayyukan hajji na nassi","FALSE","hatua ya maisha na ibada ya kifungu","Hatua za maisha na mila","Hatua za maisha na mila","TRUE","የሕይወት ደረጃዎች እና የመከላከያ ሥርዓቶች","ሕይወት ደረጃዎች ","ሕይወት ደረጃዎች ","TRUE","Tahap kehidupan dan upacara laluan","Peringkat-peringkat kehidupan dan upacara penggenapan","Peringkat-peringkat kehidupan dan upacara penggenapan","TRUE","Mga yugto ng buhay at ritwal ng pagpasa","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Kinship and relationships","2.6","Parentesco y las relaciones","Parentesco y relaciones","Parentesco y relaciones","TRUE","Parentesco e relações","Grau de parentesco e relações","Grau de parentesco e relações","TRUE","Parenté et relations","La parenté et les liens familiaux","La parenté et les liens familiaux","TRUE","השארות ויחסים","משפחה ומערכות יחסים","משפחה ומערכות יחסים","FALSE","القرابة والعلاقات","القرابة والعلاقات","القرابة والعلاقات","FALSE","रिश्तेदारी और रिश्तों","","रिश्तेदारी और रिश्तों","FALSE","আত্মীয়তা এবং সম্পর্ক","আত্মীয়তা এবং সম্পর্ক","আত্মীয়তা এবং সম্পর্ক","TRUE","Kinship ଏବଂ ସମ୍ପର୍କ","","Kinship ଏବଂ ସମ୍ପର୍କ","FALSE","","","FALSE","Kekerabatan dan hubungan","Kekerabatan dan relasi","Kekerabatan dan relasi","TRUE","Родство и отношения","Родство и свойство","Родство и свойство","TRUE","亲属和关系","","亲属和关系","FALSE","Zumunta da kuma dangantaka","","Zumunta da kuma dangantaka","FALSE","Ujamaa na mahusiano","Udugu na mahusiano ","Udugu na mahusiano ","TRUE","ቀውስ እና ግንኙነቶች","ዝምድና እና ግንኙነት","ዝምድና እና ግንኙነት","TRUE","Kekeluargaan dan hubungan","Persanakan dan perhubungan","Persanakan dan perhubungan","TRUE","Kinship at Relasyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Social activities and interactions","2.7","actividades e interacciones sociales","Actividades e interacciones sociales","Actividades e interacciones sociales","TRUE","atividades sociais e interações","Actividades sociais e interações","Actividades sociais e interações","TRUE","Activités sociales et interactions","Les activités et les interactions sociales","Les activités et les interactions sociales","TRUE","פעילויות ואינטראקציות חברתיות","","פעילויות ואינטראקציות חברתיות","TRUE","الأنشطة الاجتماعية والتفاعلات","الأنشطة الاجتماعية والتفاعلات","الأنشطة الاجتماعية والتفاعلات","FALSE","सामाजिक गतिविधियों और बातचीत","","सामाजिक गतिविधियों और बातचीत","FALSE","সামাজিক কার্যক্রম এবং পারস্পরিক ক্রিয়ার","সামাজিক কার্যক্রম এবং মিথস্ক্রিয়া","সামাজিক কার্যক্রম এবং মিথস্ক্রিয়া","TRUE","ସାମାଜିକ କାର୍ଯ୍ୟକଳାପ ଏବଂ ଆଦାନପ୍ରଦାନ","","ସାମାଜିକ କାର୍ଯ୍ୟକଳାପ ଏବଂ ଆଦାନପ୍ରଦାନ","FALSE","","","FALSE","kegiatan sosial dan interaksi","Kegiatan sosial dan interaksi","Kegiatan sosial dan interaksi","TRUE","Общественная деятельность и взаимодействие","","Общественная деятельность и взаимодействие","TRUE","社会活动和互动","","社会活动和互动","FALSE","Zamantakewa da kuma interactions","","Zamantakewa da kuma interactions","FALSE","Shughuli za Jamii na mwingiliano","Shughuli za kijamii na maingiliano","Shughuli za kijamii na maingiliano","TRUE","ማህበራዊ እንቅስቃሴዎች እና ግንኙነቶች","ማህበራዊ እንቅስቃሴዎች እና ግንኙነቶች","ማህበራዊ እንቅስቃሴዎች እና ግንኙነቶች","TRUE","Aktiviti dan interaksi sosial","Aktiviti dan interaksi sosial","Aktiviti dan interaksi sosial","TRUE","Mga aktibidad at pakikipag-ugnayan sa lipunan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Government and Law","2.8","Gobierno y Derecho","Gobierno y Ley","Gobierno y Ley","TRUE","Governo e Direito","Governo e Leis","Governo e Leis","TRUE","Gouvernement et droit","Le gouvernement et le droit","Le gouvernement et le droit","TRUE","שלטון ומשפט","","שלטון ומשפט","TRUE","الحكومة والقانون","الحكومة والقانون","الحكومة والقانون","FALSE","सरकार और कानून","","सरकार और कानून","FALSE","সরকার এবং আইন","সরকার এবং আইন","সরকার এবং আইন","TRUE","ସରକାର ଏବଂ ନିୟମ","","ସରକାର ଏବଂ ନିୟମ","FALSE","","","FALSE","Pemerintah dan Hukum","Pemerintahan dan Hukum","Pemerintahan dan Hukum","TRUE","Правительство и закон","","Правительство и закон","TRUE","政府和法律","","政府和法律","FALSE","Gwamnati da kuma Law","","Gwamnati da kuma Law","FALSE","Serikali na Sheria","Serikali na sheria","Serikali na sheria","TRUE","መንግሥት እና ህግ","መንግሥት እና ህግ","መንግሥት እና ህግ","TRUE","Kerajaan dan undang-undang","Kerajaan dan Undang-undang","Kerajaan dan Undang-undang","TRUE","Pamahalaan at batas","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Language and Communication","3","Lenguaje y Comunicación","Lenguaje y comunicación","Lenguaje y comunicación","TRUE","Linguagem e Comunicação","Linguagem e Comunicação","Linguagem e Comunicação","TRUE","Langue et communication","La langue et la communication","La langue et la communication","TRUE","שפה ותקשורת","","שפה ותקשורת","TRUE","اللغة والتواصل","اللغة والتواصل","اللغة والتواصل","FALSE","भाषा और संचार","","भाषा और संचार","FALSE","ভাষা ও কমিউনিকেশন","ভাষা এবং যোগাযোগ","ভাষা এবং যোগাযোগ","TRUE","ଭାଷା ଏବଂ ଯୋଗାଯୋଗ","","ଭାଷା ଏବଂ ଯୋଗାଯୋଗ","FALSE","","","FALSE","Bahasa dan Komunikasi","Bahasa dan Komunikasi","Bahasa dan Komunikasi","TRUE","Язык и коммуникация","","Язык и коммуникация","TRUE","语言和交流","","语言和交流","FALSE","Harshe da kuma sadarwa","","Harshe da kuma sadarwa","FALSE","Lugha na Mawasiliano","Lugha na Mawasiliano","Lugha na Mawasiliano","TRUE","ቋንቋ እና ግንኙነት","","ቋንቋ እና ግንኙነት","FALSE","Bahasa dan Komunikasi","Bahasa dan Komunikasi","Bahasa dan Komunikasi","TRUE","Wika at komunikasyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Mental actions","3.1","acciones mentales","Acciones mentales","Acciones mentales","TRUE","ações mentais","Acções Mentais","Acções Mentais","TRUE","actions mentales","Les actions mentales","Les actions mentales","TRUE","פעולות נפש","פעולות של מחשבה ונפש","פעולות של מחשבה ונפש","FALSE","الإجراءات العقلية","العمليات الذهنية","العمليات الذهنية","FALSE","मानसिक कार्यों","","मानसिक कार्यों","FALSE","মানসিক ক্রিয়া","মানসিক ক্রিয়া","মানসিক ক্রিয়া","TRUE","ମାନସିକ କ୍ରିୟାଗୁଡିକୁ","","ମାନସିକ କ୍ରିୟାଗୁଡିକୁ","FALSE","","","FALSE","tindakan Mental","Tindakan mental","Tindakan mental","TRUE","Умственные действия","","Умственные действия","TRUE","心理行为","","心理行为","FALSE","shafi tunanin mutum da ayyuka","","shafi tunanin mutum da ayyuka","FALSE","vitendo Mental","Vitendo vya akili","Vitendo vya akili","TRUE","የአእምሮ እርምጃዎች","የአእምሮ እርምጃዎች","የአእምሮ እርምጃዎች","TRUE","Tindakan mental","Tindakan mental","Tindakan mental","TRUE","Mga pagkilos ng kaisipan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Emotions","3.2","las emociones","Emociones","Emociones","TRUE","emoções","Emoções ","Emoções ","TRUE","Émotions","Les émotions","Les émotions","TRUE","רגשות","","רגשות","TRUE","العواطف","العواطف","العواطف","FALSE","भावनाएँ","","भावनाएँ","FALSE","ইমোশনস","আবেগ","আবেগ","TRUE","Emotions","","Emotions","FALSE","","","FALSE","emosi","Emosi","Emosi","TRUE","Эмоции","","Эмоции","TRUE","情绪","","情绪","FALSE","motsin zuciyarmu","","motsin zuciyarmu","FALSE","Hisia","Hisia ","Hisia ","TRUE","ስሜቶች","ስሜቶች","ስሜቶች","TRUE","Emosi.","Emosi","Emosi","TRUE","Emosyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Education and learning","3.3","La educación y el aprendizaje","Educación y aprendizaje","Educación y aprendizaje","TRUE","Educação e aprendizado","Educação e aprendizagem","Educação e aprendizagem","TRUE","L'éducation et l'apprentissage","L'éducation et l'apprentissage","L'éducation et l'apprentissage","TRUE","חינוך ולמידה","","חינוך ולמידה","TRUE","التعليم والتعلم","التعليم والتعلم","التعليم والتعلم","FALSE","शिक्षा और सीखने","","शिक्षा और सीखने","FALSE","শিক্ষা ও শিক্ষা","শিক্ষা এবং পড়াশোনা ","শিক্ষা এবং পড়াশোনা ","TRUE","ଶିକ୍ଷା ଏବଂ ଶିକ୍ଷାଦାନ","","ଶିକ୍ଷା ଏବଂ ଶିକ୍ଷାଦାନ","FALSE","","","FALSE","Pendidikan dan pembelajaran","Pendidikan dan pembelajaran","Pendidikan dan pembelajaran","TRUE","Образование и обучение","","Образование и обучение","TRUE","教育与学习","","教育与学习","FALSE","Ilimi da kuma ilmantarwa","","Ilimi da kuma ilmantarwa","FALSE","Elimu na kusoma","Elimu na ujifunzaji","Elimu na ujifunzaji","TRUE","ትምህርት እና ትምህርት","ትምህርት እና መማር","ትምህርት እና መማር","TRUE","Pendidikan dan pembelajaran","Pendidikan dan pembelajaran","Pendidikan dan pembelajaran","TRUE","Edukasyon at pag-aaral","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Names","4","nombres","Nombres","Nombres","TRUE","nomes","Nomes","Nomes","TRUE","Des noms","Les noms propres","Les noms propres","TRUE","שמות","","שמות","TRUE","أسماء","الأسماء","الأسماء","FALSE","नाम","","नाम","FALSE","নাম","নাম","নাম","TRUE","ନାମ","","ନାମ","FALSE","","","FALSE","nama","Nama","Nama","TRUE","имена","","имена","TRUE","名称","","名称","FALSE","names","","names","FALSE","majina","Majina ","Majina ","TRUE","ስሞች","ስሞች","ስሞች","TRUE","Nama","Nama","Nama","TRUE","Mga pangalan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Names of people and clans","4.1","Nombres de personas y clanes","Nombres de personas y clanes","Nombres de personas y clanes","TRUE","Nomes de pessoas e clãs","Nomes de pessoas e clãs","Nomes de pessoas e clãs","TRUE","Les noms des personnes et des clans","Les noms des peuples et des clans","Les noms des peuples et des clans","TRUE","שמות של אנשים וחמולות","","שמות של אנשים וחמולות","TRUE","أسماء الأشخاص والعشائر","أسماء الأشخاص والعشائر","أسماء الأشخاص والعشائر","FALSE","लोगों और गुटों के नाम","","लोगों और गुटों के नाम","FALSE","মানুষ এবং গোত্র নাম","লোক এবং বংশের নাম","লোক এবং বংশের নাম","TRUE","ଲୋକମାନେ ଏବଂ ପରିବାର ନାମ","","ଲୋକମାନେ ଏବଂ ପରିବାର ନାମ","FALSE","","","FALSE","Nama-nama orang dan klan","Nama-nama orang dan klan","Nama-nama orang dan klan","TRUE","Имена людей и кланов","","Имена людей и кланов","TRUE","人与氏族名称","","人与氏族名称","FALSE","Sunayen mutane da kuma iyalan","","Sunayen mutane da kuma iyalan","FALSE","Majina ya watu na koo","Majina ya watu na koo","Majina ya watu na koo","TRUE","የሰዎች እና የጎሳዎች ስም","የጎሳ ስሞች","የጎሳ ስሞች","TRUE","Nama orang dan puak","Nama-nama orang dan puak","Nama-nama orang dan puak","TRUE","Mga pangalan ng mga tao at mga clans","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Place names","4.2","Poner nombres","Toponimia","Toponimia","TRUE","Nomes de lugares","Nomes de lugares","Nomes de lugares","TRUE","Les noms de lieux","Noms de lieu","Noms de lieu","TRUE","למקם שמות","שמות של מקומות","שמות של מקומות","TRUE","أسماء الأماكن","أسماء الأماكن","أسماء الأماكن","FALSE","जगह का नाम","","जगह का नाम","FALSE","জায়গার নাম","জায়গার নাম","জায়গার নাম","TRUE","ସ୍ଥାନ ନାମ","","ସ୍ଥାନ ନାମ","FALSE","","","FALSE","Nama tempat","Nama tempat","Nama tempat","TRUE","Топонимы","","Топонимы","TRUE","地名","","地名","FALSE","Place sunayen","","Place sunayen","FALSE","majina ya mahali","Majina ya mahali","Majina ya mahali","TRUE","ስሞችን ያስቀምጡ","ስሞችን ያስቀምጡ","ስሞችን ያስቀምጡ","FALSE","Tempat nama","Nama tempat","Nama tempat","TRUE","Maglagay ng mga pangalan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sacred names","4.3","nombres sagrados","Nombres sagrados","Nombres sagrados","TRUE","nomes sagrados","Nomes sagrados","Nomes sagrados","TRUE","Les noms sacrés","Noms sacrés","Noms sacrés","TRUE","שמות קודש","שמות קדושים","שמות קדושים","TRUE","أسماء المقدسة","الأسماء المقدسة","الأسماء المقدسة","FALSE","पवित्र नाम","","पवित्र नाम","FALSE","ভক্তিমূলক নাম","পবিত্র নাম","পবিত্র নাম","TRUE","ପବିତ୍ର ନାମ","","ପବିତ୍ର ନାମ","FALSE","","","FALSE","nama sakral","Nama sakral","Nama sakral","TRUE","Священные имена","","Священные имена","TRUE","神圣的名字","","神圣的名字","FALSE","alfarma sunayen","","alfarma sunayen","FALSE","majina takatifu","Majina matakatifu","Majina matakatifu","TRUE","የተቀደሱ ስሞች","ቅዱሳዊ ስሞች","ቅዱሳዊ ስሞች","TRUE","Nama suci","Nama suci","Nama suci","TRUE","Banal na pangalan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Daily life","5","Vida diaria","Vida cotidiana","Vida cotidiana","TRUE","Vida cotidiana","Vida quotidiana","Vida quotidiana","TRUE","La vie quotidienne","La vie quotidienne","La vie quotidienne","TRUE","חיי יום יום","חיי יום-יום","חיי יום-יום","TRUE","الحياة اليومية","الحياة اليومية ","الحياة اليومية ","FALSE","दैनिक जीवन","","दैनिक जीवन","FALSE","প্রাত্যহিক জীবন","দৈনন্দিন জীবন","দৈনন্দিন জীবন","TRUE","ଦୈନିକ ଜୀବନ","","ଦୈନିକ ଜୀବନ","FALSE","","","FALSE","Kehidupan sehari-hari","Kehidupan sehari-hari","Kehidupan sehari-hari","TRUE","Повседневная жизнь","","Повседневная жизнь","TRUE","日常生活","","日常生活","FALSE","rayuwar yau da kullum","","rayuwar yau da kullum","FALSE","Maisha ya kila siku","Maisha ya kila siku","Maisha ya kila siku","TRUE","ዕለታዊ ህይወት","ዕለታዊ ህይወት","ዕለታዊ ህይወት","TRUE","Kehidupan seharian","Kehidupan seharian","Kehidupan seharian","TRUE","Araw-araw na pamumuhay","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Household","5.1","Casa","Hogar","Hogar","TRUE","casa","Agregado familiar","Agregado familiar","TRUE","Ménage","Le domicile","Le domicile","TRUE","בית","משק בית","משק בית","TRUE","منزلي","الأُسر/ المنازل","الأُسر/ المنازل","FALSE","गृहस्थी","","गृहस्थी","FALSE","পরিবার","গৃহস্থালীর","গৃহস্থালীর","TRUE","ଘର ପରିସର","","ଘର ପରିସର","FALSE","","","FALSE","Rumah tangga","Rumah tangga","Rumah tangga","TRUE","Домашнее хозяйство","","Домашнее хозяйство","TRUE","家庭","","家庭","FALSE","Household","","Household","FALSE","Kaya","Kaya","Kaya","TRUE","ቤተሰብ","ቤተሰብ","ቤተሰብ","TRUE","Isi rumah","Rumahtangga","Rumahtangga","TRUE","Sambahayan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Agriculture","5.2","Agricultura","Agricultura","Agricultura","TRUE","Agricultura","Agricultura","Agricultura","TRUE","Agriculture","L'agriculture","L'agriculture","TRUE","חַקלָאוּת","חקלאות","חקלאות","TRUE","الزراعة","الزراعة","الزراعة","FALSE","कृषि","","कृषि","FALSE","কৃষি","কৃষি","কৃষি","TRUE","କୃଷି","","କୃଷି","FALSE","","","FALSE","Pertanian","Pertanian","Pertanian","TRUE","сельское хозяйство","","сельское хозяйство","TRUE","农业","","农业","FALSE","Noma,","","Noma,","FALSE","kilimo","Kilimo","Kilimo","TRUE","እርሻ","ግብርና","ግብርና","TRUE","Pertanian.","Pertanian","Pertanian","TRUE","Agrikultura","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Food, cooking and foodways","5.3","Alimentos, cocinar y costumbres alimenticias","Alimentos, cocina y vías de alimentación","Alimentos, cocina y vías de alimentación","TRUE","Alimentos, cozinhar e foodways","Alimentos, cozinha e tipos de comida","Alimentos, cozinha e tipos de comida","TRUE","La nourriture, la cuisine et les habitudes alimentaires","L'alimentation, la cuisine et les habitudes alimentaires","L'alimentation, la cuisine et les habitudes alimentaires","TRUE","אוכל, בישול foodways","אוכל ובישול","אוכל ובישול","FALSE","الغذاء والطبخ وfoodways","الأكل والغذاء","الأكل والغذاء","FALSE","खाद्य, खाना पकाने और foodways","","खाद्य, खाना पकाने और foodways","FALSE","খাদ্য, রান্না এবং foodways","খাদ্য, রান্নাঘর এবং খাদ্যপথ","খাদ্য, রান্নাঘর এবং খাদ্যপথ","TRUE","ଖାଦ୍ୟ, ରନ୍ଧନ ଏବଂ foodways","","ଖାଦ୍ୟ, ରନ୍ଧନ ଏବଂ foodways","FALSE","","","FALSE","Makanan, memasak dan foodways","Makanan, memasak dan pengadaan pangan","Makanan, memasak dan pengadaan pangan","TRUE","Продукты питания, приготовления пищи и foodways","Продукты питания и приготовление пищи","Продукты питания и приготовление пищи","TRUE","食品,烹饪和foodways","","食品,烹饪和foodways","FALSE","Abinci, dafa abinci da kuma foodways","","Abinci, dafa abinci da kuma foodways","FALSE","Chakula, kupikia na foodways","Chakula, upikaji na ulaji","Chakula, upikaji na ulaji","TRUE","ምግብ, ምግብ ማብሰል እና የምግብ መንገዶች","ምግብና ምግብ ማብሰል","ምግብና ምግብ ማብሰል","TRUE","Makanan, memasak dan makanan","Makanan, memasak dan perolehan makanan","Makanan, memasak dan perolehan makanan","TRUE","Pagkain, pagluluto at mga pagkain","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Clothing and adornment","5.4","Indumentaria y adorno","Ropa y adornos","Ropa y adornos","TRUE","Vestuário e adorno","Vestuário e adorno","Vestuário e adorno","TRUE","Vêtements et parure","Les vêtements et les accessoires","Les vêtements et les accessoires","TRUE","ביגוד קישוט","","ביגוד קישוט","TRUE","الملابس والزينة","الملابس والزينة","الملابس والزينة","FALSE","वस्त्र और अलंकरण","","वस्त्र और अलंकरण","FALSE","পোশাক ও সাজ-সজ্জাকে,","পোশাক এবং শোভাকর","পোশাক এবং শোভাকর","TRUE","ପୋଷାକ ଏବଂ adornment","","ପୋଷାକ ଏବଂ adornment","FALSE","","","FALSE","Pakaian dan perhiasan","Pakaian dan perhiasan","Pakaian dan perhiasan","TRUE","Одежда и украшения","","Одежда и украшения","TRUE","服装和装饰","","服装和装饰","FALSE","Tufafi da ƙawa","","Tufafi da ƙawa","FALSE","Nguo na mapambo","Mavazi na mapambo","Mavazi na mapambo","TRUE","ልብስ እና ጌጣጌጥ","አልባሳት እና ጌጣጌጥ","አልባሳት እና ጌጣጌጥ","TRUE","Pakaian dan perhiasan","Pakaian dan perhiasan","Pakaian dan perhiasan","TRUE","Damit at adornment","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Cleanliness and hygiene","5.5","La limpieza y la higiene","Limpieza e higiene","Limpieza e higiene","TRUE","Limpeza e higiene","Limpeza e higiene","Limpeza e higiene","TRUE","La propreté et l'hygiène","La propreté et l'hygiène","La propreté et l'hygiène","TRUE","ניקיון והיגיינה","","ניקיון והיגיינה","TRUE","النظافة والنظافة","النظافة والعناية الشخصية","النظافة والعناية الشخصية","FALSE","साफ-सफाई और स्वच्छता","","साफ-सफाई और स्वच्छता","FALSE","পরিচ্ছন্নতা এবং স্বাস্থ্যবিধি","পরিচ্ছন্নতা এবং স্বাস্থ্যবিধি","পরিচ্ছন্নতা এবং স্বাস্থ্যবিধি","TRUE","ବିଶୁଦ୍ଧ କରଣ ଏବଂ ସ୍ବାସ୍ଥ୍ଯ ବିଜ୍ଞାନ","","ବିଶୁଦ୍ଧ କରଣ ଏବଂ ସ୍ବାସ୍ଥ୍ଯ ବିଜ୍ଞାନ","FALSE","","","FALSE","Kebersihan dan kesehatan","Kebersihan dan kesehatan","Kebersihan dan kesehatan","TRUE","Чистота и гигиена","","Чистота и гигиена","TRUE","清洁和卫生","","清洁和卫生","FALSE","M da kuma tsabta","","M da kuma tsabta","FALSE","Usafi na usafi","Usafi na umaridadi","Usafi na umaridadi","TRUE","ንፅህና እና ንፅህና","ንፅህና እና ንፅህና","ንፅህና እና ንፅህና","TRUE","Kebersihan dan Kebersihan","Kebersihan dan kesihatan","Kebersihan dan kesihatan","TRUE","Kalinisan at kalinisan","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sleep","5.6","Dormir","Sueño","Sueño","TRUE","Dormir","Dormir","Dormir","TRUE","Dormir","Le sommeil","Le sommeil","TRUE","לִישׁוֹן","שינה","שינה","TRUE","ينام","النوم","النوم","FALSE","नींद","","नींद","FALSE","ঘুম","ঘুম","ঘুম","TRUE","ଶୟନ","","ଶୟନ","FALSE","","","FALSE","Tidur","Tidur","Tidur","TRUE","Спать","сон","сон","TRUE","睡觉","","睡觉","FALSE","barci","","barci","FALSE","Sleep","Usingizi","Usingizi","TRUE","እንቅልፍ","እንቅልፍ","እንቅልፍ","TRUE","Tidur","Tidur","Tidur","TRUE","Matulog","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Work and occupations","5.7","Trabajo y ocupaciones","Trabajo y ocupaciones","Trabajo y ocupaciones","TRUE","Trabalho e ocupações","Trabalho e ocupações","Trabalho e ocupações","TRUE","Travail et professions","Le travail et les occupations","Le travail et les occupations","TRUE","עבודה ועיסוקים","","עבודה ועיסוקים","FALSE","العمل والمهن","المهن والوظائف","المهن والوظائف","FALSE","कार्य और व्यवसायों","","कार्य और व्यवसायों","FALSE","কর্ম ও পেশা","কাজ এবং পেশা","কাজ এবং পেশা","TRUE","କାର୍ଯ୍ୟ ଏବଂ occupations","","କାର୍ଯ୍ୟ ଏବଂ occupations","FALSE","","","FALSE","Kerja dan pekerjaan","Kerja dan pekerjaan","Kerja dan pekerjaan","TRUE","Работа и профессии","","Работа и профессии","TRUE","工作和职业","","工作和职业","FALSE","Aiki da aikin da","","Aiki da aikin da","FALSE","Kazi na kazi","Kazi na nyanja za kazi","Kazi na nyanja za kazi","TRUE","ሥራ እና ሥራ","ሥራ እና ሙያዎች","ሥራ እና ሙያዎች","TRUE","Kerja dan pekerjaan","Kerja dan pekerjaan","Kerja dan pekerjaan","TRUE","Trabaho at trabaho","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Animal husbandry","5.8","La cría de animales","Ganadería","Ganadería","TRUE","Criação animal","Criação de animais","Criação de animais","TRUE","Élevage","L'élevage","L'élevage","TRUE","גידול בעלי חיים","","גידול בעלי חיים","TRUE","تربية الحيوان","تربية المواشي","تربية المواشي","FALSE","पशुपालन","","पशुपालन","FALSE","পশুপালন","পশুপালন","পশুপালন","TRUE","ପ୍ରାଣୀ କୃଷିକର୍ମକୁ","","ପ୍ରାଣୀ କୃଷିକର୍ମକୁ","FALSE","","","FALSE","Peternakan","Peternakan","Peternakan","TRUE","Животноводство","","Животноводство","TRUE","畜牧业","","畜牧业","FALSE","animal husbandry","","animal husbandry","FALSE","Ufugaji","Ufugaji","Ufugaji","TRUE","የእንስሳት እርባታ","የእንስሳት እርባታ","የእንስሳት እርባታ","TRUE","Perternakan haiwan","Penternakan haiwan","Penternakan haiwan","TRUE","Pagpaparami ng mga hayop","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Tools and weapons","5.9","Herramientas y armas","Herramientas y armas","Herramientas y armas","TRUE","Ferramentas e armas","Ferramentas e armas","Ferramentas e armas","TRUE","Outils et armes","Les outils et les armes","Les outils et les armes","TRUE","כלים וכלי נשק","","כלים וכלי נשק","TRUE","الأدوات والأسلحة","الأدوات والأسلحة","الأدوات والأسلحة","FALSE","उपकरण और हथियार","","उपकरण और हथियार","FALSE","সরঞ্জাম ও অস্ত্র","সরঞ্জাম এবং অস্ত্র","সরঞ্জাম এবং অস্ত্র","TRUE","ଉପକରଣ ଓ ଅସ୍ତ୍ରଶସ୍ତ୍ର","","ଉପକରଣ ଓ ଅସ୍ତ୍ରଶସ୍ତ୍ର","FALSE","","","FALSE","Alat dan senjata","Alat dan senjata","Alat dan senjata","TRUE","Инструменты и оружие","","Инструменты и оружие","TRUE","工具和武器","","工具和武器","FALSE","Tools da makamai","","Tools da makamai","FALSE","Zana na silaha","Zana na silaha","Zana na silaha","TRUE","መሣሪያዎች እና መሳሪያዎች","መሣሪያዎች እና የጦር መሣሪያዎች","መሣሪያዎች እና የጦር መሣሪያዎች","TRUE","Alat dan senjata","Alat dan senjata","Alat dan senjata","TRUE","Mga tool at armas","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Finance and Business","5.10","Finanzas y Negocios","Finanzas y Negocios","Finanzas y Negocios","TRUE","Finanças e Negócios","Finanças e Negócios","Finanças e Negócios","TRUE","Finances et affaires","La finance et les affaires","La finance et les affaires","TRUE","אוצר עסקים","כלכלה ועסקים","כלכלה ועסקים","TRUE","المالية والأعمال","المال والأعمال","المال والأعمال","FALSE","वित्त और व्यापार","","वित्त और व्यापार","FALSE","অর্থ ও ব্যবসা-প্রতিষ্ঠান","অর্থ ও ব্যবসা","অর্থ ও ব্যবসা","TRUE","ଆର୍ଥିକ ଏବଂ ବ୍ୟବସାୟ","","ଆର୍ଥିକ ଏବଂ ବ୍ୟବସାୟ","FALSE","","","FALSE","Keuangan dan Bisnis","Keuangan dan Bisnis","Keuangan dan Bisnis","TRUE","Финансы и бизнес","","Финансы и бизнес","TRUE","金融与商务","","金融与商务","FALSE","Finance da kuma Business","","Finance da kuma Business","FALSE","Fedha na Biashara","Fedha na Biashara","Fedha na Biashara","TRUE","ፋይናንስ እና ንግድ","ፋይናንስ እና ንግድ","ፋይናንስ እና ንግድ","TRUE","Kewangan dan perniagaan","Kewangan dan Perniagaan","Kewangan dan Perniagaan","TRUE","Pananalapi at negosyo","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Hunting and Fishing","5.11","Caza y Pesca","Caza y pesca","Caza y pesca","TRUE","Caça e Pesca","Caça e pesca","Caça e pesca","TRUE","Chasse et pêche","La chasse et la pêche","La chasse et la pêche","TRUE","ציד ודיג","","ציד ודיג","TRUE","الصيد وصيد الأسماك","الصيد وصيد الأسماك ","الصيد وصيد الأسماك ","FALSE","शिकार और मत्स्य पालन","","शिकार और मत्स्य पालन","FALSE","শিকার এবং মাছধরা","শিকার এবং মাছধরা","শিকার এবং মাছধরা","TRUE","ଶିକାର ଏବଂ ମାଛଧରା","","ଶିକାର ଏବଂ ମାଛଧରା","FALSE","","","FALSE","Perburuan dan Perikanan","Perburuan dan Perikanan","Perburuan dan Perikanan","TRUE","Охота и рыбалка","","Охота и рыбалка","TRUE","狩猎和捕鱼","","狩猎和捕鱼","FALSE","Farauta da Fishing","","Farauta da Fishing","FALSE","Uwindaji na Uvuvi","Uwindaji na Uvuvi","Uwindaji na Uvuvi","TRUE","ማደን እና ማጥመድ","ማደን እና ማጥመድ","ማደን እና ማጥመድ","TRUE","Memburu dan memancing","Perburuan dan Perikanan","Perburuan dan Perikanan","TRUE","Pangangaso at Pangingisda","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Art, crafts and textiles","5.12","Arte, artesanía y textiles","Arte, artesanía y textiles","Arte, artesanía y textiles","TRUE","Arte, artesanato e têxteis","Arte, artesanato e têxteis ","Arte, artesanato e têxteis ","TRUE","Art, artisanat et textiles","L'art, l'artisanat et les textiles","L'art, l'artisanat et les textiles","TRUE","אמנות, מלאכת יד וטקסטיל","","אמנות, מלאכת יד וטקסטיל","FALSE","الفن والحرف اليدوية والمنسوجات","الفن والحِرَف والنسيج","الفن والحِرَف والنسيج","FALSE","कला, शिल्प और वस्त्र","","कला, शिल्प और वस्त्र","FALSE","শিল্প, কারুশিল্প ও বস্ত্র","শিল্প, কারুশিল্প ও বস্ত্র","শিল্প, কারুশিল্প ও বস্ত্র","TRUE","କଳା, କ୍ରାଫ୍ଟଗୁଡିକ ଏବଂ textiles","","କଳା, କ୍ରାଫ୍ଟଗୁଡିକ ଏବଂ textiles","FALSE","","","FALSE","Seni, kerajinan dan tekstil","Seni, kerajinan dan tekstil","Seni, kerajinan dan tekstil","TRUE","Искусство, ремесла и текстиль","Искусство, ремесла и ткани","Искусство, ремесла и ткани","TRUE","艺术,工艺品和纺织品","","艺术,工艺品和纺织品","FALSE","Art, crafts da kuma Textiles","","Art, crafts da kuma Textiles","FALSE","Sanaa, ufundi na nguo","Sanaa, ufundi na nguo","Sanaa, ufundi na nguo","TRUE","ስነጥበብ, የእጅ ሥራዎች እና ጨርቃጨርቅ","ስነጥበብ እና የጨርቃ ጨርቅ ሥራ","ስነጥበብ እና የጨርቃ ጨርቅ ሥራ","TRUE","Seni, Kraf dan Tekstil","Seni, kraf dan tekstil","Seni, kraf dan tekstil","TRUE","Art, crafts at textiles.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Construction","5.13","Construcción","Construcción","Construcción","TRUE","Construção","Construção","Construção","TRUE","Construction","La construction","La construction","TRUE","בְּנִיָה","בנייה","בנייה","TRUE","اعمال بناء","أعمال البناء والإنشاء","أعمال البناء والإنشاء","FALSE","निर्माण","","निर्माण","FALSE","নির্মাণ","নির্মাণ","নির্মাণ","TRUE","ନିର୍ମାଣ","","ନିର୍ମାଣ","FALSE","","","FALSE","Konstruksi","Konstruksi","Konstruksi","TRUE","строительство","","строительство","TRUE","施工","","施工","FALSE","Construction","","Construction","FALSE","Ujenzi","Ujenzi","Ujenzi","TRUE","ግንባታ","ግንባታ","ግንባታ","TRUE","Pembinaan","Pembinaan","Pembinaan","TRUE","Konstruksiyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sports and games","5.14","Deportes y juegos","Deportes y juegos","Deportes y juegos","TRUE","Esportes e jogos","Desporto e jogos","Desporto e jogos","TRUE","Sports et jeux","Les sports et les jeux","Les sports et les jeux","TRUE","ספורט ומשחקים","","ספורט ומשחקים","TRUE","الرياضة والألعاب","الرياضة والألعاب","الرياضة والألعاب","FALSE","खेल और क्रीड़ा","","खेल और क्रीड़ा","FALSE","ক্রীড়া এবং গেম","ক্রিয়া এবং খেলাধুলা","ক্রিয়া এবং খেলাধুলা","TRUE","ଖେଳ ଏବଂ ଗେମ୍","","ଖେଳ ଏବଂ ଗେମ୍","FALSE","","","FALSE","Olahraga dan permainan","Olahraga dan permainan","Olahraga dan permainan","TRUE","Спорт и игры","","Спорт и игры","TRUE","体育和游戏","","体育和游戏","FALSE","Wasanni da wasanni","","Wasanni da wasanni","FALSE","Michezo na michezo","Michezo","Michezo","TRUE","ስፖርት እና ጨዋታዎች","ስፖርት እና ጨዋታዎች","ስፖርት እና ጨዋታዎች","TRUE","Sukan dan permainan","Sukan dan permainan","Sukan dan permainan","TRUE","Mga sports at mga laro","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Transportation","5.15","Transporte","Transporte","Transporte","TRUE","Transporte","Transporte","Transporte","TRUE","Transport","Le transport","Le transport","TRUE","הוֹבָלָה","הובלה","הובלה","FALSE","وسائل النقل","النقل","النقل","FALSE","परिवहन","","परिवहन","FALSE","পরিবহন","পরিবহন","পরিবহন","TRUE","ପରିବହନ","","ପରିବହନ","FALSE","","","FALSE","Angkutan","Transportasi","Transportasi","TRUE","Транспорт","","Транспорт","TRUE","运输","","运输","FALSE","sufuri","","sufuri","FALSE","Usafiri","Usafirishaji","Usafirishaji","TRUE","መጓጓዣ","መጓጓዣ","መጓጓዣ","TRUE","Pengangkutan","Pengangkutan","Pengangkutan","TRUE","Transportasyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Spirituality and Religion","5.16","Espiritualidad y religión","Espiritualidad y religión","Espiritualidad y religión","TRUE","Espiritualidade e religião","Espiritualidade e religião","Espiritualidade e religião","TRUE","Spiritualité et religion","La spiritualité et la religion","La spiritualité et la religion","TRUE","רוחניות ודת","","רוחניות ודת","TRUE","الروحانية والدين","الروحانية والدين","الروحانية والدين","FALSE","अध्यात्म और धर्म","","अध्यात्म और धर्म","FALSE","আধ্যাত্মিকতা এবং ধর্ম","আধ্যাত্মিকতা এবং ধর্ম","আধ্যাত্মিকতা এবং ধর্ম","TRUE","Spirituality ଏବଂ ଜାତି","","Spirituality ଏବଂ ଜାତି","FALSE","","","FALSE","Spiritualitas dan Agama","Spiritualitas dan Agama","Spiritualitas dan Agama","TRUE","Духовность и религия","","Духовность и религия","TRUE","精神与宗教","","精神与宗教","FALSE","Ruhi da kuma addinin","","Ruhi da kuma addinin","FALSE","Kiroho na Dini","Mambo ya kiroho na dini","Mambo ya kiroho na dini","TRUE","መንፈሳዊነት እና ሃይማኖት","መንፈሳዊነት እና ሃይማኖት","መንፈሳዊነት እና ሃይማኖት","TRUE","Kerohanian dan agama","Kerohanian dan Agama","Kerohanian dan Agama","TRUE","Espirituwalidad at relihiyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Physical Actions and States","6","Acciones físicas y los Estados","Acciones Físicas y Estados","Acciones Físicas y Estados","TRUE","Ações físicas e Estados","Acções Físicas e Estados","Acções Físicas e Estados","TRUE","Actions physiques et les États","Les actions et les états physiques","Les actions et les états physiques","TRUE","פעולות פיזיות ו הברית","פעולות גופניות ומצבים גופניים","פעולות גופניות ומצבים גופניים","FALSE","تطبيقات المادية والدول","الأوضاع والحركات البدنية","الأوضاع والحركات البدنية","FALSE","शारीरिक क्रिया और राज्यों","","शारीरिक क्रिया और राज्यों","FALSE","শারীর পদক্ষেপ এবং যুক্তরাষ্ট্র","শারীরিক ক্রিয়া এবং রাষ্ট্রসমূহ","শারীরিক ক্রিয়া এবং রাষ্ট্রসমূহ","TRUE","States ଭୌତିକ କ୍ରିୟା ଏବଂ","","States ଭୌତିକ କ୍ରିୟା ଏବଂ","FALSE","","","FALSE","Tindakan fisik dan Amerika","Tindakan fisik dan keadaan ","Tindakan fisik dan keadaan ","TRUE","Физические действия и государство","Физические действия и состояния","Физические действия и состояния","TRUE","物理操作和状态","","物理操作和状态","FALSE","Jiki Actions da Amurka","","Jiki Actions da Amurka","FALSE","Vitendo kimwili na Amerika","Vitendo vya mwili na hali","Vitendo vya mwili na hali","TRUE","የአካል እርምጃዎች እና ግዛቶች","አካላዊ እርምጃዎች እና ሁኔታ","አካላዊ እርምጃዎች እና ሁኔታ","TRUE","Tindakan fizikal dan negeri","Tindakan dan keadaan fizikal","Tindakan dan keadaan fizikal","TRUE","Pisikal na mga pagkilos at estado","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Posture","6.1","Postura","Postura","Postura","TRUE","Postura","Postura","Postura","TRUE","Posture","La posture","La posture","TRUE","יְצִיבָה","","יְצִיבָה","FALSE","وضع","الوضع","الوضع","FALSE","आसन","","आसन","FALSE","অঙ্গবিন্যাস","ভঙ্গি","ভঙ্গি","TRUE","ଠାଣି","","ଠାଣି","FALSE","","","FALSE","Sikap","Perawakan","Perawakan","TRUE","осанка","положение тела","положение тела","TRUE","姿势","","姿势","FALSE","hali","","hali","FALSE","mkao","Mkao","Mkao","TRUE","አቀማመጥ","አቀማመጥ","አቀማመጥ","TRUE","Postur","Postur","Postur","TRUE","Posture.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Motion","6.2","Movimiento","Moción","Moción","TRUE","Movimento","Movimento","Movimento","TRUE","Mouvement","Le mouvement","Le mouvement","TRUE","תְנוּעָה","תנועה","תנועה","TRUE","اقتراح","الحركة","الحركة","FALSE","प्रस्ताव","","प्रस्ताव","FALSE","গতি","গতি","গতি","TRUE","ଗତି","","ଗତି","FALSE","","","FALSE","Gerakan","Gerakan","Gerakan","TRUE","движение","","движение","TRUE","运动","","运动","FALSE","Motion","","Motion","FALSE","Motion","Mwondoko","Mwondoko","TRUE","እንቅስቃሴ","እንቅስቃሴ","እንቅስቃሴ","TRUE","Gerakan","Gerakan","Gerakan","TRUE","Galaw.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Possession","6.3","Posesión","Posesión","Posesión","TRUE","Posse","Posse","Posse","TRUE","Possession","La possession","La possession","TRUE","רְשׁוּת","שייכות","שייכות","FALSE","ملكية","الملكية","الملكية","FALSE","अधिकार","","अधिकार","FALSE","দখল","দখল","দখল","TRUE","ଅଧିକାର","","ଅଧିକାର","FALSE","","","FALSE","Milik","Harta Benda","Harta Benda","TRUE","одержимость","","одержимость","TRUE","所有权","","所有权","FALSE","mallaka","","mallaka","FALSE","umiliki","Umiliki","Umiliki","TRUE","መያዝ","መያዝ","መያዝ","TRUE","Pemilikan","Harta benda","Harta benda","TRUE","Pag-aari","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Physical Impact","6.4","Impacto físico","Impacto Físico","Impacto Físico","TRUE","Impacto físico","Impacto fisico","Impacto fisico","TRUE","impact physique","L'impact physique","L'impact physique","TRUE","השפעה גופנית","","השפעה גופנית","FALSE","تأثير البدنية","التأثير البدني","التأثير البدني","FALSE","शारीरिक प्रभाव","","शारीरिक प्रभाव","FALSE","শারীর ইমপ্যাক্ট","শারীরিক প্রভাব","শারীরিক প্রভাব","TRUE","ଭୌତିକ Impact","","ଭୌତିକ Impact","FALSE","","","FALSE","Dampak fisik","Dampak fisik","Dampak fisik","TRUE","Физическое воздействие","","Физическое воздействие","TRUE","物理冲击","","物理冲击","FALSE","jiki Impact","","jiki Impact","FALSE","Physical Impact","Athari za mwili","Athari za mwili","TRUE","አካላዊ ተፅእኖ","አካላዊ ተፅእኖ","አካላዊ ተፅእኖ","TRUE","Kesan fizikal","Kesan fizikal","Kesan fizikal","TRUE","Pisikal na epekto","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"States","6.5","Unidos","Estados","Estados","TRUE","Unidos","Estados","Estados","TRUE","États","Les états","Les états","TRUE","מדינות","","מדינות","FALSE","تنص على","الحالات","الحالات","FALSE","राज्य अमेरिका","","राज्य अमेरिका","FALSE","যুক্তরাষ্ট্র","রাজ্যসমূহ","রাজ্যসমূহ","TRUE","States","","States","FALSE","","","FALSE","Amerika","Keadaan","Keadaan","TRUE","состояния","","состояния","TRUE","状态","","状态","FALSE","Amurka","","Amurka","FALSE","Amerika","Hali","Hali","TRUE","ግዛቶች","ሁኔታዎች","ሁኔታዎች","TRUE","Negeri.","Keadaan","Keadaan","TRUE","Estado","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Quantities and Quantifiers","7","Las cantidades y los cuantificadores","Cantidades y Cuantificadores","Cantidades y Cuantificadores","TRUE","Quantidades e Quantifiers","Quantidades e quantificadores","Quantidades e quantificadores","TRUE","Les quantités et les quantificateurs","Quantités et quantificateurs","Quantités et quantificateurs","TRUE","כמויות quantifiers","כמויות ומכמתים","כמויות ומכמתים","FALSE","كميات ومحددو الكمية","الكميات ومحدداتها","الكميات ومحدداتها","FALSE","मात्रा और Quantifiers","","मात्रा और Quantifiers","FALSE","পরিমাণে এবং Quantifiers","পরিমান এবং কোয়ান্টিফায়ার্স ","পরিমান এবং কোয়ান্টিফায়ার্স ","TRUE","ମାତ୍ରାରେ ଏବଂ Quantifiers","","ମାତ୍ରାରେ ଏବଂ Quantifiers","FALSE","","","FALSE","Besaran dan Quantifiers","Besaran dan Pembilang","Besaran dan Pembilang","TRUE","Количества и Кванторы","меры количества и счетные слова","меры количества и счетные слова","TRUE","量和量词","","量和量词","FALSE","Yawa, kuma Quantifiers","","Yawa, kuma Quantifiers","FALSE","Kiasi na wakaguzi","Wingi na vipashio vya kiasi","Wingi na vipashio vya kiasi","TRUE","መጠኖች እና ብራፋሪዎች","መጠን እና መለኪያ","መጠን እና መለኪያ","TRUE","Kuantiti dan kuantiti","Kuantiti dan pengkuantiti","Kuantiti dan pengkuantiti","TRUE","Dami at quantifiers.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Numerals","7.1","numerales","Números","Números","TRUE","numerais","Numerais","Numerais","TRUE","Numerals","Les chiffres","Les chiffres","TRUE","ספרות","","ספרות","TRUE","الأرقام","الأرقام","الأرقام","FALSE","अंकों","","अंकों","FALSE","সংখ্যাসূচক","সংখ্যা","সংখ্যা","TRUE","ସଂଖ୍ୟା","","ସଂଖ୍ୟା","FALSE","","","FALSE","angka","Angka","Angka","TRUE","цифры","","цифры","TRUE","数词","","数词","FALSE","numerals","","numerals","FALSE","tarakimu za","Tarakimu","Tarakimu","TRUE","ቁጥሮች","ቁጥሮች","ቁጥሮች","TRUE","Angka","Angka","Angka","TRUE","Mga numerong","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Sizes and dimensions","7.2","Tamaños y dimensiones","Tamaños y dimensiones","Tamaños y dimensiones","TRUE","Tamanhos e dimensões","Tamanhos e dimensões","Tamanhos e dimensões","TRUE","Dimensions et dimensions","La taille et les dimensions","La taille et les dimensions","TRUE","מידות וממדים","","מידות וממדים","TRUE","مقاسات وأبعاد","الأحجام والأبعاد","الأحجام والأبعاد","FALSE","आकार और आयाम","","आकार और आयाम","FALSE","মাপ এবং মাত্রা","আকার এবং মাত্রা","আকার এবং মাত্রা","TRUE","ଆକାର ଏବଂ ଡାଇମେନସନ୍","","ଆକାର ଏବଂ ଡାଇମେନସନ୍","FALSE","","","FALSE","Ukuran dan dimensi","Ukuran dan Dimensi","Ukuran dan Dimensi","TRUE","Размеры и размеры","Размеры и измерения","Размеры и измерения","TRUE","大小和尺寸","","大小和尺寸","FALSE","Girma dabam da kuma girma","","Girma dabam da kuma girma","FALSE","Ukubwa na vipimo","Ukubwa na vipimo","Ukubwa na vipimo","TRUE","መጠኖች እና ልኬቶች","መጠኖች እና ልኬቶች","መጠኖች እና ልኬቶች","TRUE","Saiz dan dimensi","Saiz dan dimensi","Saiz dan dimensi","TRUE","Laki at sukat","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Units of Measure","7.3","Unidades de medida","Unidades de medida","Unidades de medida","TRUE","Unidades de medida","Unidades de Medida","Unidades de Medida","TRUE","Unités de mesure","Les unités de mesure","Les unités de mesure","TRUE","יחידות מידה","","יחידות מידה","TRUE","وحدات القياس","وحدات القياس","وحدات القياس","FALSE","मापन की इकाई","","मापन की इकाई","FALSE","পরিমাপ ইউনিট","পরিমাপের ইউনিট","পরিমাপের ইউনিট","TRUE","ପରିମାପର ୟୁନିଟଗୁଡିକ","","ପରିମାପର ୟୁନିଟଗୁଡିକ","FALSE","","","FALSE","Satuan Ukur","Satuan Ukur","Satuan Ukur","TRUE","Единицы измерения","","Единицы измерения","TRUE","计量单位","","计量单位","FALSE","Raka'a awo","","Raka'a awo","FALSE","Vitengo vya Measure","Viwango vya kipimo","Viwango vya kipimo","TRUE","የመለኪያ ክፍሎች","የመለኪያ ክፍሎች","የመለኪያ ክፍሎች","TRUE","Unit ukuran","Unit ukuran","Unit ukuran","TRUE","Mga yunit ng panukalang-batas","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Quantifiers","7.4","cuantificadores","Cuantificadores","Cuantificadores","TRUE","quantificadores","Quantificadores","Quantificadores","TRUE","quantificateurs","Les quantificateurs","Les quantificateurs","TRUE","quantifiers","מכמתים","מכמתים","FALSE","محددو الكمية","محددات الكميات","محددات الكميات","FALSE","परिमाणकों","","परिमाणकों","FALSE","Quantifiers","কোয়ান্টিফায়ার্স","কোয়ান্টিফায়ার্স","TRUE","Quantifiers","","Quantifiers","FALSE","","","FALSE","quantifiers","Pembilang","Pembilang","TRUE","Кванторы","счётные слова","счётные слова","TRUE","量词","","量词","FALSE","Quantifiers","","Quantifiers","FALSE","Wasimamizi kwa","Viambishi vya kiasi / idadi","Viambishi vya kiasi / idadi","TRUE","ቢራፋዮች","መስፈሪያዎች","መስፈሪያዎች","TRUE","Quantifiers.","Pengkuantiti","Pengkuantiti","TRUE","Quantifiers.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Time","8","Hora","Tiempo","Tiempo","TRUE","Tempo","Hora","Hora","TRUE","Temps","L'heure","L'heure","TRUE","זְמַן","זמן","זמן","TRUE","زمن","الزمن","الزمن","FALSE","समय","","समय","FALSE","সময়","সময়","সময়","TRUE","ସମୟ","","ସମୟ","FALSE","","","FALSE","Waktu","Waktu","Waktu","TRUE","Время","","Время","TRUE","时间","","时间","FALSE","lokaci","","lokaci","FALSE","muda","Muda","Muda","TRUE","ጊዜ","ጊዜ","ጊዜ","TRUE","Masa","Masa","Masa","TRUE","Oras","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Location and Directions","9","E indicaciones para llegar","Ubicación y cómo llegar","Ubicación y cómo llegar","TRUE","Endereço e Mapa","Localização e Direcções","Localização e Direcções","TRUE","Emplacement et Directions","Le lieu et les directions","Le lieu et les directions","TRUE","מיקום וכיוונים","","מיקום וכיוונים","TRUE","الموقع والاتجاهات","الموقع والاتجاهات","الموقع والاتجاهات","FALSE","स्थान और दिशा-निर्देश","","स्थान और दिशा-निर्देश","FALSE","অবস্থান ও গতিপথ","অবস্থান এবং দিকনির্দেশ","অবস্থান এবং দিকনির্দেশ","TRUE","ଅବସ୍ଥାନ ଓ ଦିଗ","","ଅବସ୍ଥାନ ଓ ଦିଗ","FALSE","","","FALSE","Lokasi dan Arah","Lokasi dan Arah","Lokasi dan Arah","TRUE","Расположение и направление","","Расположение и направление","TRUE","位置和方向","","位置和方向","FALSE","Location da Kwatance","","Location da Kwatance","FALSE","Eneo na Maelekezo","Mahali na Mwelekeo","Mahali na Mwelekeo","TRUE","አካባቢ እና አቅጣጫዎች","አካባቢ እና አቅጣጫዎች","አካባቢ እና አቅጣጫዎች","TRUE","Lokasi dan arahan","Lokasi dan arah","Lokasi dan arah","TRUE","Lokasyon at direksyon","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Grammar","10","Gramática","Gramática","Gramática","TRUE","Gramática","Gramática","Gramática","","Grammaire","La grammaire","La grammaire","TRUE","דקדוק","","דקדוק","TRUE","قواعد","القواعد النحوية","القواعد النحوية","FALSE","व्याकरण","","व्याकरण","FALSE","ব্যাকরণ","ব্যাকরণ","ব্যাকরণ","TRUE","ବ୍ଯାକରଣ","","ବ୍ଯାକରଣ","FALSE","","","FALSE","Tatabahasa","Tata Bahasa","Tata Bahasa","TRUE","грамматика","","грамматика","TRUE","语法","","语法","FALSE","Grammar","","Grammar","FALSE","Grammar","Sarufi","Sarufi","TRUE","ሰዋስው","ሰዋስው","ሰዋስው","TRUE","Tatabahasa","Tatabahasa","Tatabahasa","TRUE","Gramatika","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Case Markers / Adpositions","10.1","Marcadores Caja / adposiciones","Marcadores de cajas / Adposiciones","Marcadores de cajas / Adposiciones","TRUE","Caso Marcadores / Adpositions","Marcadores de casos/Adposições","Marcadores de casos/Adposições","TRUE","Marqueurs cas / adpositions","Les marqueurs de cas / les adpositions","Les marqueurs de cas / les adpositions","TRUE","סמני Case / Adpositions","מילות יחס ויחסות (דקדוק/ית)","מילות יחס ויחסות (דקדוק/ית)","FALSE","حالة علامات / Adpositions","علامات الإعراب/ حروف مساعدة","علامات الإعراب/ حروف مساعدة","FALSE","प्रकरण मार्करों / Adpositions","","प्रकरण मार्करों / Adpositions","FALSE","কেস চিহ্নিতকারী / Adpositions","কেস মার্কার / অ্যাডপজিশন","কেস মার্কার / অ্যাডপজিশন","TRUE","Case ମାର୍କରଗୁଡିକ / Adpositions","","Case ମାର୍କରଗୁଡିକ / Adpositions","FALSE","","","FALSE","Kasus Penanda / Adpositions","Pemarkah Kasus / Adposisi","Pemarkah Kasus / Adposisi","TRUE","Примеры Маркеры / Adpositions","падежные показатели / предлоги и послелоги","падежные показатели / предлоги и послелоги","TRUE","格标记/ Adpositions","","格标记/ Adpositions","FALSE","Case alamomi / Adpositions","","Case alamomi / Adpositions","FALSE","Uchunguzi Markers / Adpositions","Vibainishi vya uhusika / vihusishi","Vibainishi vya uhusika / vihusishi","TRUE","የጉዳይ ጠቋሚዎች / አወያዮች","ሙያማመልከቻና መስተዋድድ","ሙያማመልከቻና መስተዋድድ","TRUE","Penanda kes / adpositions","Penanda kes / Kata sendi nama","Penanda kes / Kata sendi nama","TRUE","Mga marker ng kaso / AdPositions.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"TAM (Tense-Aspect-Mood)","10.2","TAM (tiempo verbal)","TAM (tiempo verbal, aspecto, modo)","TAM (tiempo verbal, aspecto, modo)","TRUE","TAM (tenso-Aspecto-Mood)","TAM (Tempo-Aspecto-Modo)","TAM (Tempo-Aspecto-Modo)","TRUE","TAM (tiroir verbal)","TMA (temps-mode-aspect)","TMA (temps-mode-aspect)","TRUE","TAM (Tense-Aspect-רוח)","זמן-אספקט-מודוס","זמן-אספקט-מודוס","TRUE","TAM (المتأزمة-الجانب-المزاج)","(زمن الفعل - شكل الفعل - نوع الفعل)","(زمن الفعل - شكل الفعل - نوع الفعل)","FALSE","TAM (परेशान-पहलू-मूड)","","TAM (परेशान-पहलू-मूड)","FALSE","TAM (কাল-অ্যাসপেক্ট-মানসিক)","টি এ এম (উত্তেজনা-দৃষ্টিভঙ্গি মেজাজ)","টি এ এম (উত্তেজনা-দৃষ্টিভঙ্গি মেজাজ)","TRUE","TAM (କ୍ରିୟାର କାଳ-ଆଶାତୀତ-Mood)","","TAM (କ୍ରିୟାର କାଳ-ଆଶାତୀତ-Mood)","FALSE","","","FALSE","TAM (Tense-Aspek-Suasana Hati)","KAM (Kala-Aspek-Modus)","KAM (Kala-Aspek-Modus)","TRUE","ТАМ (Напряженный-Аспект-настроение)","ВВЗ (время-вид-залог)","ВВЗ (время-вид-залог)","TRUE","TAM(时体气)","","TAM(时体气)","FALSE","Tam (siga-Aspect-Mood)","","Tam (siga-Aspect-Mood)","FALSE","TAM (Tense-vipengele-Mood)","Njeo-Halinjeo-Dhamira","Njeo-Halinjeo-Dhamira","TRUE","ታም (ውጥረት-ፅሁፍ-ስሜት)","ጊዜእና ስልት","ጊዜእና ስልት","TRUE","Tam (tegang-aspect-mood)","KAS (Kala-Aspek-Suasana)","KAS (Kala-Aspek-Suasana)","TRUE","Tam (tense-aspect-mood)","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Polarity","10.3","Polaridad","Polaridad","Polaridad","TRUE","Polaridade","Polaridade","Polaridade","TRUE","Polarité","La polarité","La polarité","TRUE","קוטבי","קוטביות","קוטביות","FALSE","قطبية","النفي والإثبات","النفي والإثبات","FALSE","विचारों में भिन्नता","","विचारों में भिन्नता","FALSE","প্রান্তিকতা","পোলারিটি","পোলারিটি","TRUE","Polarity","","Polarity","FALSE","","","FALSE","polaritas","Polaritas","Polaritas","TRUE","полярность","","полярность","TRUE","极性","","极性","FALSE","polarity","","polarity","FALSE","polarity","Hali ya Hasi na Chanya","Hali ya Hasi na Chanya","TRUE","ቅባት","","ቅባት","FALSE","Polariti","Kekutuban","Kekutuban","TRUE","Polarity.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Coordinators, Subordinators, Relativizers, Quotatives","10.4","Coordinadores, subordinators, nexo subordinante, Quotatives","Coordinadores, Subordinadores, Relativizadores, Cuotativos","Coordinadores, Subordinadores, Relativizadores, Cuotativos","TRUE","Coordenadores, subordinadores, Relativizers, Quotatives","Coordenativas, Subordinativas, Relativas, Quotativas","Coordenativas, Subordinativas, Relativas, Quotativas","TRUE","Coordonnateurs, subordinators, Relativizers, Quotatives","Les coordonnateurs, subordinateurs, relativiseurs, quotatifs","Les coordonnateurs, subordinateurs, relativiseurs, quotatifs","TRUE","הרכזים, Subordinators, Relativizers, Quotatives","מילות קישור","מילות קישור","FALSE","منسقين، Subordinators، Relativizers، Quotatives","أدوات وحروف الربط والأسماء الموصولة وعلامتا التنصيص","أدوات وحروف الربط والأسماء الموصولة وعلامتا التنصيص","FALSE","समन्वयकों, Subordinators, Relativizers, Quotatives","","समन्वयकों, Subordinators, Relativizers, Quotatives","FALSE","Coordinators, Subordinators, Relativizers, Quotatives","সমন্বয়কারী, অধস্তনকারী, রিলেটিভায়ার্স, কোটিটিভেটিস","সমন্বয়কারী, অধস্তনকারী, রিলেটিভায়ার্স, কোটিটিভেটিস","TRUE","Coordinators, Subordinators, Relativizers, Quotatives","","Coordinators, Subordinators, Relativizers, Quotatives","FALSE","","","FALSE","Koordinator, Subordinators, Relativizers, Quotatives","Koordinator, Subordinator, Perelatif, Kutipan","Koordinator, Subordinator, Perelatif, Kutipan","TRUE","Координаторы, субординаторы, Relativizers, Quotatives","сочинительные и подчинительные союзы, релятивизаторы и квотативы","сочинительные и подчинительные союзы, релятивизаторы и квотативы","TRUE","协调员,从属连词,Relativizers,Quotatives","","协调员,从属连词,Relativizers,Quotatives","FALSE","Coordinators, Subordinators, Relativizers, Quotatives","","Coordinators, Subordinators, Relativizers, Quotatives","FALSE","Waratibu, Subordinators, Relativizers, Quotatives","Kiambatishi, Viunganishi tegemezi, Virejeshi, Vinukuu","Kiambatishi, Viunganishi tegemezi, Virejeshi, Vinukuu","TRUE","አስተባባሪዎች, ለታዳጊዎች, ተጓዳኝ, ጎሳዎች, ውዝሮች","","አስተባባሪዎች, ለታዳጊዎች, ተጓዳኝ, ጎሳዎች, ውዝሮች","FALSE","Penyelaras, Subordinats, Relativizers, Quotes","Kata Penghubung Setara, Kata Penghubung Subordinat, Kata Penghubung Pancangan Relatif, Kata Petikan","Kata Penghubung Setara, Kata Penghubung Subordinat, Kata Penghubung Pancangan Relatif, Kata Petikan","TRUE","Mga coordinator, mga subordinator, relativizer, mga quotative","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Discourse Markers","10.5","Marcadores del discurso","Marcadores de Discurso","Marcadores de Discurso","TRUE","Marcadores de discurso","Marcadores de Discurso","Marcadores de Discurso","TRUE","Marqueurs discursifs","Les marqueurs de discours","Les marqueurs de discours","TRUE","סמני שיח","","סמני שיח","FALSE","علامات الخطاب","العبارات الاستهلالية والختامية","العبارات الاستهلالية والختامية","FALSE","संवाद चिन्हक","","संवाद चिन्हक","FALSE","বক্তৃতা চিহ্নিতকারী","বক্তৃতা চিহ্নিতকারী","বক্তৃতা চিহ্নিতকারী","TRUE","Discourse ମାର୍କରଗୁଡିକ","","Discourse ମାର୍କରଗୁଡିକ","FALSE","","","FALSE","wacana Penanda","Pemarkah Wacana","Pemarkah Wacana","TRUE","Разговорные маркеры","дискурсивные маркеры","дискурсивные маркеры","TRUE","话语标记","","话语标记","FALSE","Maganganu alamomi","","Maganganu alamomi","FALSE","mjadala markers","Kitambulishi usemi","Kitambulishi usemi","TRUE","የንግግር አመልካቾች","","የንግግር አመልካቾች","FALSE","Penanda wacana","Penanda wacana","Penanda wacana","TRUE","Mga marker ng diskurso","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Interjections","10.6","interjecciones","Interjecciones","Interjecciones","TRUE","interjeições","Interjecções","Interjecções","TRUE","interjections","Les interjections","Les interjections","TRUE","קריאות ביניים","מילות קריאה","מילות קריאה","TRUE","مداخلات","الإقحام","الإقحام","FALSE","विस्मयादिबोधक","","विस्मयादिबोधक","FALSE","Interjections","ইন্টারজেকশন","ইন্টারজেকশন","TRUE","Interjections","","Interjections","FALSE","","","FALSE","kata seru","Interjeksi","Interjeksi","TRUE","междометия","","междометия","TRUE","感叹词","","感叹词","FALSE","Interjections","","Interjections","FALSE","interjections","Kihisishi","Kihisishi","TRUE","ጣልቃገብነቶች","","ጣልቃገብነቶች","FALSE","Intercons.","Kata seru","Kata seru","TRUE","Mga interjections.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Ideophones, Expressives & Onomatopoeia","10.7","Ideophones, expresivos y onomatopeya","Ideófonos, Expresivos y Onomatopeya","Ideófonos, Expresivos y Onomatopeya","TRUE","Ideofones, Expressives & Onomatopoeia","Ideofones, Expressivos & Onomatopeias","Ideofones, Expressivos & Onomatopeias","TRUE","Idéophones, Expressifs et Onomatopoeia","Idéophones, expressifs et onomatopées","Idéophones, expressifs et onomatopées","TRUE","Ideophones, Expressives & אונומטופיה","אידאופון, מילות הבעה ואונומטופיאות","אידאופון, מילות הבעה ואונומטופיאות","FALSE","Ideophones، Expressives والمحاكاة الصوتية","الرمزية الصوتية والتعبيرية والمحاكاة الصوتية","الرمزية الصوتية والتعبيرية والمحاكاة الصوتية","FALSE","Ideophones, Expressives और अर्थानुरणन","","Ideophones, Expressives और अर्थानुरणन","FALSE","Ideophones, Expressives & শব্দানুকৃতি","আইডিয়াফোনস, এক্সপ্রেসিভস এবং ওনোমাটোপোইয়া","আইডিয়াফোনস, এক্সপ্রেসিভস এবং ওনোমাটোপোইয়া","TRUE","Ideophones, Expressives & Onomatopoeia","","Ideophones, Expressives & Onomatopoeia","FALSE","","","FALSE","Ideofon, ekspresif & Onomatope","Ideofon, ekspresif & Onomatope","Ideofon, ekspresif & Onomatope","TRUE","Образные слова, звукоподражания и Артисты","идеофоны, экспрессивы и звукоподражания","идеофоны, экспрессивы и звукоподражания","TRUE","拟态词,表述语言的拟声词和","","拟态词,表述语言的拟声词和","FALSE","Ideophones, Expressives & Onomatopoeia","","Ideophones, Expressives & Onomatopoeia","FALSE","Ideophones, Expressives & onomatopoeia","Idiofoni, Vielezi hisia & Onomatopia","Idiofoni, Vielezi hisia & Onomatopia","TRUE","ርዕዮተ ገፅታዎች, ገበያዎች እና ኦውቶቶቶፖያ","","ርዕዮተ ገፅታዎች, ገበያዎች እና ኦውቶቶቶፖያ","FALSE","Ideophones, Express & Onomatopoeia","Ideofon, Expresif & Onomatopeia","Ideofon, Expresif & Onomatopeia","TRUE","Idophones, Expressives & Onomatopoeia.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Classifiers","10.8","clasificadores","Clasificadores","Clasificadores","TRUE","classificadores","Classificadores","Classificadores","TRUE","classificateurs","Les classificateurs","Les classificateurs","TRUE","מסווגים","מסווגים (Classifiers)","מסווגים (Classifiers)","FALSE","المصنفات","اسم الجمع","اسم الجمع","FALSE","classifiers","","classifiers","FALSE","ক্লাসিফায়ার","শ্রেণিবদ্ধ","শ্রেণিবদ্ধ","TRUE","Classifiers","","Classifiers","FALSE","","","FALSE","classifiers","Penggolong","Penggolong","TRUE","Классификаторы","","Классификаторы","TRUE","分类","","分类","FALSE","Classifiers","","Classifiers","FALSE","classifiers","Kiainishi","Kiainishi","TRUE","ክላሲፋየር","","ክላሲፋየር","FALSE","Classifiers.","Penjodoh bilangan","Penjodoh bilangan","TRUE","Classifiers.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"Pro-forms","10.9","Proformas","Proformularios","Proformularios","TRUE","pro-formas","Pro-formas","Pro-formas","TRUE","Pro-formes","Les pro-formes","Les pro-formes","TRUE","פרו-צורות","מילים ממלאות מקום (Pro-forms)","מילים ממלאות מקום (Pro-forms)","FALSE","الموالية للأشكال","الإضمار","الإضمار","FALSE","समर्थक रूपों","","समर्थक रूपों","FALSE","প্রো-ফর্ম","প্রো-ফর্ম","প্রো-ফর্ম","TRUE","ପ୍ରୋ-ଫର୍ମଗୁଡିକ","","ପ୍ରୋ-ଫର୍ମଗୁଡିକ","FALSE","","","FALSE","Pro-bentuk","Pro-Form ","Pro-Form ","TRUE","Pro-формы","праформы","праформы","TRUE","临形式","","临形式","FALSE","Pro-siffofin","","Pro-siffofin","FALSE","-Aina Pro","Viwakilishi mbadala","Viwakilishi mbadala","TRUE","ፕሮፌሽኖች","","ፕሮፌሽኖች","FALSE","Pro-bentuk","Pro-form","Pro-form","TRUE","Pro-Forms.","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"","","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","FALSE","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" \ No newline at end of file diff --git a/scripts/jest.scripts.cjs b/scripts/jest.scripts.cjs new file mode 100644 index 000000000..44d0ff4c2 --- /dev/null +++ b/scripts/jest.scripts.cjs @@ -0,0 +1,21 @@ +const path = require('path') + +/** @typedef {import('ts-jest')} */ +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + rootDir: path.join(__dirname, '..'), + displayName: 'scripts', + preset: 'ts-jest', + testEnvironment: "node", + moduleNameMapper: { + "[$]lib/(.*)": ["/src/lib/$1"] + }, + transform: { + "^.+\\.(ts)$": "ts-jest", + }, + testMatch: ["/scripts/**/*.test.ts"], + // "**/__tests__/**/*.[jt]s?(x)", + // "**/?(*.)+(spec|test).[tj]s?(x)" +} + +module.exports = config; \ No newline at end of file diff --git a/scripts/update-locales.test.ts b/scripts/update-locales.test.ts new file mode 100644 index 000000000..67f83bf43 --- /dev/null +++ b/scripts/update-locales.test.ts @@ -0,0 +1,31 @@ +import { generateTranslationsFromSpreadsheet, jsonFromLocalCsv } from './update-locales'; + +test('generateTranslationsFromSpreadsheet deep nests app translations', async () => { + const rows = await jsonFromLocalCsv('./scripts/App-Translations.csv'); + const translations = await generateTranslationsFromSpreadsheet(rows, { nesting: 'deep' }); + expect(translations['en']['direction']).toBe('ltr'); + expect(translations['he']['direction']).toBe('rtl'); + expect(translations['en']['about']['about_LD']).toBe('About Living Dictionaries'); + expect(translations['es']['about']['about_LD']).toBe('Acerca de Diccionarios Vivos'); +}); + +test('generateTranslationsFromSpreadsheet prefixes glossing languages', async () => { + const rows = await jsonFromLocalCsv('./scripts/Glossing-Languages.csv'); + const translations = await generateTranslationsFromSpreadsheet(rows, { prefix: 'gl' }); + expect(translations['en']['gl']['aa']).toBe('Afar'); + expect(translations['es']['gl']['aa']).toBe('Lejos'); +}); + +test('generateTranslationsFromSpreadsheet prefixes parts of speech', async () => { + const rows = await jsonFromLocalCsv('./scripts/Parts-of-Speech.csv'); + const translations = await generateTranslationsFromSpreadsheet(rows, { prefix: 'ps' }); + expect(translations['en']['ps']['n']).toBe('noun'); + expect(translations['es']['ps']['n']).toBe('sustantivo'); +}); + +test('generateTranslationsFromSpreadsheet prefixes parts of speech abbreviations', async () => { + const rows = await jsonFromLocalCsv('./scripts/Parts-of-Speech.csv'); + const translations = await generateTranslationsFromSpreadsheet(rows, { prefix: 'psAbbrev' }); + expect(translations['en']['psAbbrev']['n']).toBe('n'); + expect(translations['es']['psAbbrev']['n']).toBe('s'); +}); diff --git a/scripts/update-locales.ts b/scripts/update-locales.ts new file mode 100644 index 000000000..bd16042d9 --- /dev/null +++ b/scripts/update-locales.ts @@ -0,0 +1,116 @@ +import fetch from 'node-fetch'; +import csv from 'csvtojson'; +import dot from 'dot-object'; +import { promises as fs } from 'fs'; +// import { ReadyLocales, UnpublishedLocales, IGlossLanguage } from '$lib/interfaces'; +import { ReadyLocales, UnpublishedLocales } from '../src/lib/interfaces/languages.interface.js'; +import type { IGlossLanguage } from '../src/lib/interfaces/gloss-language.interface.js'; +const languages = [...Object.keys(ReadyLocales), ...Object.keys(UnpublishedLocales)]; + +export async function generateFilesFromSpreadsheet() { + const i18nGoogleSheetId = '1SqtfUvYYAEQSFTaTPoAJq6k-wlbuAgWCkswE_kiUhLs'; + try { + const rows = await jsonFromCsvUrl(googleSheetCsvUrl(i18nGoogleSheetId, 'App-Translations')); + const translations = await generateTranslationsFromSpreadsheet(rows, { nesting: 'deep' }); + await writeLocaleFiles(translations, './src/locales'); + + const rows_sd = await jsonFromCsvUrl(googleSheetCsvUrl(i18nGoogleSheetId, 'Semantic-Domains')); + const translations_sd = await generateTranslationsFromSpreadsheet(rows_sd, { prefix: 'sd' }); + await writeLocaleFiles(translations_sd, './src/locales/sd'); + + const rows_ps = await jsonFromCsvUrl(googleSheetCsvUrl(i18nGoogleSheetId, 'Parts-of-Speech')); + const translations_ps = await generateTranslationsFromSpreadsheet(rows_ps, { prefix: 'ps' }); + await writeLocaleFiles(translations_ps, './src/locales/ps'); + const translations_psAbbrev = await generateTranslationsFromSpreadsheet(rows_ps, { + prefix: 'psAbbrev', + }); + await writeLocaleFiles(translations_psAbbrev, './src/locales/psAbbrev'); + + const rows_gl = await jsonFromCsvUrl( + googleSheetCsvUrl(i18nGoogleSheetId, 'Glossing-Languages') + ); + const translations_gl = await generateTranslationsFromSpreadsheet(rows_gl, { prefix: 'gl' }); + await writeLocaleFiles(translations_gl, './src/locales/gl'); + const glossingLanguages = await generateGlossingLanguages(rows_gl); + await fs.writeFile( + `./src/lib/mappings/glossing-languages-list.json`, + JSON.stringify(glossingLanguages, null, 2) + '\r\n' + ); + } catch (error) { + throw new Error(error.message); + } +} +generateFilesFromSpreadsheet(); + +export const generateTranslationsFromSpreadsheet: ( + rows: any[], + options?: { + nesting?: 'shallow' | 'deep'; + prefix?: string; + } +) => Record = (rows, options = {}) => { + const translations = {}; + + languages.forEach((lang) => { + translations[lang] = {}; + + rows.forEach((row) => { + const key = row.key; + const langColumn = options.prefix === 'psAbbrev' ? lang + 'Abbrev' : lang; + const value = row[langColumn]; + if (key && value) { + if (options.nesting === 'deep') { + dot.str(key, value, translations[lang]); // doesn't work with dot.str('1.1', "Sky, weather and climate", translations['en']) + } else { + translations[lang][key] = value; + } + } + }); + + if (options.prefix) { + translations[lang] = { [options.prefix]: translations[lang] }; + } + }); + + return translations; +}; + +async function generateGlossingLanguages(rows: any[]) { + const glossingLanguages = {}; + rows.forEach((row) => { + const language: IGlossLanguage = {}; + for (const column of ['vernacularName', 'vernacularAlternate', 'internalName', 'useKeyboard']) { + if (row[column].length) { + language[column] = row[column]; + } + } + if (row.showKeyboard == 'true') { + language.showKeyboard = true; + } + glossingLanguages[row.key] = language; + }); + return glossingLanguages; +} + +export async function jsonFromLocalCsv(path: string) { + return await csv().fromFile(path); +} + +async function jsonFromCsvUrl(url: string) { + const csvResponse = await fetch(url); + const csvString = await csvResponse.text(); + return await csv().fromString(csvString); +} + +function googleSheetCsvUrl(spreadsheetId: string, sheetName: string) { + return `https://docs.google.com/spreadsheets/d/${spreadsheetId}/gviz/tq?tqx=out:csv&sheet=${sheetName}`; +} + +async function writeLocaleFiles(translations: { [key: string]: any }, directory: string) { + const languagesToWrite = languages.map(async (lang) => { + const path = `${directory}/${lang}.json`; + return fs.writeFile(path, JSON.stringify(translations[lang], null, 2) + '\r\n'); + }); + await Promise.all(languagesToWrite); + console.log('files written'); +} diff --git a/src/.svench.js b/src/.svench.js new file mode 100644 index 000000000..e69545170 --- /dev/null +++ b/src/.svench.js @@ -0,0 +1,8 @@ +import './global.css'; + +console.log( + '%c.svench.js%c I run in the client, just before Svench is started!\n' + + 'You can use me to customize your Svench environment.', + 'color: orangered; font-weight: bold; font-size: 1.2em', + '' +) diff --git a/src/app.html b/src/app.html new file mode 100644 index 000000000..bbe2debbf --- /dev/null +++ b/src/app.html @@ -0,0 +1,24 @@ + + + + + + + + + + Living Dictionaries + + + %svelte.head% + + + + + +
%svelte.body%
+ + + \ No newline at end of file diff --git a/src/docs.svench/note.md b/src/docs.svench/note.md new file mode 100644 index 000000000..2c9d9928b --- /dev/null +++ b/src/docs.svench/note.md @@ -0,0 +1,3 @@ +# Docs + +... always a handy thing! diff --git a/src/global.css b/src/global.css new file mode 100644 index 000000000..95a48ad35 --- /dev/null +++ b/src/global.css @@ -0,0 +1,40 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +[dir='rtl'] .rtl-x-flip { + transform: scale(-1, 1); +} + +.text-dark-shadow { + text-shadow: -1px -1px 0 hsl(0, 0%, 25%), 1px -1px 0 hsl(0, 0%, 25%), -1px 1px 0 hsl(0, 0%, 25%), + 1px 1px 0 hsl(0, 0%, 25%); +} + +.form-input { + @apply border-gray-300 rounded-md focus:border-primary-300 focus:ring focus:ring-primary-200 focus:ring-opacity-50; +} + +input[type='checkbox'] { + @apply focus:ring-primary-500 h-4 w-4 text-primary-600 border-gray-300 rounded; +} + +@media only screen and (min-width: 768px) { + body ::-webkit-scrollbar { + width: 1rem; + } + + body ::-webkit-scrollbar-track { + background: 0 0; + } + + body ::-webkit-scrollbar-thumb { + background: hsl(240, 26%, 91%); + border-radius: 1rem; + border: 0.25rem solid #ffffff; + } + + body ::-webkit-scrollbar-thumb:hover { + background: hsl(240, 9%, 71%); + } +} diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 000000000..75a356cd2 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,16 @@ +/// + +declare namespace svelte.JSX { + interface HTMLAttributes { + onclickOutside?: (event: CustomEvent & { target: EventTarget & T }) => any; + onlongpress?: (event: CustomEvent & { target: EventTarget & T }) => any; + onshortpress?: (event: CustomEvent & { target: EventTarget & T }) => any; + } +} + +interface ImportMetaEnv { + VITE_project: 'talking-dictionaries-dev' | 'talking-dictionaries-alpha'; // 'development' | 'production'; + VITE_mapboxAccessToken: string; + VITE_FirebaseDevApiKey: string; + VITE_ProcessImageUrl: string; +} diff --git a/src/hooks.ts b/src/hooks.ts new file mode 100644 index 000000000..b6ac5c057 --- /dev/null +++ b/src/hooks.ts @@ -0,0 +1,28 @@ +import { getCookie } from '$lib/helpers/cookies'; +import type { Handle, GetSession } from '@sveltejs/kit'; + +export const handle: Handle = async ({ request, resolve }) => { + let user = null; + try { + user = JSON.parse(getCookie('user', request.headers.cookie) || null); + } catch (err) { + console.log(err); + } + request.locals.user = user; + request.locals.chosenLocale = getCookie('locale', request.headers.cookie) || null; + + const response = await resolve(request); + return response; +}; + +export const getSession: GetSession = (request) => { + let acceptedLanguage = 'en'; + if (request.headers['accept-language']) { + acceptedLanguage = request.headers['accept-language'].split(',')[0].trim(); + } + return { + user: request.locals.user, + acceptedLanguage, + chosenLocale: request.locals.chosenLocale, + }; +}; diff --git a/src/index.svench b/src/index.svench new file mode 100644 index 000000000..642a911cd --- /dev/null +++ b/src/index.svench @@ -0,0 +1,5 @@ + + +

The testing home for {name}

diff --git a/src/lib/components/audio/AddSpeaker.svelte b/src/lib/components/audio/AddSpeaker.svelte new file mode 100644 index 000000000..cad8ffd06 --- /dev/null +++ b/src/lib/components/audio/AddSpeaker.svelte @@ -0,0 +1,139 @@ + + + + {$_('speakers.add_new_speaker', { + default: 'Add New Speaker', + })} + + +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ {$_('speakers.gender', { default: 'Gender' })} +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+ + + + + + diff --git a/src/lib/components/audio/EditAudio.svelte b/src/lib/components/audio/EditAudio.svelte new file mode 100644 index 000000000..ab456fa00 --- /dev/null +++ b/src/lib/components/audio/EditAudio.svelte @@ -0,0 +1,202 @@ + + + (speakers = e.detail.data)} + queryConstraints={[where('contributingTo', 'array-contains', $dictionary.id)]} /> + + + {entry.lx} + +
+
+ {#if entry.sf && entry.sf.speakerName} + {$_('entry.speaker', { default: 'Speaker' })}: + {entry.sf.speakerName} + {:else} + {#if !speakerId} +
+ {$_('audio.select_speaker', { default: 'Select Speaker' })} + +
+ {/if} +
+ + +
+ {/if} +
+ + {#if entry.sf} +
+ +
+ {:else if speakerId} + {#if file} + +
+ {#if showUploadAudio} + {#await import('$lib/components/audio/UploadAudio.svelte') then { default: UploadAudio }} + { + showUploadAudio = false; + }} /> + {/await} + {/if} + {:else if audioBlob} + +
+ {#if showUploadAudio} + {#await import('$lib/components/audio/UploadAudio.svelte') then { default: UploadAudio }} + { + showUploadAudio = false; + }} /> + {/await} + {/if} + {:else} +
+
+ +
+ {#if !readyToRecord} +
+ +
+ {/if} +
+ {/if} + {/if} +
+ +