From fd9b80a2cc9f851ad9fa743b1b99f98079111412 Mon Sep 17 00:00:00 2001 From: lingdocs <71590811+lingdocs@users.noreply.github.com> Date: Tue, 9 Mar 2021 16:39:13 +0400 Subject: [PATCH] initial commit --- .github/workflows/main.yml | 27 + .gitignore | 27 + .npmrc | 2 + LICENSE | 8 + README.md | 36 + get-verbs.js | 59 + library-tsconfig.json | 29 + netlify.toml | 3 + package.json | 78 + public/android-chrome-192x192.png | Bin 0 -> 11236 bytes public/android-chrome-512x512.png | Bin 0 -> 37243 bytes public/apple-touch-icon.png | Bin 0 -> 10166 bytes public/favicon-16x16.png | Bin 0 -> 647 bytes public/favicon-32x32.png | Bin 0 -> 1372 bytes public/favicon.ico | Bin 0 -> 15406 bytes public/index.html | 33 + public/manifest.json | 25 + public/robots.txt | 3 + rollup.config.js | 34 + src/App.css | 263 + src/App.test.js | 8 + src/App.tsx | 395 + src/components/ButtonSelect.tsx | 46 + src/components/CheckBoxOptions.tsx | 41 + src/components/ConjugationViewer.tsx | 383 + src/components/Examples.tsx | 42 + src/components/Hider.tsx | 58 + src/components/InflectionsTable.tsx | 115 + src/components/InlinePs.tsx | 33 + src/components/Pashto.tsx | 34 + src/components/PersInfsPicker.tsx | 60 + src/components/PersonSelection.tsx | 107 + src/components/Phonetics.tsx | 31 + src/components/SingleItemDisplay.tsx | 26 + src/components/VerbFormDisplay.tsx | 113 + src/components/VerbTable.tsx | 159 + src/components/verb-info/VerbInfo.tsx | 198 + .../verb-info/VerbInfoItemDisplay.tsx | 81 + src/components/verb-info/VerbTypeInfo.tsx | 297 + .../dynamic-compound-intransitive.svg | 324 + .../verb-info/dynamic-compound-transitive.svg | 352 + src/components/verb-info/faded-tree.svg | 715 + ...nerative-stative-compound-intransitive.svg | 639 + ...generative-stative-compound-transitive.svg | 655 + .../grammatically-transitive-past.svg | 589 + .../grammatically-transitive-present.svg | 472 + src/components/verb-info/intransitive.svg | 235 + .../stative-compound-intransitive.svg | 571 + .../verb-info/stative-compound-transitive.svg | 547 + src/components/verb-info/transitive-past.svg | 555 + .../verb-info/transitive-present.svg | 681 + src/images.d.ts | 14 + src/index.css | 13 + src/index.js | 17 + src/lib/accent-helpers.test.ts | 76 + src/lib/accent-helpers.ts | 115 + src/lib/add-pronouns.ts | 485 + src/lib/conjugation-forms.tsx | 539 + src/lib/convert-spelling.test.ts | 40 + src/lib/convert-spelling.ts | 33 + src/lib/default-text-options.ts | 19 + src/lib/dyn-comp-aux-verbs.ts | 407 + src/lib/fields.ts | 11 + src/lib/grammar-units.ts | 617 + src/lib/irregular-conjugations.ts | 2683 ++++ src/lib/misc-helpers.ts | 202 + src/lib/p-text-helpers.test.ts | 978 ++ src/lib/p-text-helpers.ts | 713 + src/lib/pashto-consonants.ts | 9 + src/lib/pashto-inflector.test.ts | 636 + src/lib/pashto-inflector.ts | 315 + src/lib/phonetics-to-diacritics.test.ts | 1130 ++ src/lib/phonetics-to-diacritics.ts | 493 + src/lib/standardize-pashto.test.ts | 31 + src/lib/standardize-pashto.ts | 20 + src/lib/translate-phonetics-replacer.ts | 354 + src/lib/translate-phonetics.test.ts | 89 + src/lib/translate-phonetics.ts | 33 + src/lib/validate-entry.test.ts | 161 + src/lib/validate-entry.ts | 100 + src/lib/verb-conjugation.ts | 632 + src/lib/verb-info.test.ts | 2680 ++++ src/lib/verb-info.ts | 938 ++ src/library.ts | 84 + src/logo.svg | 1 + src/react-app-env.d.ts | 1 + src/reportWebVitals.js | 13 + src/setupTests.js | 5 + src/types.ts | 387 + tsconfig.json | 27 + verbs/dyn-comp-trans.js | 142 + verbs/simple-gramm-trans.js | 23 + verbs/simple-intrans.js | 49 + verbs/simple-trans.js | 90 + verbs/stative-comp-intrans.js | 139 + verbs/stative-comp-trans.js | 85 + yarn.lock | 11720 ++++++++++++++++ 97 files changed, 36538 insertions(+) create mode 100644 .github/workflows/main.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 LICENSE create mode 100644 README.md create mode 100644 get-verbs.js create mode 100644 library-tsconfig.json create mode 100644 netlify.toml create mode 100644 package.json create mode 100644 public/android-chrome-192x192.png create mode 100644 public/android-chrome-512x512.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon-16x16.png create mode 100644 public/favicon-32x32.png create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/manifest.json create mode 100644 public/robots.txt create mode 100644 rollup.config.js create mode 100644 src/App.css create mode 100644 src/App.test.js create mode 100644 src/App.tsx create mode 100644 src/components/ButtonSelect.tsx create mode 100644 src/components/CheckBoxOptions.tsx create mode 100644 src/components/ConjugationViewer.tsx create mode 100644 src/components/Examples.tsx create mode 100644 src/components/Hider.tsx create mode 100644 src/components/InflectionsTable.tsx create mode 100644 src/components/InlinePs.tsx create mode 100644 src/components/Pashto.tsx create mode 100644 src/components/PersInfsPicker.tsx create mode 100644 src/components/PersonSelection.tsx create mode 100644 src/components/Phonetics.tsx create mode 100644 src/components/SingleItemDisplay.tsx create mode 100644 src/components/VerbFormDisplay.tsx create mode 100644 src/components/VerbTable.tsx create mode 100644 src/components/verb-info/VerbInfo.tsx create mode 100644 src/components/verb-info/VerbInfoItemDisplay.tsx create mode 100644 src/components/verb-info/VerbTypeInfo.tsx create mode 100644 src/components/verb-info/dynamic-compound-intransitive.svg create mode 100644 src/components/verb-info/dynamic-compound-transitive.svg create mode 100644 src/components/verb-info/faded-tree.svg create mode 100644 src/components/verb-info/generative-stative-compound-intransitive.svg create mode 100644 src/components/verb-info/generative-stative-compound-transitive.svg create mode 100644 src/components/verb-info/grammatically-transitive-past.svg create mode 100644 src/components/verb-info/grammatically-transitive-present.svg create mode 100644 src/components/verb-info/intransitive.svg create mode 100644 src/components/verb-info/stative-compound-intransitive.svg create mode 100644 src/components/verb-info/stative-compound-transitive.svg create mode 100644 src/components/verb-info/transitive-past.svg create mode 100644 src/components/verb-info/transitive-present.svg create mode 100644 src/images.d.ts create mode 100644 src/index.css create mode 100644 src/index.js create mode 100644 src/lib/accent-helpers.test.ts create mode 100644 src/lib/accent-helpers.ts create mode 100644 src/lib/add-pronouns.ts create mode 100644 src/lib/conjugation-forms.tsx create mode 100644 src/lib/convert-spelling.test.ts create mode 100644 src/lib/convert-spelling.ts create mode 100644 src/lib/default-text-options.ts create mode 100644 src/lib/dyn-comp-aux-verbs.ts create mode 100644 src/lib/fields.ts create mode 100644 src/lib/grammar-units.ts create mode 100644 src/lib/irregular-conjugations.ts create mode 100644 src/lib/misc-helpers.ts create mode 100644 src/lib/p-text-helpers.test.ts create mode 100644 src/lib/p-text-helpers.ts create mode 100644 src/lib/pashto-consonants.ts create mode 100644 src/lib/pashto-inflector.test.ts create mode 100644 src/lib/pashto-inflector.ts create mode 100644 src/lib/phonetics-to-diacritics.test.ts create mode 100644 src/lib/phonetics-to-diacritics.ts create mode 100644 src/lib/standardize-pashto.test.ts create mode 100644 src/lib/standardize-pashto.ts create mode 100644 src/lib/translate-phonetics-replacer.ts create mode 100644 src/lib/translate-phonetics.test.ts create mode 100644 src/lib/translate-phonetics.ts create mode 100644 src/lib/validate-entry.test.ts create mode 100644 src/lib/validate-entry.ts create mode 100644 src/lib/verb-conjugation.ts create mode 100644 src/lib/verb-info.test.ts create mode 100644 src/lib/verb-info.ts create mode 100644 src/library.ts create mode 100644 src/logo.svg create mode 100644 src/react-app-env.d.ts create mode 100644 src/reportWebVitals.js create mode 100644 src/setupTests.js create mode 100644 src/types.ts create mode 100644 tsconfig.json create mode 100644 verbs/dyn-comp-trans.js create mode 100644 verbs/simple-gramm-trans.js create mode 100644 verbs/simple-intrans.js create mode 100644 verbs/simple-trans.js create mode 100644 verbs/stative-comp-intrans.js create mode 100644 verbs/stative-comp-trans.js create mode 100644 yarn.lock diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..11e1754 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,27 @@ +name: CI + +on: + push: + branches: [ '*' ] + pull_request: + branches: [ '*' ] + + workflow_dispatch: + +jobs: + ci: + runs-on: ubuntu-latest + env: + LINGDOCS_DICTIONARY_URL: ${{ secrets.LINGDOCS_DICTIONARY_URL }} + strategy: + matrix: + node-version: [12.x, 14.x, 15.x] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: yarn install + - run: yarn build-website + - run: yarn build-library + - run: yarn test-ci \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e8434f --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build +/dist +/dist-cjs + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +/src/verbs.ts diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b42626b --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +@lingdocs:registry=https://reg.lingdocs.com +//reg.lingdocs.com/:_authToken=${LINGDOCS_NPM_TOKEN} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..152ffce --- /dev/null +++ b/LICENSE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright © 2021 lingdocs.com + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..98bd2f6 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# pashto-inflector + +[![Netlify Status](https://api.netlify.com/api/v1/badges/ca3a7720-876f-4375-a77e-2e7bfdcee48a/deploy-status)](https://app.netlify.com/sites/pashto-verbs/deploys) +![build](https://github.com/lingdocs/pashto-inflector/actions/workflows/main.yml/badge.svg) + +A pashto inflection and verb conjugation engine, as well as functions and components for modifying and displaying Pashto text. + +Also includes the [Pashto Verb Explorer](https://verbs.lingdocs.com) website. + +## Development + +The Pashto Verb Explorer website can be used to view and play with the verb conjugations and various components. + +``` +yarn start +``` + +## Building + +### Website + +To build the Pashto [Pashto Verb Explorer](https://verbs.lingdocs.com) website: + +``` +yarn build-website +``` + +This outputs a site at `/build` + +### Library + +To build the `pashto-inflector` library ready for publishing to NPM: + +``` +yarn build-library +``` diff --git a/get-verbs.js b/get-verbs.js new file mode 100644 index 0000000..d989aff --- /dev/null +++ b/get-verbs.js @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +const fs = require("fs"); +const fetch = require("node-fetch"); +const path = require("path"); +const collectionPath = path.join(".", "verbs"); +const verbTsFiles = fs.readdirSync(collectionPath) + +const allTsS = [...new Set(verbTsFiles.reduce((arr, fileName) => { + const TsS = require("./verbs/"+fileName); + return [...arr, ...TsS]; +}, []))]; + +fetch(process.env.LINGDOCS_DICTIONARY_URL).then(res => res.json()).then(data => { + const entries = data.entries; + const allVerbs = getFromTsS(entries); + const content = ` +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { DictionaryEntry } from "./types"; + +const verbs: { + entry: DictionaryEntry, + complement?: DictionaryEntry, +}[] = ${JSON.stringify(allVerbs)}; +export default verbs;`; + fs.writeFileSync("./src/verbs.ts", content); + console.log("fetched verbs from dictionary"); +}); + +function getFromTsS(entries) { + return allTsS.map(ts => { + const entry = entries.find(x => ts === x.ts); + if (!entry) { + console.log("couldn't find ts", ts); + return undefined; + } + if (entry.c && entry.c.includes("comp.")) { + const complement = entries.find(x => entry.l === x.ts); + return { + entry, + complement, + }; + } + return { entry }; + }).filter(x => x); +} diff --git a/library-tsconfig.json b/library-tsconfig.json new file mode 100644 index 0000000..0e3a305 --- /dev/null +++ b/library-tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es6", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "downlevelIteration": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "ES6", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "declaration": true, + "jsx": "react-jsx", + "outDir": "dist" + }, + "files": [ + "src/library.ts", + "src/images.d.ts" + ] +} diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..10728f9 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,3 @@ +[build] + command = "yarn build-website" + publish = "build" diff --git a/package.json b/package.json new file mode 100644 index 0000000..25c02fa --- /dev/null +++ b/package.json @@ -0,0 +1,78 @@ +{ + "name": "@lingdocs/pashto-inflector", + "version": "0.1.7", + "author": "lingdocs.com", + "description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations", + "homepage": "https://github.com/lingdocs/pashto-inflector#readme", + "license": "MIT", + "main": "dist-cjs/library.js", + "module": "dist/library.js", + "types": "dist/library.d.ts", + "private": false, + "files": [ + "dist", + "dist-cjs", + "README.md", + "LICENSE" + ], + "repository": { + "type": "git", + "url": "https://github.com/lingdocs/pashto-inflector.git" + }, + "dependencies": { + "classnames": "^2.2.6" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^17.1.0", + "@rollup/plugin-image": "^2.0.6", + "@rollup/plugin-node-resolve": "^11.2.0", + "@testing-library/jest-dom": "^5.11.4", + "@testing-library/react": "^11.1.0", + "@testing-library/user-event": "^12.1.10", + "@types/jest": "^26.0.20", + "@types/node": "^14.14.32", + "@types/react": "^17.0.3", + "@types/react-dom": "^17.0.2", + "node-fetch": "^2.6.1", + "react": "^17.0.1", + "react-bootstrap": "^1.5.1", + "react-dom": "^17.0.1", + "react-scripts": "4.0.3", + "rimraf": "^3.0.2", + "rollup": "^2.41.0", + "typescript": "^4.2.3", + "web-vitals": "^1.0.1" + }, + "peerDependencies": { + "react": "^17.0.1", + "react-bootstrap": "^1.5.1", + "react-dom": "^17.0.1" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "build-website": "node get-verbs.js && npm run build", + "build-library": "rimraf dist && rimraf dist-cjs && tsc --project library-tsconfig.json && cp src/components/verb-info/*.svg dist/components/verb-info && rollup -c", + "test-ci": "npm run test -- --watchAll=false" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..972a74ab34ff7478c8643b0fceb37de0884e55b1 GIT binary patch literal 11236 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 literal 0 HcmV?d00001 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..123216bead558d8f8269477b0dd0d370ab20b47a GIT binary patch literal 10166 zcmV;nCrQ|eP)?EVD4I!>|tnv-Nb}Tj%$w9)_?_FZbTL-Q4<5sXBG)Ti>ZZ z_tZJ32ySx`NFxL&jn?8W#YF%vp;dE}>lxq!j`#q0?$R-Nm?sb~%t%2)Kk!tL=0b z;}Y8CKw2T-5;}?PWPoF(sYjYUhPTNtBMp701zQNshq{E0ar-wc4)&G?on=UzsgW2iiH8fu zFb28!qQZ-+VZeoLgbYW%b()gQoV*&Mc6*6o4%`QNiF zm{k|@^dbYJ!16MJxSW}XfRL32f85HLX(Y%k47>>vZ?T5;-TnHWUe^Vi4x2gFLF@?0 zX-{Z%3TOFtjTDlv0MUgEj3LkffHTv8#3v(>B6l-`YY0*EWTh1JMpL*?`S@wm()#pH zJ3_0STw7G+%^cv%jgWo?1l}BwnC{`e%9f1RIp6ymJ+cfA*9k051=E z)>q>~jl>T@_zwU*07Ne`+?F%~62Lw%{%NrMpHaiHk}e7ANlUd+K*|t$+tNn^p@zn@ z8FaTKzK&em*ixD>5Ee|!2>d&LPWER5C*0d&>4YW;cRZoh$6m$3@(YM)8i+3ks1M+p z7AEa~N4AK%#MuR=H(A-(T}Hm|^p8i!61x2=npnRN5_b`x{KjtUBm@{}hQRNcJP$ef zs@;)<-c%Os)++f1BJKYH7}H66Xxp?ACLD|qLb7c;{DRTN!|)16ev_?bHh!BS=-Hu@ zg7vn66yrpWBXs$KqVYtY-+=i%5Hez1N6K~6CE=q3KD@gx0~L)vgbY$4chRQ4a0416 zKP!T-^bFzLu3`9`L~ceah(2c4e=u@#@kdSq-w}jXzU0b9bNaF5TL^qF7`>eYl3BV) z26nb;_-CCTuk8w8SF6^cUrcRKU%!DXdpG04+*b7S8xW4zwP@hLZU#L{f|le@e4y3| zK5R!oQ(0DgIRg){qzlRJ@JzGV+JT&iB>Zi+A2068!j6y@4T6rRskrKaejVRFqZwEB z4naE}Ox)|$>RL2M_qB6HPK#ou5O^FiF#j16|G48`Ahn{)8eu1wR&+`d+|aaZ(e!QI0S z!fX33c7Qn34q`bqZ%Watc9YsxD5~c@)K&L|ZzjepR+%Ab+|;?bVviq>ZRL+&`U zm#aJ<-yhO|D|@v#=R@((A_>^Vgc48K_w?{-_o>VpTbgZzUj6%DvB;Su{O+PNT!YlN9{+hgY4-eU=IOU+#2%UcjjI8*wvO3TBSZ!JT+&C z@L&!zPXO9d`qQ~755|(3Y&^F;t3$V3vN)(emzxGO;-&#jPE8QiCF4(CpPV_o8XGAX zwAARgoY3p%mz*a&{3w`IWSptTmCgntkT4EiNeB?U@W9(vMWEB#fr!A2@@}YZ^4g+9 zPoKo2WA>p}hNWCdW-ZF-`hXZe&YL{zy<`M+G}bagb1*2@4G?E}1ubUq*p3v5<=-V3 zA&y|T(TECtH)>=(8e|Bq+!o=OAw1|pe)JdJFw)x_Jw-MG`bndwf<1gHn)0b3Jr}COeE#7FYK!|lHa>vsMglzKR za(@9vd(MFRZ!23^5`MNW7Zr{6m>cbDIj3tY?$0}bY)^dnSc%2SWD~HBpk0$!IO7wu z=QnkCRqXPH#;VICj8Xvol2x{e!&n*Kh>s&Rh(v3vB;Gs_ILA8x|B*2a*<@YJ)4_BzOcP^{O~Lt#RdD(!{=B#`q<5@mEgk9v)8;eVZyTHHunh0rV@Hx*_;bBmVW>+ zB5~@qja0VsYoYa6r|*P1rOjx{mLBar16TXULYX91H07q7{Atg_p`cdGaUz)m13G4p ztVf>=)3{-W>J_?-+&E^+>`%>_%oIYaVEpw9f@6dbe=@1VtH#7J_v6yjm$^t zG~PQ9m-!3eg_f+U$BlOh9VevBt33u^H|&mJl^M5+rVzS(!R!J+E+(Qc#<`s1x+@#` zlSmET2$e%W93h;n)T75MJNoPXQ8?E-z;v71H8~R5D_SXaW74QQf|ZGkK5|UbgkHWp z=;^nK78B@tHo?!lPd4G1=8sX&*5+jP7TLHy^IUWzbK|1ikHYvVNl>9K{9Nr&zU`7E zv&@qsbnU!g=0Pt#2&TKuierAawHp5jS6gCg90|3ur!UUP!-c+~ru#iyw_W_CR&muJ z{#};{-`{UqusMDSZ6gvUw7NK{971<8)1$=Zl-tr-VnOqJ*ex3qT~A!&x{@DLvc7~& zGPhcod$AJNHXQEEgfJ1`o4=W#Nc7?*VM13eD*2K$uoS?6#MD22)JA&@dryVq#b12@$$#;q2io`L7I&PD=G-2EPqyYmdAHB3j#pCLgpS5Edn5AzzCPZ`PSsysoIKV1 z9`?#6GsSi&OT~TMoOvEH$lM@6H+-~1=sV~@&v_!=Y4OHV$3#~Y%=?Bvatku znInNo1=D`AHx~J^6S}ly3V_GjUWYQjHE<|;LfdU}sFV5T%<)hzJgeI2P{zP2?4qxI z0rwOX&Uz}AIbtGoRq2Dh3`AZh(7CY)O{7l*2A*nqAA4=`LAUGJU+apS0^{K~`J?by z4AQmGOd@+7?-&MuqQU#Myu$nUbTqa@LVq;x4sTAzz=uiV9tN8q&2xl?FNN0Pvq()x zI-C0MXLb1zn6(J!ToHLAZ%Lq;Po4%akO1^3kB&>o@QevSo#c>6>^ zxU^u>tbd$p;3;QbwfI+A{z&Kv5Z@Z_?1}VOW=C1m2iPUm^B&eW6__+R>jKlSzT?$A zWyvU2oN#a0w_Ehkm&_?4FG+zAqR8=a!gL7VERMI>%a4?+kSe| z%ZgJHy0Wz7d=3H7auulM2QkUhMI9&hgj0JBd5%K{X{CAkkD(E7G--Hw1q_YZZhjgbgUxvTdfuN zD7?*dQmb4-<=ME>KN2c&)@>(1pg9cf?G2y}G2Lav2B9FxF=s$tG%V?pniLTbj5;_xkU7HtNqR$ zVWsMDw3Av#azA_OWFF`3iz{3*pB(n+JJY+Ny-{I4ncHX82*xENz+?I*oL&<3OEW)Q zFnQLD4hg+}(exf<1pbeJf{qAh$G@wv(lz>yXa=|nEseL(jM7nk0FL(!#F^gyu9JhiyhZ zRD@m&N6>DLct}G4UZ@DV0a{lK)p{UD_!Cc@v~Vqs6Wttv_Lt8=yY0#6(5E{ z^5p{`$*&#xUgA-Nt|~40Dg!Sv(A9B(AES^eMx)G;XgOVOD}SYtfT}g>CC${7DyL&% zhJLiQ9@>j*+OD*1YQ_}>;L(YP))R1mfN$p&&U&X^<->$l6+>?vEbarNL~+BWHM!F` z1Of3*HN>a(=5xxieIYLy(G~-eSTjJF^~Wvpq4r9qhb2`#_E?6@u73%@<%!95N2M$R zx`g(pRiK^r#L%?k#DluQxN0bqj0L(Ro-GvhNrQh_P&i8!*Z=nkT~S){Hh@cPT#q}IQxIqh zLtFSECB51(S;|I!x$oi{|uiHe|Wkr3sv}U#=b)6tl09>4u+wR{OGG-J^p7kI_lVH95=L0m+Q3$)r z*opvc-4E@rYXRN9ixqig0pzH}FIJ8Qh!-_Pwoj$#lf@a4Whw#DRs`M2oP~h0qn}?5 z+G|g3LC*9--gItK0ZK;!$oP9}tM@uuGp}fn*Q>n-lPifjYqwl&Iz&J+#QQ2ZXgkS8Z3Jk4GqmSc0ilSc z3*nwwFs>a3WSLlKp0QVu=c}Xwk|glf>F}t$rMr|4!c~C(`d!f8uCmUS_6W$Y4u>3j zhS~KybOBsORi(4=y@_Yd0UG69Laqd1>(q0(~_ZeciEXih#kO4SS&d zeFG3qun@h?XxJZfjhH;zxi0gDMu3sLJR`Whur#wL8K^ zzybsqx-vN$0XF}UJ`419MY;%_8Ubpe^3swz0&-obTm(`b0S5LflcN>{`(Mqm2E8x? zTZs5GVzH6I{Z+t<1kSK#I#;Tr5Mb<}%F^P`88p^Wip8f)3y8O{v2O2FLx8|*l$Yam2Chs!<M8hM-5TYmY3IQrJxZ!UjC;u|0LToAtINLMeZ$xep zog}xw;lqiU%uD?T;plsp_Cj7?3;*}AF4{S?RuWe5SyEhZP1)_5j zmEn#{83eXVP5vj9FDU9q&|U_iQ#buk70Ei5^khqe@yIzpivL7D7W#^^+1Ie-KM)~1 zWwym>iV{Pp?`~oo{{Cj=6BUr^v&$);UW`u}#y6>a!OwC8Wk18fH#-eW=Dj3P22GUZ zZ8Rz<7)-i+PqZSGXTZ}S`kr%8?=*ztp4j6JBQyITG6K!;`9jb3qHm_7_jztL;bM}Y=T5E zljX|;CKv6GGWQb{eJ|J zTYNGGkTp*Pz58uNPPe)kddJv>2?zG~z@FMcc9|f1T0_kRXWsSD{(rxMwItZZ2#Y1u z_Hk(1ts#SV3ee(+#IwHUZtL1#D~b`CxVu%9&Y1{ERSC+C@$LXU<+bS9cN@C(*!^!0 zM%;*>c!2tNRCe{=9Rs0GZA%+tS;6F46Vx0>5qItUl8ZbVEdw~YEO1iSklaj!6}o|$ zqif_UGdvd^fl|KU;eJG+cK{mEQD67p5&iJ%-G7VeWIhtx-P;GFexG%Lj?B<~5JO-dgBAc!q1n_1&IE^hMeQm`2U979&C*#<|5X4PS&ro^uhBP`kw*xOIFtD zFur@ATJ-2$Yw79Sj^o}P15mfe{2UVHP+;a|`H?=i(6njM0wE`~m7}l9<{Y>U%=ZFN zKi?-yqE#<7?f~;j2|V8;NB*t%gkpPMKR<$XN?#+pzLbC)qJ9*&oe}}%q8l`Pee}}A zj;2oMts6$c(7k3)r$~Hn{-l||YxkC&^y6=NFzD$&Ov{5VCo<8sVDu%x!|EgkHxuYn zW_}(z|0AMv&Dgt(m1)soY_i!aQkSxo3rcP!!V?VGQ*+AfMc6DaE9W5k4XL!{bZ%eT zj;+JcP@j+$dkS=TuK~}MqYGzz(%va1Zw4<9dMY+*!%2j@2=X?IR$tBVY4;tlc^^(V z-TEhk`9c$~gD}(y`lNymeFknq*WA6fs(P@l7j|tQ9KAX>vAyOa`JJJYf`>l@OqFh; zqA`h5zasqxiibh?0o-CaF<}-pH%6>QhTqzc!DE#PHD{w{Q$D15mn|(U<#$F-3BG>h zTq#ZH4NuJ-s|!Qj4q0A?;ZQW73T|j6u&Oqt%&T@2OJl%8U=K5S1VK18VL}BR4bEE| z4K}i~g{Px?*0iC%oci0Own{F(EKMCc!J! zjk*A;S~X)+;{mGge@2(cfL;e9cn5N8UPjl}*4A7@h+Iu)^?1lADKJWa@|opG2+_mr z-`Ygi?Dd5(IDZ|4NbZU|-ucys;r31WP{cN&g+Tam!K7KgKUP*s5?Z+yD+j4OND5jM z8ft*)O=9C0O&V68y#)v3y%<_kROAcv3j{)1sFw!1iUdt1U{q(H+$!*BaQ+$yk#vM^ zT)Z@y(B+!+erv>(=^N65(9x&pNPhurdZBi;%M}d%RaSk@vjgwFwb^`_5z5{jA7s6 z>9R-aeCx=mv)(W}KKoQks7s;EWxwnblA%J4a3=!;;!!%$zL_}((0@pk%@-@f(NLf4 zj}fo)kho^}q?uJGTYE|ox}vPO2u!ogJe{KiW_~=saF+6AcS=(qxmAPdQYq=rb|mzw zB`epR3Q)46>0uu>SB-%*k}E?_#Iy5;aLI{EzO}C-WeB~lG9RHw6& zpAv+wUiwg1y(#<(7++2Xl#`6z#)kan$f?2A7RZiEBr~XbQOSjd#M1x<$2B<4&c2Km z^dDN4aQjB}m0RMj5pgbRzG$!n>9fbOQy^=XQ)ottx z`H?<1w1|4dx_Z$=gLEVOR{&>O0y?l6F zDI)jmvmM=fsuV1fNzD``^4^^TlFBP&V4ncpkY70Styq9`G@+xFL%jnYA>f`^7L!OH z26mE^-!7OE{8u95tr}DQcu_yf(*6SA3s%jcM-`#ufK-b(o5L$94wMvLRSl1K#cK1svpg)?80)AUJKG;h_SMdrlr^3ZMM|*$e%2TIwul`%wDkde+ z^oTcFx}fo3Zc-O0ho;^QHojXhx%i*)sNz^cuU}Af2a)#QWbNr3#fk{KrDj|;^0wlS z;sMXip1VDt z!9vHw7s=X?cHE@dFOVmFCQ&)C7B?~j~3Q@IHp(aOt; ze@;vfIYJq$l^`5sLtg)E4c-VQSW?+hgpR%|SX%sq08KSHG&J_DU^GI|^|8LN6}#a0 zd$!d`5ziChn)pYj+6Zc8mUkBv&MNKbkT}WX000MZNkl|@l9QGljn{y9t@9tr zpN5Xb&C?Z&`byl%E)6B-Ewy$)dB_qx})U$b#2|_Q z{1PH^TEVoSDTP8DL1^XK2utlT5KndBK1c@F5NM%~j3?TQ0$Qo(=L;Vg?vp-sbE%>W zle#;$Qcn|Pza>dd9W^Pq*#ucp5so1Ax_NW^3XidZ$n>OFvv5*SsZt!(03K#GUM z2y@k!y%meJMJA(_1l2He1%a!Wv7cGglaTey>dx5kYk;4L0umTVKpq1lsI5MSDdmK0 zS!d#tgc?FDBAl3m^e(dP`U+S`m+P+(o z%NFgV1tmId^kI2mp{G?&A8}`JccOA)8RrZ_m(Bh!W>zUy>HI|>%YLL?9|raV{QIoz z`ndxq{I}(4=8hory7|SIYaV(Lj6mA$=;^#5qJ69zKdfsw@cf1MT2E%jxa~GRGq+D9 zWUNT4fwyoTq$RY%&70k~Wg64Ea zCcPsFt&pu+F#8G#ekIjhcNVcCMa5EsH1wa096_bACbgQqP{$Cuc3v>E(JSV&`;wK} zdu)fiFhKv(2y=%IG2ZGdGCRhGZby8>6T#j_hEQ*2oMXo>xO13-fFkp+GrZ#Q!MDuV zY3JLNC(_}VT`<^qwKGrUBNym6LaV17 zJcB(~6L`*{+ceiVZ3!il5?TwUCy6|N$Sa(_=~UPJNzIbLV8;>qu=!CsW1tS-3mc+J&Uzq$R!yiW1vx_9GA` z&`M@5(^E8ir57lg*I>$?A= zk&}O}Qpr-fr3Imn+yP!5^laEfml{kn1<|<-R@oqFx6TAv$6$mZcoRwaaNt1K=gfR9 zH$k0D9hSBmt)6u_yK&rjDezT|@g>R8k4RhI0W@`o%n?>cOdlC+yzkMpt?J%o6s2%fyfpDg`YimgV3N)Gs<|{#z-Zzj89fTENEE5|2-7tK+pWW8d zlxPt|XVLcL+N3?9k6rrG>#ozrUU}94p~*{$)sw_L8bp1W(MJ#kQZ!LF#Ee}eP{T}X zNb(AwW~}(|)pdJP%}bH&AI@n<=pz85rAx09V-Ak#>hp-c(%?ZLaW*l3nSs#^9!Nw^ zO=i`>ycI;{#Qd=#@F5$XO^itG+AeDkIH|sMvILEH{OL^S6Jo_26cwd`EEckdKDa3`bZ>dOt}c@9HgK|kI4+@+MX)VOCt3-qy%iT1lX@{zwY8(!V}!E3T0m35J5x+g;XjyErzi$aOF13soU?KxIcC1A`&`}=bZ27a?bZ$!hZ(k>t9IesHisf zE5<&M+G^KXd=-Sj*rfI9fRx$QnjAn%DNa_=c?Puus90$lNtq}%6{-p>or)3o>YXp# zC8bn4VFTXXl!Zm6=u4_}(?m9ofayaaIq_!3h0e$Zn8dhMA4j><)&R_pXR{n^xFF|j zK%^(s58zn$uR%v8Z1IuCLitBpf;cMlXO-e_O{cEgJ2X8y!Mucy-y97)r~&VS1_(iSNFI zldRetfEhF%4n=h%5izs6CM>=|1h*x`QvlmnjkIVO+`Oap@{@eP2LQYOvAju3sWX9d z@@4LnR|L_pbZ6LTW$-BgjjNoP2k@3by&kXUc4hEldPVc+wJcZoZj14GzHXCPFsY{G heVl^#?BA3hzX6))=2DTN{}MK?t+v;DYVi;-LmbrJNKAb=x%4|zQBa}G0B{J&Ue3i z&OMJI+~tSv^8UCj0?oVM%W}zqJm$za^8iF@FeJuYo?rIr^-K?x7J#;ksHuf?fgOOt$gi9w&b5ablt-vHG46avajG9%jk!E1^j> zvo~!D+ZS&kaI&s)rmBg(1X_^l#QQtP;*-|#F|{0rfzRf3BU|NLOc{JkQ{-y*+N$$5 zPsKm|b-D+d_yxdp2IFwJ70rgJD6#y z$6MhaR)~4v?2g)LgG!`{Kr_w7rolEG2)D$5OvQ57B1~5%#ALTYz_e}C3}s>QhAo}Z z3^HHLOaWib&mcTJjJ`YcJKBsM%SjeHim=pK5|d>T0t*o1V9C0QM~H}{1pL0LwE*oJ zskEoR8K)wbEq2SD9xQYeT4X6NVK@T1*bBHca9;er0Q_9(y2?g6r0Z&afe3(5G!nVX z2%@pS2?HF7igQIa%3TZLBx}r*T~z7{LizqAFfbHVlO?&3D?MiA0vN3w7i0+qcGW)0 z()e*Spgs;GFw_N&RCv^>&`3#@7?yQq&k4|lYZjTYYA(2Fa#Th_d5rwN>Ky>qXM~)l zveM85>a}Ks@sJyQ|MVyVGuN90jsuvVCT2!z;^1kBKQF~?h!9z`0GN_BENdozeRU9o z?2M4pRUR}T4hA63bc0D0J2qmKfqItH3K?XioRatv)ncihq$sxsPOVya{4|py(-aWcX`F>VZat&^~VHk%H;H#Ba9ivEzlf;QL|9rI9zNk z0dsteV8C~y5EarEFy*K$8r|MEj*i^u)J}b_5aJjCS|$YY3R*FK(iMwIXL})fd*YXn znN}qoNTNNWq54;VmfS=#0MyDMe5Wb0pB0)TB|QzoQ?N})1@0D%%`&f7{ORe+!&A5AEfx5(xOJK4Q>|BR4biRx)k$cq{7dB>eR?l_1vBxF_vSO?hC} zvso#iRv>8_c#A>Duct4nTvJ}TP6>3Dv1j}W!*XgHXo*IpD zlz=+p9}wc>PZ~!{q4EbCgHL)kylI(`6NaFrzQ#-7PeIA2;#9mC7!tsT8p+C{a{ZQJ zF=-YAe0njnc#R2bD8v5(00Rts#S!_=oQ--Q5z(~%j9MG?i9--iu*6CxEF!>6X1lFf zMcV-!5rhMShTM1Gdfhryj=~}>0(QHuZ!5Ed{ggixQO6TQFmW#s?C^NswN{=~@kx{g eY1sX5D*pj(`t{5m<{SV30000md;yJ<7t(yn$?w*M!dOW>69#8k~+VAsE^>`wv>(L|Gey+#!;^`jG z`RD@@P-yjdW%ZZWL?;N1@gJ0i+J4C8Oo)Z(8{hOtlnK6w{2ZQ7@KEyM@^k)(RPaF4 zu5UT=BI<%ZuNi1`TI+kK5N^5B#zUju$@KoHa@ZS@=L@0OPlRy%=ctQY_#X5&#QR!# z_@eUgWWQ#;O$hJ!9_m!S;~)Ds-MsZMP1^7;#)5p;MxuMS?l-J`ij=gpKjK7)o0|ULW%~rl|u}puuG)@Dri&IHZ{k9+YqS6yO zJ;s3wL(h^oBH3uUPr)>WuKP_weTo)=9<=_jJW!_}SnZ?BmX4$mHA_-(&|m> z?~*#1MvsosxPqAan`wF6LBEc9^sSts(hsWktLA`H=V<8&d(zDpRq}nJ{1EKNo0u=KBPkoI&tI;43(rHoXzWh5Pe+PJh$!bk zW)LzDILOoGy1ij*BvGhu#m*!Jx{I$RBmU_fgoIL4NS_M-#t5c@pscr-T05m_+5bc^}CH1MJZfJ3r+M{w_}R zeo-#5_qWYa#<8n(`OY((co^&EH?)2qecvAbJ&5AV|{exj0Z zn$0@nG{BiJ8bY9^52JajE zU@s{_ePuvQ^t9rDPxULTW2_;^Z<*p}ZNCHlh%Q%uPhS6ysXyk@&7kudXxWCX<2h}_ z0r^V}eM~&u>Wf#j(U2EEOJTTm%K;KFC(QjN5o_mFbDgT^L6*sWF5_Td7k#p}MZz+L zrmxveGah;izK?zUlCoXbE%x^hVY|u$(b%Q@y&P~_^s&oGLj&20ZSJI@IZ~MhddSYi zZaIuyCK%Z-9FZ5J>n}=Bzsuq@xybVUHQE2ngjZ+!jJhqB@@v_@?ep6N6_uO55z7vB zhIb}3H(e1o$!81`rnHX%>|3~WnbOaVSF!jq{NB}65L`w?9AIyO^D~1`N=c#waSk-T5-~WcnX*5rK%~h6_o`26+s8HWt+PQ*tA8|{Ju;w%# zkg5C4SX;MS>4#L$PswKa{EVqi)HHabsLBC z8T*zh{g}Gt7Wt#--q159-qlmDG0A5Pi^?iZeRO_?_fEE_M%j8<2+HT9-)`>9XT|*5 z2wh)!k9vNaRKMQFw-fUBu&=Jmb9$Eqo6m&omkoGra`m=s#-DkXG$hV+l4-50sEB>T z8Iq81;8>O@18`NWu=!E~T9AH}Jkxov!_JzSjS8rGzg*|zt zW-FZbEOjq|9g$XYU#3aNx3lf#jjx{UUl#ir{D~g?aGC2m%kMbd|L+KJoCG0SPd=Wn zTATzb9shF}0Y2XcBJrR4#MmFOFANAolo7C7BjKA2@-34tD-Lfzi~Bf`e(6;lmsjKE zq1LN>VLq!VTY&X_f7CGsrS6s7hFJUiu>a3`qms`TiS=fEt+COgsf@59_FZ*6qe?CI zK+YfFOqZG8>d=pAci{YA4}J3Pt9cFCm80{=-(3i+`G&0+>wS>RXJS_$B%3yzCz;oN z_@1v|kG#F&vFv?-X4Hy1XTAY|>2!#OT$0Q=0F-7j{YD*sT*E{*Hnu zElsXfE51yAKRGAbVv3(R$#JR^LM@j9JKG#*IimbIa<#XlJ4^WLcU+jXUCw;m_-plt zFb^8oemi08sIHLx@~Bh?{BAL=%8uyuHjIBye9MoW#$j$_oF+WFSB)(WK+bpgbDz+( zb$duyrsW=!G>1Sx(R#+#`FHg8)yuz!4NaZHjTn%Rxv3*sZYykj=VZv{n6Pc^=QYIX z_NP9in_oJdii>h=mSg0T9)6cNW^SO{%UIIMv$p3oHJt$bGYx#&d5ZFEYk%YKWX!+8 zZU30Ic8?9a9$V%d`kdv7c3GPKn>yoja9jxM?**Ftfprzy8t`m{P7>a3YbJ$hY)AMpryTI}ScD48Up-k62zhXM7=H7;h6J8yKbsewY(NEjg??9~IyEfX^ugaf&@zSu;59f@9PGiUW4BFn{cE)S8 zSzOK{ua}WNoR{JIG9!?m8ut9BH1e5`=x*eNO3e1t!b>X09Np}M-%y8rLu!M*B|=5} z-m$PL(G`968v0pyXFs>tPVzp$_J+Sndfvb;%5SIdr(waoigTVdfOWnAXAP_yzB`nG zoTJo7!=CN==@4+Y;=4VJHInOGdbVS65I$F0`*tkG7`W2vlEl9MSm1M#DTHL2f}FF-CK%Ty@!xIqO*{GR zig^C~(H(!mbj$n!X2#C`8*DlJdiT2^e9tq#E<#r>y~C6{ytbl1)d{pY(c{kXG20yK z(<4E7H^qt9cl)?9R%s?XwYMAl%4&Y|>WT>_?0W9Ef7RU7{ZBV~e`q`I zq&|&2@QdUVTManOa@c;}H9bZ{2gGT>HE|l!H%@nsjZtx>xgTR?%(`ExeS_9QH~FJ# zgO1o)hbxxm(+u3fb)#KWRz+3Q`cTc?mr%`=%jv;+(>l&2W8a!rBU5pOOmkrOStmR1 z)=qG$y9!`a;#U`!e| zX^Q}?I&R}zsBi9pe#!gU?Rt-`Tjh$M=T%V{^TM)j=T|+By!|DP_*sYYg%vg$D-Va? z&5Y5A*;wW?I$|6{5hr-xNINV154y2(x`Pg*XlTu1+yQyrhGo&BTB<9!&=vpE`);$* z7-iba$QvN0#~6*69m-um%X^w>Pnc5wSLkrBdUu5F(A5>=X;8J7X5$XGU6xF_#Ls>% ze6>jqSY4{rdmp2LD{jO#JG_l1)o-8)!6v#V^f=-Ezaw_0$>IEo!(Ydp6!X0h7vQPt zCj1YGFVfl@ddo%~GA`#}{c5sfz4iM%DR5a7W>suI9p|nUz|Aoin{7&`Pqy|mDFd>U z6)ZaosIFc4jx+cT#=fxucoC~=w@sOpGu^*5-pU4+mCe0sSKx*QjyZ5lO^8U>Ko5>h zWqtS5U03F%Y-HXn!x-x@K*(Vc@smd7m$*wEz@EafLB89>=eSJrW88=P?q*t*2Y6+> zK69mvP~ChA-*rKZWhnbp*gGBsu4O2%0mk*(Bdt;E(5Ci5U-ga*Xmf=lH+-l|Fi0oy mot>iKwyv1N-T2`$*Kymi8t2^Tcbv=d5jZ{q$48)j1pW&NdAIKX literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..34750cf --- /dev/null +++ b/public/index.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pashto Verb Explorer + + + + + diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..76500f9 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "Verb Explorer", + "name": "Pashto Verb Explorer", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..d16515e --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,34 @@ +import image from '@rollup/plugin-image'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import pkg from './package.json'; + +const banner = ` +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ +`; + +export default { + input: 'dist/library.js', + external: ["react", "react-dom", "react-bootstrap"], + output: [{ + file: pkg.main, + format: 'cjs', + sourcemap: true, + banner, + }], + plugins: [ + // peerDepsExternal(), + commonjs(), + nodeResolve({ + resolveOnly: ['classnames'], + }), + // use base64 image inlining for the cjs version so that the .svg s can get cosumed by node 12 etc. + image(), + ] +} diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..8a12cf3 --- /dev/null +++ b/src/App.css @@ -0,0 +1,263 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +:root { + --secondary: #00c1fc; + --primary: #ffda54; + + /* change with theme */ + --theme-shade: #fefefe; + --close: #f5f5f5; + --closer: #eee; + --farther: #555; + --farthest: #333; + --high-contrast: #444; + + --input-bg: #fafafa; +} + +[data-theme="dark"] { + --theme-shade: #121418; + --close: #1d1f25; + --closer: #2c3039; + --farther: #bbb; + --farthest: #999; + --high-contrast: #cfcfcf; + + --input-bg: #ccc; +} + +[data-p-text-size="larger"] { + --p-text-size: 1.3rem +} + +[data-p-text-size="largest"] { + --p-text-size: 1.6rem +} + +body { + background-color: var(--theme-shade); + color: var(--high-contrast); +} + +.p-text { + font-size: var(--p-text-size); +} + +pre { + color: var(--high-contrast); +} + +.card { + background: var(--closer); +} + +.list-group { + background: var(--closer); +} + +.list-group-item { + background: var(--closer); +} + +hr { + border-top: 1px solid var(--farther); +} + +/* maybe call .box-alt? */ +.bg-light { + background-color: var(--closer) !important; + color: var(--high-contrast); +} +.bg-white { + background-color: var(--theme-shade) !important; +} + +/* TODO: better handling of modals across light and dark modes */ +.modal-body, .modal-title { + color:#1d1f25; +} + +.table { + color: var(--high-contrast); +} + +.width-limiter { + max-width: 700px; +} + +.thin-column { + max-width: 1rem; +} + +.word { + margin-bottom: 1.25rem; +} + +.word:hover { + cursor: pointer; +} + +.word-non-clickable:hover { + cursor: inherit; +} + +.word-extra-info { + color: var(--farther); + margin-left: 1rem; + margin-top: 0.25rem; +} + +.definition { + margin-top: 0.5rem; + margin-left: 1rem; +} + +code { + color: #333; +} + +kbd { + background-color: #eee; + border-radius: 3px; + border: 1px solid #b4b4b4; + box-shadow: 0 1px 1px rgba(0, 0, 0, + .2), 0 2px 0 0 rgba(255, 255, 255, + .7) inset; + color: #333; + display: inline-block; + font-size: .85em; + font-weight: 700; + line-height: 1; + padding: 2px 4px; + white-space: nowrap; +} + +.recording-banner { + position: fixed; + width: 100%; + height: 16.5%; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgb(244, 66, 66, 0.9); + z-index: 2; +} + +/* Remove blue glow thing */ +textarea:focus, +input[type="text"]:focus, +input[type="search"]:focus, +button:focus { + border-color: var(--farther); + box-shadow: none; + outline: 0 none; +} + +.clickable { + cursor: pointer; +} + +.bottom-left { + position: fixed; + bottom: 2em; + left: 2em; +} + +.bottom-right { + position: fixed; + bottom: 2em; + right: 2em; +} + +.input-group { + border-color: red !important; +} + +input { + background-color: var(--input-bg) !important; +} + +.clear-search-button { + background-color: var(--input-bg) !important; +} + +.clear-search-button:hover { + color: inherit; + cursor: pointer; + background-color: var(--input-bg) !important; +} + +.clear-search-button:active { + background-color: var(--input-bg) !important; + color: var(--input-bg) !important; +} + +.form-control-clear:hover { + cursor: pointer; +} + +.theme-toggle-button { + position: fixed; + top: 90px; + right: 30px; + font-size: 20px; +} + +.back-button { + position: fixed; + bottom: 20px; + right: 20px; +} + +.bottom-nav-item { + display: flex; + flex-direction: column; + align-items: center; +} + +.plain-link { + color: inherit; +} + +.plain-link:hover { + text-decoration: none; + color: var(--farther); +} +.clickable:hover { + color: var(--farther); +} + +.clear-search-button { + background-color: white; + margin-left: -2px; + color: #444; + border-radius: 0; + border-color: var(--farther); +} +.clear-search-button:hover { + color: #555; +} + +.btn.bg-white:active, +.btn.bg-white:hover { + color: #555 !important; +} + +.btn-group.full-width { + display: flex; +} + +.full-width .btn { + flex: 1; +} + +.clickable:hover { + cursor: pointer; +} \ No newline at end of file diff --git a/src/App.test.js b/src/App.test.js new file mode 100644 index 0000000..70b8ec0 --- /dev/null +++ b/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders', () => { + render(); + const linkElement = screen.getByText(/pashto verb explorer/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..24a7488 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,395 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { useEffect, useState } from "react"; +import ConjugationViewer from "./components/ConjugationViewer"; +import verbs from "./verbs"; +import Pashto from "./components/Pashto"; +import Phonetics from "./components/Phonetics"; +import { conjugateVerb } from "./lib/verb-conjugation"; +import { getVerbInfo } from "./lib/verb-info"; +import ButtonSelect from "./components/ButtonSelect"; +import { + clamp +} from "./lib/p-text-helpers"; +import { + randomNumber, +} from "./lib/misc-helpers"; +import { + Modal +} from "react-bootstrap"; +import * as T from "./types"; +import defualtTextOptions from "./lib/default-text-options"; +import InlinePs from "./components/InlinePs"; + +type VerbType = "simple" | "stative compound" | "dynamic compound"; +const verbTypes: VerbType[] = [ + "simple", + "stative compound", + "dynamic compound", +]; + +const transitivities: T.Transitivity[] = [ + "transitive", + "intransitive", + "grammatically transitive", +]; + +const allVerbs = verbs.map((v: any) => ({ + verb: v, + info: getVerbInfo(v.entry, v.complement), +})); + +function App() { + const [verbTs, setVerbTs] = useState(0); + const [verbTypeShowing, setVerbTypeShowing] = useState("simple"); + const [regularIrregular, setRegularIrregular] = useState<"regular" | "irregular">("regular"); + const [transitivityShowing, setTransitivityShowing] = useState("intransitive"); + const [showingTextOptions, setShowingTextOptions] = useState(false); + const [textOptions, setTextOptions] = useState(defualtTextOptions); + const [aayTailType, setAayTailType] = useState("aay"); + const [theme, setTheme] = useState<"light" | "dark">("light"); + // const onlyGrammTrans = (arr: Transitivity[]) => ( + // arr.length === 1 && arr[0] === "grammatically transitive" + // ); + // const ensureSimpleVerbTypeSelected = () => { + // if (!verbTypesShowing.includes["simple"]) { + // setVerbTypesShowing([...verbTypesShowing, "simple"]); + // } + // } + + useEffect(() => { + const verbTsRaw = localStorage.getItem("verbTs"); + const verbTypeShowing = localStorage.getItem("verbTypeShowing") as undefined | VerbType; + const regularIrregular = localStorage.getItem("regularIrregular") as "regular" | "irregular"; + const transitivitiyShowing = localStorage.getItem("transitivityShowing") as undefined | T.Transitivity; + const theme = localStorage.getItem("theme"); + const textOptionst = localStorage.getItem("textOptions"); + const aayTailType = localStorage.getItem("aayType"); + if (regularIrregular) { + setRegularIrregular(regularIrregular); + } + if (verbTsRaw) { + setVerbTs(JSON.parse(verbTsRaw)); + } + if (verbTypeShowing) { + setVerbTypeShowing(verbTypeShowing); + } + if (transitivitiyShowing) { + setTransitivityShowing(transitivitiyShowing); + } + if (theme) { + setTheme(theme as "light" | "dark"); + } + if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) { + setTheme("dark"); + } + if (textOptionst) { + setTextOptions(JSON.parse(textOptionst) as T.TextOptions); + } + if (aayTailType) { + setAayTailType(aayTailType as T.AayTail); + } + }, []); + + useEffect(() => { + localStorage.setItem("verbTs", verbTs.toString()); + localStorage.setItem("regularIrregular", regularIrregular); + localStorage.setItem("verbTypeShowing", verbTypeShowing); + localStorage.setItem("transitivityShowing", transitivityShowing); + localStorage.setItem("textOptions", JSON.stringify(textOptions)); + localStorage.setItem("theme", theme); + localStorage.setItem("aayType", aayTailType); + }); + + useEffect(() => { + document.documentElement.setAttribute("data-theme", theme); + }, [theme]) + + const handleVerbIndexChange = (e: any) => { + console.log("changing to", e.target.value); + setVerbTs(parseInt(e.target.value)); + } + const handleTypeSelection = (e: any) => { + const type = e.target.value as VerbType; + if (type === "dynamic compound") { + setTransitivityShowing("transitive"); + } + if (type === "stative compound" && transitivityShowing === "grammatically transitive") { + setTransitivityShowing("transitive"); + } + setVerbTypeShowing(type); + } + const handleTransitivitySelection = (e: any) => { + const transitivity = e.target.value as T.Transitivity; + if (transitivity === "grammatically transitive") { + setVerbTypeShowing("simple"); + } + setTransitivityShowing(e.target.value as T.Transitivity); + } + const isRegularVerb = (entry: T.DictionaryEntry): boolean => ( + !entry.l && !entry.psp && !entry.ssp && !entry.prp && !entry.pprtp && !entry.noOo && !entry.sepOo + ); + const verbsAvailable = allVerbs.filter((verb) => ( + ( + (verb.info.type === "transitive or grammatically transitive simple" && verbTypeShowing === "simple") && (transitivityShowing === "transitive" || transitivityShowing === "grammatically transitive") + ) || + (( + verbTypeShowing === verb.info.type || + (verbTypeShowing === "stative compound" && verb.info.type === "dynamic or stative compound") || + (verbTypeShowing === "dynamic compound" && verb.info.type === "dynamic or stative compound") || + (verbTypeShowing === "dynamic compound" && verb.info.type === "dynamic or generative stative compound") || + (verbTypeShowing === "stative compound" && verb.info.type === "dynamic or generative stative compound") + ) + && ( + transitivityShowing === verb.info.transitivity + )) + )).filter((verb) => { + if (verbTypeShowing !== "simple") { + return true; + } + return regularIrregular === "regular" + ? isRegularVerb(verb.verb.entry) + : !isRegularVerb(verb.verb.entry); + }).sort((a, b) => a.verb.entry.p.localeCompare(b.verb.entry.p, "ps")); + + const v = (() => { + const vFound = verbsAvailable.find(v => v.verb.entry.ts === verbTs); + if (vFound) return vFound; + if (verbsAvailable.length === 0) return undefined; + const vTopOfList = verbsAvailable[0]; + setVerbTs(vTopOfList.verb.entry.ts); + return vTopOfList; + })(); + + const pickRandomVerb = () => { + let newIndex: number; + do { + newIndex = randomNumber(0, verbsAvailable.length); + } while(verbsAvailable[newIndex].verb.entry.ts === verbTs); + setVerbTs(verbsAvailable[newIndex].verb.entry.ts); + }; + const makeVerbLabel = (entry: T.DictionaryEntry): string => ( + `${entry.p} - ${clamp(entry.e, 20)}` + ); + + const conjugation = v + ? conjugateVerb(v.verb.entry, aayTailType, v.verb.complement) + : undefined; + if (v) { + console.log("Verb chosen:"); + console.log(v.verb); + console.log("Conjugation of verb:") + console.log(conjugation); + } + console.log(verbTypeShowing); + console.log(textOptions); + return <> +
+
+
+
setShowingTextOptions(true)} + > + +
+
setTheme(theme === "light" ? "dark" : "light")} + > + +
+
+
+

Pashto Verb Explorer

+

by LingDocs

+

+ Each form is made from one simple formula which works for all verbs. 👨‍🔬 +

+

Choose a verb 👇, look at its roots and stems 🌳, see how all the forms are made and what they mean. 🤓

+
+
+
+
+
+ {(v && conjugation) ? +
+
Select a verb:
+
+ +
+ +
+
+
+
+ + {v.verb.entry} + {` `}-{` `} + {v.verb.entry} + + {` `} + {v.verb.entry.c} +
+
{v.verb.entry.e}
+
+
+ :
+ No such verbs available... +
+ } +
+
+
Verb type:
+
+ {verbTypes.map((type) => ( +
+ + +
+ ))} +
+ {verbTypeShowing === "simple" && +
+ { + setRegularIrregular(p as "regular" | "irregular"); + }} + /> +
+ } +
Transitivity:
+
+ {transitivities.map((transitivity) => ( +
+ + +
+ ))} +
+
+
+
+
+ {conjugation && } +
+
+ setShowingTextOptions(false)}> + + Settings + + +
Pashto Spelling
+ { + setTextOptions({ + ...textOptions, + spelling: p as "Afghan" | "Pakistani", + }); + if (p === "Pakistani") setAayTailType("ey"); + }} + /> + {textOptions.spelling !== "Pakistani" && <> +
Non-Inflecting Tail Spelling
+ {{ p: "ی", f: "ey" }}, value: "ey" }, + { label: {{ p: "ای", f: "aay" }}, value: "aay" }, + ]} + value={aayTailType} + handleChange={(p) => setAayTailType(p as "ey" | "aay")} + /> + } +
Diacritics
+ setTextOptions({ ...textOptions, diacritics: p === "true" })} + /> +
Pashto Text Size
+ setTextOptions({ ...textOptions, pTextSize: p as "normal" | "larger" | "largest" })} + /> +
Phonetics
+ setTextOptions({ ...textOptions, phonetics: p as "lingdocs" | "ipa" | "none" | "alalc" })} + /> +
+ + + +
+
+
+ Copyright © 2020 lingdocs.com all rights reserverd +
+
+ +} + +export default App; diff --git a/src/components/ButtonSelect.tsx b/src/components/ButtonSelect.tsx new file mode 100644 index 0000000..0e078f2 --- /dev/null +++ b/src/components/ButtonSelect.tsx @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import classNames from "classnames"; + +type PickerProps = { + options: { label: any, value: string }[], + value: string, + handleChange: (payload: string) => void, + small?: boolean, + xSmall?: boolean, +} + +function ButtonSelect(props: PickerProps) { + return ( +
+
+ {props.options.map((option) => ( + + ))} +
+
+ ); +} + +export default ButtonSelect; diff --git a/src/components/CheckBoxOptions.tsx b/src/components/CheckBoxOptions.tsx new file mode 100644 index 0000000..f0f6bf8 --- /dev/null +++ b/src/components/CheckBoxOptions.tsx @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +type Props = { + label: string, + options: { label: any, name: string, disabled?: boolean }[], + checked: string[], + handleChange: (p: { name: string, checked: boolean }) => void; +} + +export default function (props: Props) { + function handleCheck(e: any) { + props.handleChange({ + name: e.target.name as string, + checked: e.target.checked as boolean, + }); + } + return ( +
+ {props.label} + {props.options.map((option) => ( +
+ + +
+ ))} +
+ ); +} diff --git a/src/components/ConjugationViewer.tsx b/src/components/ConjugationViewer.tsx new file mode 100644 index 0000000..c79ca9c --- /dev/null +++ b/src/components/ConjugationViewer.tsx @@ -0,0 +1,383 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { useEffect, useReducer } from "react"; +import VerbInfo from "./verb-info/VerbInfo"; +import VerbFormDisplay from "./VerbFormDisplay"; +import ButtonSelect from "./ButtonSelect"; +import Hider from "./Hider"; +import { getForms } from "../lib/conjugation-forms"; +import PersonSelection from "./PersonSelection"; +import { + personIsAllowed, + randomPerson, + incrementPerson, +} from "../lib/misc-helpers"; +import * as T from "../types"; + +const VerbChoiceWarning = () => ( + <> +
+ This verb can be used in different ways! +
+

Choose which way to use it:

+ +); + +const stateLocalStorageName = "explorerState6"; + +type Difficulty = "beginner" | "advanced"; +// remember to increment the stateLocalStorageName whenever changing +// the State type +type State = { + mode: "chart" | "sentence"; + subject: T.Person, + object: T.Person, + negative: boolean, + compoundTypeSelected: "stative" | "dynamic"; + transitivitySelected: "transitive" | "grammatically transitive"; + compoundComplementVersionSelected: "sing" | "plur"; + showingStemsAndRoots: boolean; + difficulty: Difficulty; + formsOpened: string[]; + showingFormInfo: boolean; +} + +type Action = { + type: "choose compound type", + payload: "stative" | "dynamic", +} | { + type: "set forms opened", + payload: string, +} | { + type: "set difficulty", + payload: Difficulty, +} | { + type: "set compound complement version", + payload: "sing" | "plur", +} | { + type: "toggle showingStemsAndRoots", +} | { + type: "setState", + payload: State, +} | { + type: "setMode", + payload: "chart" | "sentence", +} | { + type: "setPerson", + payload: { setting: "subject" | "object", person: T.Person }, +} | { + type: "randomPerson", + payload: "subject" | "object", +} | { + type: "setShowingFormInfo", + payload: boolean, +} | { + type: "setTransitivitySelected", + payload: "transitive" | "grammatically transitive", +} | { + type: "setNegative", + payload: boolean, +}; + +function oppositeRole(x: "subject" | "object"): "subject" | "object" { + return x === "subject" ? "object" : "subject"; +} + +function reducer(state: State, action: Action): State { + function applyFormOpen( + payload: string, + formsOpened: string[], + ): string[] { + if (formsOpened.includes(payload)) { + return formsOpened.filter((f) => f !== payload); + } + return [...formsOpened, payload]; + } + function setPerson({ setting, person }: { setting: "subject" | "object", person: T.Person }): State { + let newPerson = person; + let otherPerson = state[oppositeRole(setting)]; + let otherSetting = oppositeRole(setting); + while (!personIsAllowed(newPerson, otherPerson)) { + otherPerson = incrementPerson(otherPerson); + } + return { ...state, [setting]: newPerson, [otherSetting]: otherPerson }; + } + + switch(action.type) { + case "choose compound type": + return { ...state, compoundTypeSelected: action.payload }; + case "set forms opened": + return { + ...state, + formsOpened: applyFormOpen(action.payload, state.formsOpened), + }; + case "set difficulty": + return { ...state, difficulty: action.payload }; + case "set compound complement version": + return { ...state, compoundComplementVersionSelected: action.payload }; + case "toggle showingStemsAndRoots": + return { ...state, showingStemsAndRoots: !state.showingStemsAndRoots }; + case "setState": + return action.payload; + case "setMode": + return { ...state, mode: action.payload }; + case "setPerson": + return setPerson(action.payload); + case "randomPerson": + return { + ...state, + [action.payload]: randomPerson( + state[action.payload === "subject" ? "object" : "subject"] + ), + }; + case "setShowingFormInfo": + return { + ...state, + showingFormInfo: action.payload, + }; + case "setTransitivitySelected": + return { + ...state, + transitivitySelected: action.payload, + }; + case "setNegative": + return { + ...state, + negative: action.payload, + }; + default: + throw new Error(); + } +} + +const initialState: State = { + subject: 0, + object: 2, + negative: false, + compoundTypeSelected: "stative", + transitivitySelected: "transitive", + mode: "chart", + compoundComplementVersionSelected: "plur", + difficulty: "beginner", + showingStemsAndRoots: false, + showingFormInfo: false, + formsOpened: [], +}; + +function ConjugationViewer({ conjugation, textOptions }: { + conjugation: T.VerbOutput, + textOptions: T.TextOptions, +}) { + const [state, dispatch] = useReducer(reducer, initialState); + useEffect(() => { + const stateRaw = localStorage.getItem(stateLocalStorageName); + if (stateRaw) { + try { + const payload = JSON.parse(stateRaw) as State; + dispatch({ type: "setState", payload }); + } catch (e) { + console.error("error parsing saved state JSON", e); + } + } + }, []); + const verbConj1 = ("dynamic" in conjugation) + ? conjugation[state.compoundTypeSelected] + : ("transitive" in conjugation) + ? conjugation[state.transitivitySelected === "transitive" ? "transitive" : "grammaticallyTransitive"] + : conjugation; + const verbConj = (verbConj1.singularForm && state.compoundComplementVersionSelected === "sing") + ? verbConj1.singularForm + : verbConj1; + + useEffect(() => { + localStorage.setItem(stateLocalStorageName, JSON.stringify(state)); + }); + + const filterDifficulty = (f: T.DisplayForm): boolean => ( + state.difficulty === "advanced" || !f.advanced + ); + const forms = getForms({ + conj: verbConj, + filterFunc: filterDifficulty, + mode: state.mode, + subject: state.subject, + object: state.object, + negative: state.negative, + }); + return
+ {"transitive" in conjugation &&
+ +
+ dispatch({ type: "setTransitivitySelected", payload: p as "transitive" | "grammatically transitive" })} + /> +
+
} + {"dynamic" in conjugation &&
+ +
+ dispatch({ type: "choose compound type", payload: p as "dynamic" | "stative" })} + /> +
+
} + {verbConj1.singularForm &&
+ +
+ dispatch({ type: "set compound complement version", payload: p as "sing" | "plur" })} + /> +
+
} + dispatch({ type: "toggle showingStemsAndRoots" })} + /> +
+
+ dispatch({ type: "setMode", payload: p as "chart" | "sentence" })} + /> +
+
+ dispatch({ type: "set difficulty", payload: p as Difficulty })} + /> +
+
+ { + dispatch({ type: "setShowingFormInfo", payload: e.target.checked }) + }} + /> + +
+
+ {state.mode === "sentence" && +
+ dispatch({ + type: "setPerson", payload, + })} + handleRandom={(payload: "subject" | "object") => dispatch({ + type: "randomPerson", payload, + })} + textOptions={textOptions} + /> +
+ dispatch({ type: "setNegative", payload: p === "true" })} + /> +
+
+ } + dispatch({ type: "set forms opened", payload })} + verbConj={verbConj} + textOptions={textOptions} + /> +
; +} + +function FormsDisplay({ forms, state, handleChange, textOptions, verbConj }: { + verbConj: T.VerbConjugation, + forms: T.DisplayFormItem[], + state: State, + handleChange: (p: string) => void, + textOptions: T.TextOptions, +}) { + function drawLevel(forms: T.DisplayFormItem[], level: number) { + return
+ {forms.map((f, i) => { + if ("content" in f && f.content.length === 0) { + return null; + } + const showDividerLine = (item: T.DisplayFormItem, index: number): boolean => { + return (index !== 0) && ("content" in item || !item.aspect || (item.aspect === "imperfective")); + }; + return
+ {showDividerLine(f, i) &&
} + handleChange(f.label)} + > + {"content" in f ? + drawLevel(f.content, level + 1) + : + + } + +
; + })} +
+ } + return
+ {drawLevel(forms, 0)} +
; +} + +export default ConjugationViewer; diff --git a/src/components/Examples.tsx b/src/components/Examples.tsx new file mode 100644 index 0000000..18c4ba4 --- /dev/null +++ b/src/components/Examples.tsx @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import Pashto from "./Pashto"; +import Phonetics from "./Phonetics"; +import * as T from "../types"; + +export default function({ + children, + ex, + opts, +}: { + ex?: T.PsString | T.PsString[], + children: T.PsString | T.PsString[], + opts: T.TextOptions, +}) { + const examples = children || ex; + const Example = ({ children: text }: { children: T.PsString }) => ( +
+
+ {text} +
+
+ {text} +
+ {text.e &&
+ {text.e} +
} +
+ ); + return Array.isArray(examples) ? +
+ {examples.map((example, i) => {example})} +
+ : + {examples}; +} \ No newline at end of file diff --git a/src/components/Hider.tsx b/src/components/Hider.tsx new file mode 100644 index 0000000..bf10934 --- /dev/null +++ b/src/components/Hider.tsx @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { createElement } from "react"; +import classNames from "classnames"; +import * as T from "../types"; + +const caretRight = + + +const caretDown = + + + +const defaultLevel = 4; +const indentAfterLevel = 5; + +function Hider(props: { + label: string, + showing: boolean, + aspect?: T.Aspect, + handleChange: () => void, + children: React.ReactNode, + hLevel?: number, +}) { + const hLev = Math.min((props.hLevel ? props.hLevel : defaultLevel), 6); + const extraMargin = (props.hLevel && (props.hLevel > indentAfterLevel)) + ? `ml-${(props.hLevel - indentAfterLevel) + 1}` + : ""; + return
+ {createElement( + `h${hLev}`, + { + onClick: props.handleChange, + className: classNames( + "clickable", + extraMargin, + ), + }, + <> + {props.showing ? caretDown : caretRight} + {` `} + {props.aspect + ? + : ""} + {props.label} + , + )} + {props.showing && props.children} +
+} + +export default Hider; \ No newline at end of file diff --git a/src/components/InflectionsTable.tsx b/src/components/InflectionsTable.tsx new file mode 100644 index 0000000..6381370 --- /dev/null +++ b/src/components/InflectionsTable.tsx @@ -0,0 +1,115 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { useState } from "react"; +import Pashto from "./Pashto"; +import Phonetics from "./Phonetics"; +import { Modal } from "react-bootstrap"; +import * as T from "../types"; + +const explanation = (inf: T.Inflections, textOptions: T.TextOptions) => { + // @ts-ignore + const w = inf["masc" in inf ? "masc" : "fem"][0][0]; + return <> +

In Pashto, nouns, pronouns, and adjectives get inflected when they are either:

+
    +
  • Plural
  • +
  • Sandwiched with a preposition/postposition (oblique), or
  • +
  • The subject of a transitive past tense verb
  • +
+

Whatever the reason, the inflection looks the same.

+
Double Inflection
+

If there are 2 reasons to inflect (ie. if a noun is plural and the subject of a transitive past tense verb) then you use the second inflection.

+
Notes:
+

Pronouns don't get inflected for being plural. Instead, they have a seperate plural form.

+

Not all nouns, pronouns, and adjectives can inflect. But if you're seeing this table here, it means that {w} does inflect.

+

Irregular nouns like پښتون or مېلمه often only take the 1st inflection when they're plural, and not for the other two reasons, depending on dialect. When there are two reasons to inflect, these will always take the double inflection.

+

For prepositional/postpositional sandwiches of location like په ... کې and په ... باندې the first inflection of nouns (not of adjectives/pronouns) often doesn't happen. The second one always will though.

+ +} + +const InflectionTable = ({ inf, textOptions }: { + inf: T.Inflections, + textOptions: T.TextOptions, +}) => { + const [showingExplanation, setShowingExplanation] = useState(false); + /* istanbul ignore next */ // Insanely can't see the modal to close it + const handleCloseExplanation = () => setShowingExplanation(false); + const handleShowExplanation = () => setShowingExplanation(true); + return ( +
+
+
Inflections:
+
+ +
+
+ + + + + {"masc" in inf && } + {"fem" in inf && } + + + + {["Plain", "1st", "2nd"].map((title, i) => ( + + + {"masc" in inf && } + {"fem" in inf && } + + ))} + +
MasculineFeminine
{title} + {inf.masc[i].map((w, j) => ( +
+
+ + {w} + +
+
+ + {w} + +
+
+ ))} +
+ {inf.fem[i].map((w, j) => ( +
+
+ + {w} + +
+
+ + {w} + +
+
+ ))} +
+ + + About Inflections + + {explanation(inf, textOptions)} + + + + +
+ ); +}; + +export default InflectionTable; \ No newline at end of file diff --git a/src/components/InlinePs.tsx b/src/components/InlinePs.tsx new file mode 100644 index 0000000..154fa0a --- /dev/null +++ b/src/components/InlinePs.tsx @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import Pashto from "./Pashto"; +import Phonetics from "./Phonetics"; +import * as T from "../types"; + +function InlinePs ({ + children, + ps, + opts, +}: { + ps?: T.PsString, + children: T.PsString, + opts: T.TextOptions, +}) { + const text = children || ps; + return ( + + {text} + {opts.phonetics !== "none" && " - "} + {text} + {text.e && ({text.e})} + + ); +} + +export default InlinePs; \ No newline at end of file diff --git a/src/components/Pashto.tsx b/src/components/Pashto.tsx new file mode 100644 index 0000000..7776393 --- /dev/null +++ b/src/components/Pashto.tsx @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + convertAfToPkSpelling, +} from "../lib/convert-spelling"; +import { + phoneticsToDiacritics +} from "../lib/phonetics-to-diacritics"; +import * as T from "../types"; + +const Pashto = ({ opts, children: text }: { + opts: T.TextOptions, + children: T.PsString, +}) => { + const p = opts.diacritics + ? (phoneticsToDiacritics(text.p, text.f) || text.p) + : text.p; + const style = opts.pTextSize === "normal" + ? undefined + : { fontSize: opts.pTextSize === "larger" ? "large" : "larger" }; + return ( + + {opts.spelling === "Afghan" ? p : convertAfToPkSpelling(p)} + + ); +}; + +export default Pashto; diff --git a/src/components/PersInfsPicker.tsx b/src/components/PersInfsPicker.tsx new file mode 100644 index 0000000..e4bf8c3 --- /dev/null +++ b/src/components/PersInfsPicker.tsx @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import * as T from "../types"; + +const persInfs: { + label: string; + value: T.PersonInflectionsField; +}[] = [ + { + label: "masc. sing.", + value: "mascSing", + }, + { + label: "fem. sing.", + value: "femSing", + }, + { + label: "masc. plur.", + value: "mascPlur", + }, + { + label: "fem. plur", + value: "femPlur", + } +]; + +function PersInfsPicker(props: { + transitivity: T.Transitivity, + persInf: T.PersonInflectionsField, + handleChange: (persInf: T.PersonInflectionsField) => void, +}) { + function hChange(e: any) { + const newValue = e.target.value as T.PersonInflectionsField; + props.handleChange(newValue); + } + return ( +
+
+ When the {props.transitivity === "intransitive" ? "subject" : "object"} is +
+
+ +
+
+ ); +} + +export default PersInfsPicker; \ No newline at end of file diff --git a/src/components/PersonSelection.tsx b/src/components/PersonSelection.tsx new file mode 100644 index 0000000..7456771 --- /dev/null +++ b/src/components/PersonSelection.tsx @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { persons } from "../lib/grammar-units"; +import InlinePs from "../components/InlinePs"; +import * as T from "../types"; + +function PersonSelect(props: { + setting: "subject" | "object", + value: T.Person, + locked?: boolean, + handleChange: (person: T.Person) => void, + handleRandom: () => void, +}) { + return ( + !props.locked ?
+ +
+ +
+
: + ); +} + +function PersonSelection(props: { + subject: T.Person, + object: T.Person, + info: T.NonComboVerbInfo, + handleRandom: (setting: "subject" | "object") => void, + handleChange: (payload: { setting: "subject" | "object", person: T.Person }) => void, + textOptions: T.TextOptions, +}) { + function getComp(comp: T.ObjComplement) { + const c = comp.plural + ? comp.plural + : comp.entry; + return {c}; + } + return ( +
+
+ + props.handleChange({ setting: "subject", person })} + handleRandom={() => props.handleRandom("subject")} + /> +
+ {(props.info.type === "dynamic compound" || props.info.type === "generative stative compound") ?
+ + props.handleChange({ setting: "object", person })} + handleRandom={() => props.handleRandom("object")} + /> +
: props.info.transitivity === "transitive" ?
+ + props.handleChange({ setting: "object", person })} + handleRandom={() => props.handleRandom("object")} + /> +
: props.info.transitivity === "grammatically transitive" ?
+ + props.handleChange({ setting: "object", person })} + handleRandom={() => props.handleRandom("object")} + /> +
: null} +
+ ); +} + +export default PersonSelection; \ No newline at end of file diff --git a/src/components/Phonetics.tsx b/src/components/Phonetics.tsx new file mode 100644 index 0000000..4bc3c3e --- /dev/null +++ b/src/components/Phonetics.tsx @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + translatePhonetics, +} from "../lib/translate-phonetics"; +import * as T from "../types"; + +const Phonetics = ({ opts, children: text }: { + opts: T.TextOptions, + children: T.PsString, +}) => { + if (opts.phonetics === "none") { + return null; + } + return + {opts.phonetics === "lingdocs" + ? text.f + : translatePhonetics(text.f, { + dialect: opts.dialect, + system: opts.phonetics, + })} + +}; + +export default Phonetics; diff --git a/src/components/SingleItemDisplay.tsx b/src/components/SingleItemDisplay.tsx new file mode 100644 index 0000000..481b894 --- /dev/null +++ b/src/components/SingleItemDisplay.tsx @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import Pashto from "./Pashto"; +import Phonetics from "./Phonetics"; +import * as T from "../types"; + +function SingleItemDisplay({ item, textOptions, english }: { + item: T.PsString, + textOptions: T.TextOptions, + english?: T.EnglishBlock | string, +}) { + const eng = Array.isArray(english) ? english[0][0] : english; + return
+
{item}
+
{item}
+ {eng &&
{eng}
} +
; +} + +export default SingleItemDisplay; \ No newline at end of file diff --git a/src/components/VerbFormDisplay.tsx b/src/components/VerbFormDisplay.tsx new file mode 100644 index 0000000..4751aa1 --- /dev/null +++ b/src/components/VerbFormDisplay.tsx @@ -0,0 +1,113 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { useEffect, useState } from "react"; +import PersonInfsPicker from "./PersInfsPicker"; +import InflectionsTable from "./InflectionsTable"; +import SingleItemDisplay from "./SingleItemDisplay"; +import ButtonSelect from "./ButtonSelect"; +import VerbTable from "./VerbTable"; +import { + getEnglishPersonInfo, + isSentenceForm, +} from "../lib/misc-helpers"; +import { + isAllOne, +} from "../lib/p-text-helpers"; +import * as T from "../types"; + +function agreementInfo(info: T.NonComboVerbInfo, displayForm: T.DisplayForm): React.ReactNode { + if (!displayForm.past) { + return null; + } + const beginning = "Verb agrees with the "; + const agreesWith = (info.transitivity !== "intransitive" && displayForm.past && !displayForm.passive) + ? "object" + : "subject"; + const extraExplanation = (!displayForm.past) + ? "" + : (info.transitivity === "grammatically transitive") + ? " which is an unwritten 3rd pers. masc. object." + : (info.type === "generative stative compound" || info.type === "dynamic compound") + ? ` which is the complement ${info.objComplement.plural ? info.objComplement.plural.p : info.objComplement.entry.p} (${getEnglishPersonInfo(info.objComplement.person)})` + : "" + return <>Note: {beginning}{agreesWith}{extraExplanation} +} + +function VerbFormDisplay({ displayForm, textOptions, info, showingFormInfo, english }: { + displayForm: T.DisplayForm | T.VerbForm, + english?: T.EnglishBlock | string, + textOptions: T.TextOptions, + showingFormInfo: boolean, + info?: T.NonComboVerbInfo, +}) { + const [persInf, setPersInf] = useState("mascSing"); + const [length, setLength] = useState("long"); + const [showingExplanation, setShowingExplanation] = useState(false); + const block = "label" in displayForm ? displayForm.form : displayForm; + const chosenPersInf = "mascSing" in block + ? block[persInf] + : block; + const form = "long" in chosenPersInf + ? chosenPersInf[length] || chosenPersInf.short + : chosenPersInf; + useEffect(() => { + if (length === "mini" && !("mini" in chosenPersInf)) { + setLength("long"); + } + setPersInf("mascSing"); + setShowingExplanation(false); + }, [block]); + const hasVariations = (!("masc" in form)) && (!("p" in form)) && (!isSentenceForm(form)) && !isAllOne(form as T.VerbBlock | T.ImperativeBlock); + return <> + {(("label" in displayForm && info) && showingFormInfo) && <> + {(hasVariations || displayForm.past) &&

+ {agreementInfo(info, displayForm)} +

} +
+ Formula: {displayForm.formula} + +
+ {showingExplanation &&
+ {displayForm.explanation} +
} + } + {"long" in chosenPersInf && +
+ setLength(p as T.Length)} + /> +
+ } + {("mascSing" in block && info) && setPersInf(p)} + transitivity={info.transitivity} + />} + {"masc" in form ? + + : "p" in form ? + + : + + } + +} + +export default VerbFormDisplay; diff --git a/src/components/VerbTable.tsx b/src/components/VerbTable.tsx new file mode 100644 index 0000000..b076ceb --- /dev/null +++ b/src/components/VerbTable.tsx @@ -0,0 +1,159 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { useState, useEffect } from "react"; +import Pashto from "./Pashto"; +import Phonetics from "./Phonetics"; +import { + psStringEquals, + isAllOne, + addEnglish, +} from "../lib/p-text-helpers"; +import { isSentenceForm } from "../lib/misc-helpers"; +import * as T from "../types"; + +const arrowDown = + +; + +const genderAbbrev = (gender: "masc" | "fem" | undefined): " m." | " f." | "" => ( + gender === "masc" + ? " m." + : gender === "fem" + ? " f." + : "" +); + +const minifyTableGender = (block: T.VerbBlock | T.ImperativeBlock): Array => { + // @ts-ignore + return block.reduce((table, person, i, src) => { + const isFem = i % 2 !== 0; + if (isFem) { + return table; + } + const femPersAhead = src[i+1]; + const femPersIsTheSame = ( + psStringEquals(person[0][0], femPersAhead[0][0]) && + psStringEquals(person[1][0], femPersAhead[1][0]) + ); + if (femPersAhead && !femPersIsTheSame) { + return [...table, { + masc: person, + fem: femPersAhead, + }]; + } + return [...table, person]; + }, []); +}; + +function Cell({ item, textOptions, center, noBorder }: { + item: T.ArrayOneOrMore, + textOptions: T.TextOptions, + center?: boolean, + noBorder?: boolean, +}) { + const [version, setVersion] = useState(0); + useEffect(() => setVersion(0), [item]); + function advanceVersion() { + setVersion((version + 1) % item.length); + } + const w = item[version] || item[0]; + return ( + +
+
+
+ {w} +
+
+ {w} +
+ {w.e &&
{w.e}
} +
+ {item.length > 1 && + + } +
+ + ); +} + +function VerbTable({ block, textOptions, english }: { + block: T.VerbBlock | T.ImperativeBlock | T.ArrayOneOrMore, + english?: T.EnglishBlock | string, + textOptions: T.TextOptions, +}) { + const blockWEng = english ? addEnglish(english, block) : block; + if (isSentenceForm(blockWEng) || isAllOne(blockWEng as T.VerbBlock | T.ImperativeBlock)) { + const item = isSentenceForm(blockWEng) + ? block as unknown as T.ArrayOneOrMore + : (() => { + const b = block as T.ImperativeBlock | T.VerbBlock + return b[0][0]; + })(); + return + + + + + +
+ } + const bl = blockWEng as T.VerbBlock | T.ImperativeBlock; + const b = minifyTableGender(bl); + return + + + + + + + + + {b.reduce((rows: React.ReactNode[], person, i, arr) => { + function drawRow({ line, gender }: { line: T.PersonLine, gender?: "masc" | "fem" }) { + const pers = arr.length > 1 ? ["1st", "2nd", "3rd"] : ["2nd"]; + const rowLabel = `${pers[i]}${genderAbbrev(gender)}`; + const color = !gender + ? "inherit" + : gender === "masc" + ? "#78c8ed" + : "#ff99aa"; + + return ( + + + + + + ); + } + return "masc" in person + ? [ + ...rows, + drawRow({ line: person.masc, gender: "masc" }), + drawRow({ line: person.fem, gender: "fem" }), + ] + : [...rows, drawRow({ line: person })]; + }, [])} + +
SingularPlural
{rowLabel}
+} + +export default VerbTable; \ No newline at end of file diff --git a/src/components/verb-info/VerbInfo.tsx b/src/components/verb-info/VerbInfo.tsx new file mode 100644 index 0000000..d92303c --- /dev/null +++ b/src/components/verb-info/VerbInfo.tsx @@ -0,0 +1,198 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + CSSProperties, + useState, +} from "react"; +import { + pickPersInf, + hasPersInfs, + noPersInfs, +} from "../../lib/misc-helpers"; +import VerbInfoItemDisplay from "./VerbInfoItemDisplay"; +import PersonInfsPicker from "../PersInfsPicker"; +import VerbTypeInfo from "./VerbTypeInfo"; +import Hider from "../Hider"; +import * as T from "../../types"; +import fadedTree from "./faded-tree.svg"; + +// import camera from "../icons/camera-fill"; +// import video from "../icons/camera-video-fill"; + +const indentR = { + paddingLeft: "1rem", +}; + +const title: CSSProperties = { + fontWeight: "bolder", + marginBottom: "0.5rem", + marginTop: "0.5rem", +}; + +export function RootsAndStems({ textOptions, info }: { + textOptions: T.TextOptions, + info: T.NonComboVerbInfo, +}) { + const hasPerfectiveSplit = !!(info.root.perfectiveSplit || info.stem.perfectiveSplit); + const showPersInf = hasPersInfs(info); + const [persInf, setPersInf] = useState("mascSing"); + const [split, setSplit] = useState(false); + const perfectiveStem = (info.stem.perfectiveSplit && split) + ? info.stem.perfectiveSplit + : info.stem.perfective; + const perfectiveRoot = (info.root.perfectiveSplit && split) + ? info.root.perfectiveSplit + : info.root.perfective; + const colClass = "col col-md-5 px-0 mb-1"; + const rowClass = "row justify-content-between"; + return ( +
+ {showPersInf && setPersInf(p)} + transitivity={info.transitivity} + />} +
+ {/*
+ {info.def} +
+ {info.subDef && +
+ {info.subDef} +
+ } */} +
+
+
+ +
+
+
+
+ +
+ {hasPerfectiveSplit &&
+ +
} +
+
+
+
+
+
+
Imperfective Stem
+
+
+ +
+
+
+
+
Perfective Stem
+
+
+ +
+
+
+
+
+
+
Imperfective Root
+
+
+ +
+
+
+
+
+
Perfective Root
+
+
+ +
+
+
+
+
+
Past Participle
+ +
+
+
+
+ ); +} + +function VerbInfo({ info, textOptions, showingStemsAndRoots, toggleShowingSar }: { + info: T.NonComboVerbInfo, + textOptions: T.TextOptions, + showingStemsAndRoots: boolean, + toggleShowingSar: () => void, +}) { + const inf = noPersInfs(info.root.imperfective).long; + return ( +
+ + + + +
+ ); +} + +export default VerbInfo; \ No newline at end of file diff --git a/src/components/verb-info/VerbInfoItemDisplay.tsx b/src/components/verb-info/VerbInfoItemDisplay.tsx new file mode 100644 index 0000000..f4aa5ff --- /dev/null +++ b/src/components/verb-info/VerbInfoItemDisplay.tsx @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { useEffect, useState } from "react"; +import ButtonSelect from "../ButtonSelect"; +import Pashto from "../Pashto"; +import Phonetics from "../Phonetics"; +import * as T from "../../types"; +import { concatPsString } from "../../lib/p-text-helpers"; + +type InputItem = T.SingleOrLengthOpts; + +function VerbInfoItemDisplay({ item, textOptions, tails }: { + item: InputItem, + textOptions: T.TextOptions, + tails?: boolean, +}) { + const [length, setLength] = useState("long"); + const getL = (x: InputItem): T.PsString | [T.PsString, T.PsString] => ( + "long" in x + ? x[length] || x.short + : x + ); + useEffect(() => { + setLength((length === "mini" && !("mini" in item)) ? "short" : length); + }, [item]); + // const lengthsAvailable = "long" in item + // ? [...["long", "short"], ..."mini" in item ? ["mini"] : []] + // : []; + const text = getL(item); + + function addTails(text: T.PsString): T.PsString { + return concatPsString(text, { p: "ـ", f: "–"}); + } + return <> + {Array.isArray(text) ? +
+
+ {text[0]} + __ + {tails ? addTails(text[1]) : text[1]} +
+
+ {text[0]} + __ + {tails ? addTails(text[1]) : text[1]} +
+
+ : +
+
+ {tails ? addTails(text) : text} +
+
+ {tails ? addTails(text) : text} +
+
+ } + {"long" in item &&
+ setLength(p as T.Length)} + /> +
} + ; +} + +export default VerbInfoItemDisplay; \ No newline at end of file diff --git a/src/components/verb-info/VerbTypeInfo.tsx b/src/components/verb-info/VerbTypeInfo.tsx new file mode 100644 index 0000000..aea8112 --- /dev/null +++ b/src/components/verb-info/VerbTypeInfo.tsx @@ -0,0 +1,297 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { useState } from "react"; +import InlinePs from "../InlinePs"; +import Pashto from "../Pashto"; +import Phonetics from "../Phonetics"; +import { + makePsString +} from "../../lib/p-text-helpers"; +import { Modal } from "react-bootstrap"; +import stativeCompTrans from "./stative-compound-transitive.svg"; +import stativeCompIntrans from "./stative-compound-intransitive.svg"; +import dynamicCompTrans from "./dynamic-compound-transitive.svg"; +import dynamicCompIntrans from "./dynamic-compound-intransitive.svg"; +import generativeStatCompTrans from "./generative-stative-compound-transitive.svg"; +import generativeStatCompIntrans from "./generative-stative-compound-intransitive.svg"; +import intransitiveDiagram from "./intransitive.svg"; +import transitiveDiagramPresent from "./transitive-present.svg"; +import transitiveDiagramPast from "./transitive-past.svg"; +import gramTransitiveDiagramPresent from "./grammatically-transitive-present.svg"; +import gramTransitiveDiagramPast from "./grammatically-transitive-past.svg"; +import * as T from "../../types"; + +function CompoundFormula({ a, b }: { + a: React.ReactNode, + b: React.ReactNode, +}) { + return ( +
+
+ {a} +
+
+ + +
+
+ {b} +
+
+ ); +} + +function ExplanationImage({ src, alt }: { + src: any, + alt?: string, +}) { + return ( + {alt} + ); +} + +const typeInfo = ( + type: string, + opts: T.TextOptions, +) => { + return type === "simple" + ? <> +

A simple verb is a verb that is just one piece. It can't be broken down into different words with different meanings, like compound verbs can.

+ + : type === "stative compound" + ? <> +

A stative compound talks about something changing from one state to another.

+ +
+ Complement +
+
Adjective, Noun, or Adverb
+ } + b={<> +
+ Aux. Verb +
+
+
With transitive:
+
{{ p: "کول", f: "kawul" }} (to make)
+
With intransitive:
+
{{ p: "کېدل", f: "kedul" }} (to become)
+
+ } + /> +

Transitive stative compounds

+ +

Intransitive stative compounds

+ +

It's important to remember that the aux. verbs used for these compounds {{ p: "کول", f: "kawul" }} (to make) and {{ p: "کېدل", f: "kedul" }} (to become) will never, ever take a {{ p: "و", f: "oo" }} prefix. 🚫

+
A couple of other notes:
+

In the imperfective aspect, the complement and aux. verb are often fused together. For example: {{ p: "پوخ", f: "pokh" }} + {{ p: "کول", f: "kawul" }} = {{ p: "بخول", f: "pakhawul" }}. But they always stay broken apart in the perfective aspect.

+

When complements are nouns or adverbs, they act (and carry a meaning) almost as if they were adjectives.

+ + : type === "dynamic compound" + ? <> +

A dynamic compound talks about some action being done.

+ +
+ Complement +
+
Noun (action or activity)
+ } + b={<> +
+ Aux. Verb +
+ } + /> +

Transitive Dynamic Compounds

+

These talk about someone doing an action or activity.

+ +

There is a subject/agent doing the action, and the action or activity is the object of the sentence. It's important to remember that with these compounds, the object of the sentence is included inside the compound, and you can't have any other object in the sentence.

+

Intransitive Dynamic Compounds

+

These talk about an action or activity happening.

+ +

Here the complement, the activity included in the compound, is the subject of the sentence.

+
Other notes:
+

Dynamic compounds made with {{ p: "کول", f: "kawul" }} (to do) will also have an intransitive version made with {{ p: "کېدل", f: "kedul" }} (to happen).

+

Dynamic compounds made with {{ p: "کول", f: "kawul" }} (to do) or {{ p: "کېدل", f: "kedul" }} (to happen) will always take a {{ p: "و", f: "oo" }} prefix in the perfective aspect.

+ + : type === "generative stative compound" + ? <> +

Generative stative compounds are strange compounds that seem to behave like a cross between a stative compound and a dynamic compound.

+
    +
  • The object is included in the compound... like with dynamic compounds
  • +
  • But they also use {{ p: "کول", f: "kawul" }} (to make), the verb that never gets the {{ p: "و", f: "oo" }} prefix... like with stative compounds
  • +
+

This may seem quite confusing at first.

+

We can think of these verbs as stative compounds but with an implied complement meaning something like "existing." So they talk about some thing being created or brought out into existence.

+

Transitive Generative Stative Compounds

+ +

Intransitive Generative Stative Compounds

+ + + : null; +}; + +const transitivityInfo = ( + type: string, + textOptions: T.TextOptions, +) => { + return type === "transitive" + ? <> +

Transitive verbs are verbs that take an object.

+

Transitive verbs are especially difficult because they work totally differently in the past tense. (They are ergative in the past tense only.) This takes a lot of hard work for the learner to get used to!

+

In all non-past forms

+
    +
  • The subject is not inflected
  • +
  • The object is not inflected, or it can alse be an enclitic (mini) pronoun (exception: the object is inflected when it's a 1st or 2nd person pronoun)
  • +
  • The verb agrees with the subject
  • +
+ +

In the past tense

+
    +
  • The subject is inflected, or it can be an enclitic (mini) pronoun
  • +
  • The object is not inflected
  • +
  • The verb agrees with the object
  • +
+ + + : type === "intransitive" + ? <> +

Intransitive verbs are verbs that don't take an object. They only take a subject, which is a person or thing that experiences the action of the verb.

+

- The subject is always a uninflected/plain noun or pronoun.

+

- The verb always agrees with the subject.

+ + + : type === "grammatically transitive" + ? <> +

Gramatically transitive verbs are verbs that don't appear to have an object, but actually work as if they do!

+

These work just like transitive verbs, except that the object is an implied (unspoken) 3rd person masculine plural entity.

+

In all non-past forms

+ +

In the past tense

+ + + : null; +} + +function CompoundBreakdown({ info, textOptions }: { + info: T.NonComboVerbInfo, + textOptions: T.TextOptions, +}) { + const isComplement = ("complement" in info || "objComplement" in info); + if (!isComplement) { + return null; + } + const complement = ((): T.PsString => { + if ("objComplement" in info) { + return info.objComplement.plural + ? info.objComplement.plural + : makePsString(info.objComplement.entry.p, info.objComplement.entry.f) + } + if ("complement" in info) { + return info.complement.masc[0][0]; + } + else return makePsString("aa", "aa"); + })(); + const aux = ((): { ps: T.PsString, e: string } => { + if (info.type === "stative compound" || info.type === "generative stative compound") { + return info.transitivity === "transitive" + ? { ps: { p: "کول", f: "kawul" }, e: "to make"} + : { ps: { p: "کېدل", f: "kedul" }, e: "to become"}; + } + if (!("auxVerb" in info)) return { ps: {p: "", f: ""}, e: ""}; + const kawulDyn = info.type === "dynamic compound" && info.auxVerb.p === "کول"; + return { + ps: makePsString(info.auxVerb.p, info.auxVerb.f), + e: kawulDyn ? "to do" : "", + } + })(); + return ( +
+ +
+ {complement} +
+
+ {complement} +
+
} + b={
+
+ {aux.ps} +
+
+ {aux.ps} +
+ {aux.e &&
{aux.e}
} +
} + /> + + ); +} + +function VerbTypeInfo({ info, textOptions }: { + info: T.NonComboVerbInfo, + textOptions: T.TextOptions, +}) { + const [showingTypeModal, setShowingTypeModal] = useState(false); + const [showingTransModal, setShowingTransModal] = useState(false); + return ( +
+
+ This is a + + verb and it's + +
+ + setShowingTypeModal(false)}> + + About {info.type} verbs + + {typeInfo(info.type, textOptions)} + + + + + setShowingTransModal(false)}> + + What does "{info.transitivity}" mean? + + {transitivityInfo(info.transitivity, textOptions)} + + + + +
+ ); +} + +export default VerbTypeInfo; \ No newline at end of file diff --git a/src/components/verb-info/dynamic-compound-intransitive.svg b/src/components/verb-info/dynamic-compound-intransitive.svg new file mode 100644 index 0000000..168ef7b --- /dev/null +++ b/src/components/verb-info/dynamic-compound-intransitive.svg @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/dynamic-compound-transitive.svg b/src/components/verb-info/dynamic-compound-transitive.svg new file mode 100644 index 0000000..8f431df --- /dev/null +++ b/src/components/verb-info/dynamic-compound-transitive.svg @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/faded-tree.svg b/src/components/verb-info/faded-tree.svg new file mode 100644 index 0000000..e72f8d7 --- /dev/null +++ b/src/components/verb-info/faded-tree.svg @@ -0,0 +1,715 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + + 2013-09-30T21:43:37 + Oak Tree + https://openclipart.org/detail/184451/tree-by-flooredmusic-184451 + + + flooredmusic + + + + + comic + forest + nature + oak + tree + view + wood + woods + + + + + + + + + + + diff --git a/src/components/verb-info/generative-stative-compound-intransitive.svg b/src/components/verb-info/generative-stative-compound-intransitive.svg new file mode 100644 index 0000000..02d6b96 --- /dev/null +++ b/src/components/verb-info/generative-stative-compound-intransitive.svg @@ -0,0 +1,639 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/generative-stative-compound-transitive.svg b/src/components/verb-info/generative-stative-compound-transitive.svg new file mode 100644 index 0000000..3f3decd --- /dev/null +++ b/src/components/verb-info/generative-stative-compound-transitive.svg @@ -0,0 +1,655 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/grammatically-transitive-past.svg b/src/components/verb-info/grammatically-transitive-past.svg new file mode 100644 index 0000000..890eb85 --- /dev/null +++ b/src/components/verb-info/grammatically-transitive-past.svg @@ -0,0 +1,589 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/grammatically-transitive-present.svg b/src/components/verb-info/grammatically-transitive-present.svg new file mode 100644 index 0000000..22b3966 --- /dev/null +++ b/src/components/verb-info/grammatically-transitive-present.svg @@ -0,0 +1,472 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/intransitive.svg b/src/components/verb-info/intransitive.svg new file mode 100644 index 0000000..9092ce6 --- /dev/null +++ b/src/components/verb-info/intransitive.svg @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/stative-compound-intransitive.svg b/src/components/verb-info/stative-compound-intransitive.svg new file mode 100644 index 0000000..5c15844 --- /dev/null +++ b/src/components/verb-info/stative-compound-intransitive.svg @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/stative-compound-transitive.svg b/src/components/verb-info/stative-compound-transitive.svg new file mode 100644 index 0000000..6090c7e --- /dev/null +++ b/src/components/verb-info/stative-compound-transitive.svg @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/transitive-past.svg b/src/components/verb-info/transitive-past.svg new file mode 100644 index 0000000..1883101 --- /dev/null +++ b/src/components/verb-info/transitive-past.svg @@ -0,0 +1,555 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/verb-info/transitive-present.svg b/src/components/verb-info/transitive-present.svg new file mode 100644 index 0000000..aa05758 --- /dev/null +++ b/src/components/verb-info/transitive-present.svg @@ -0,0 +1,681 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images.d.ts b/src/images.d.ts new file mode 100644 index 0000000..93e06c8 --- /dev/null +++ b/src/images.d.ts @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +declare module '*.jpeg'; +declare module '*.jpg'; +declare module '*.jpeg'; +declare module '*.png'; +declare module '*.svg'; +declare module '*.gif'; \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..ec2585e --- /dev/null +++ b/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..ef2edf8 --- /dev/null +++ b/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/src/lib/accent-helpers.test.ts b/src/lib/accent-helpers.test.ts new file mode 100644 index 0000000..63c517a --- /dev/null +++ b/src/lib/accent-helpers.test.ts @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { makePsString } from "./p-text-helpers"; +import { + accentOnFront, + accentPastParticiple, + accentFSylsOnNFromEnd, + accentOnNFromEnd, + splitUpSyllables, +} from "./accent-helpers"; + +const toAccentFront = [ + { + input: makePsString("پرېښودل", "prexodúl"), + output: makePsString("پرېښودل", "préxodul"), + }, + { + input: { + long: makePsString("وګرځېد", "oogurdzed"), + short: makePsString("وګرځ", "oogurdz"), + }, + output: { + long: makePsString("وګرځېد", "óogurdzed"), + short: makePsString("وګرځ", "óogurdz"), + }, + }, +]; + +test(`accentOnFront should work`, () => { + toAccentFront.forEach((item) => { + expect(accentOnFront(item.input)).toEqual(item.output); + }); +}); + +const toAccentPastParticiple = [ + { + input: makePsString("پرېښی", "prexey"), + output: makePsString("پرېښی", "préxey"), + }, + { + input: makePsString("ازمویلی", "azmoyuley"), + output: makePsString("ازمویلی", "azmóyuley"), + }, +]; + +test(`accentPastParticiple should work`, () => { + toAccentPastParticiple.forEach((item) => { + expect(accentPastParticiple(item.input)).toEqual(item.output); + }); +}); + +test(`splitUpSyllables should work`, () => { + expect(splitUpSyllables("akheestul")).toEqual(["akh", "eest", "ul"]); +}); + +test(`accentOnFSylsOnNFromEnd should work`, () => { + expect(accentFSylsOnNFromEnd(["pu", "xtaa", "nu"], 0)).toBe("puxtaanú"); + expect(accentFSylsOnNFromEnd(["leed", "ul", "ey"], 1)).toBe("leedúley"); +}); + +test(`accentOnNFromEnd should work`, () => { + expect(accentOnNFromEnd({ p: "پښتانه", f: "puxtaanu" }, 0)).toEqual({ + p: "پښتانه", + f: "puxtaanú", + }); + expect(accentOnNFromEnd({ p: "لیدلی", f: "leedúley" }, 1)).toEqual({ + p: "لیدلی", + f: "leedúley", + }); +}); diff --git a/src/lib/accent-helpers.ts b/src/lib/accent-helpers.ts new file mode 100644 index 0000000..ad4c74d --- /dev/null +++ b/src/lib/accent-helpers.ts @@ -0,0 +1,115 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { makePsString } from "./p-text-helpers"; +import * as T from "../types"; + +/** + * Returns a Pashto string (or string with Length options) ensuring that + * the accent is on front + * + * @param s + */ +export function accentOnFront(s: T.SingleOrLengthOpts): T.SingleOrLengthOpts { + if ("long" in s) { + return { + short: accentOnFront(s.short) as T.PsString, + long: accentOnFront(s.long) as T.PsString, + }; + } + return { + ...s, + f: accentSyllable(removeAccents(s.f)), + }; +} + +/** + * Ensures an accent on a past participle ie. leedúley, préxey, azmóyuley + * + * @param s - the Pashto string (with Pashto and Phonetics) to ensure the accent on + */ +export function accentPastParticiple(s: T.PsString): T.PsString { + // check for accent placing in words like wáayuley and azmóyuley + const accentFallsOnThirdLast = (syls: string[]) => { + if (syls.length < 3) return false; + const secondLast = syls[syls.length-2]; + const thirdLast = syls[syls.length-3]; + const lastLetterOfThirdLast = thirdLast.slice(-1); + return ( + (secondLast === "ul") && (lastLetterOfThirdLast === "y") + ); + } + // remove all accents + const accentsRemoved = removeAccents(s.f); + // split up the syllables (preserving the spaces) + const syllables = splitUpSyllables(accentsRemoved); + // add an accent on the appropriate syllable + const n = accentFallsOnThirdLast(syllables) ? 2 : 1; + const accentedF = accentFSylsOnNFromEnd(syllables, n); + return makePsString(s.p, accentedF); +} + +export function splitUpSyllables(s: string): string[] { + return s.match(/ |([^a|e|i|o|u| ]*(aa|a|ey|ee|e|oo|o|i|u)[^a|e|i|o|u| ]*)/g) as string[]; +} + +/** + * Returns a phonetic string with the accent placed n syllables from the end + * + * @param syls - an array of syllables in phonetic strings without accents (including spaces as extra items) + * @param n - the number of syllables from the end to put the accent + */ +export function accentFSylsOnNFromEnd(syls: string[], n: number): string { + return [ + ...syls.slice(0, syls.length-(n+1)), // before accent + accentSyllable(syls[syls.length-(n+1)]), // syllable to be accented + ...(n !== 0) ? syls.slice(syls.length-n) : [], // after syllable to be accented + ].join(""); +} + +export function accentOnNFromEnd(ps: T.PsString, n: number): T.PsString { + const fSyls = splitUpSyllables(removeAccents(ps.f)); + return makePsString( + ps.p, + accentFSylsOnNFromEnd(fSyls, n), + ); +} + +function accentSyllable(s: string): string { + const replacer = [ + { vowel: "a", accented: "á" }, + { vowel: "e", accented: "é" }, + { vowel: "i", accented: "í" }, + { vowel: "o", accented: "ó" }, + { vowel: "u", accented: "ú" }, + { vowel: "U", accented: "Ú" }, + ]; + return s.replace(/a|e|i|o|u|U/, (match) => { + const r = replacer.find((x) => x.vowel === match); + /* istanbul ignore next */ + return r?.accented || ""; + }); +} + +export function removeAccents(s: T.PsString): T.PsString; +export function removeAccents(s: string): string; +export function removeAccents(s: T.PsString | string): T.PsString | string { + if (typeof s !== "string") { + return makePsString( + s.p, + removeAccents(s.f), + ); + } + return s.replace(/á/g, "a") + .replace(/é/g, "e") + .replace(/í/g, "i") + .replace(/ó/g, "o") + .replace(/ú/g, "u") + .replace(/Á/g, "A") + .replace(/Ú/g, "U"); +} diff --git a/src/lib/add-pronouns.ts b/src/lib/add-pronouns.ts new file mode 100644 index 0000000..deef56e --- /dev/null +++ b/src/lib/add-pronouns.ts @@ -0,0 +1,485 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + ensureBaAt, + isAllOne, + isVerbBlock, + removeHead, + uniquePsStringArray, + splitOffLeapfrogWord, + removeObjComp, + psRemove, + psStringContains, +} from "../lib/p-text-helpers"; +import { + getPersonFromVerbForm, + pickPersInf, +} from "../lib/misc-helpers"; +import { + baParticle, + pronouns, +} from "../lib/grammar-units"; +import { + removeAccents, +} from "../lib/accent-helpers"; +import { concatPsString } from "../lib/p-text-helpers"; +import * as T from "../types"; +const pashtoCharacterRange = "\u0621-\u065f\u0670-\u06d3\u06d5" + +function getSplitHead(split: T.SplitInfo | undefined, matrixKey: T.PersonInflectionsField) { + if (!split) { + return undefined; + } + const fromMatrix = pickPersInf(split, matrixKey) + // doesn't matter what length it is, the head will always be the same + const pair = "long" in fromMatrix ? fromMatrix.long : fromMatrix; + return pair[0]; +} + +function formHasVariations(form: T.VerbForm | T.ImperativeForm | T.ParticipleForm | T.SentenceForm): boolean { + if ("mascSing" in form) { + return formHasVariations(form.mascSing); + } + if ("long" in form) { + return formHasVariations(form.long); + } + if (!isVerbBlock(form)) { + return false; + } + return !isAllOne(form as T.VerbBlock); +} + +type Pronouns = undefined | { + subject: T.PsString | [T.PsString, T.PsString], + object?: T.PsString | [T.PsString, T.PsString], + mini: T.PsString, +} + +const nuParticle = { p: "نه", f: "nú" }; + +export default function addPronouns({ s, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }: { + s: T.SentenceForm, + subject: T.Person, + object: T.Person, + info: T.NonComboVerbInfo, + displayForm: T.DisplayFormForSentence, + intransitive: boolean, + ergative: boolean, + matrixKey: T.PersonInflectionsField, + negative: boolean, +}): T.SentenceForm { + if ("long" in s) { + return { + long: addPronouns({ s: s.long, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }) as T.ArrayOneOrMore, + short: addPronouns({ s: s.short, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }) as T.ArrayOneOrMore, + ...s.mini ? { + mini: addPronouns({ s: s.mini, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }) as T.ArrayOneOrMore, + } : {}, + } + } + const firstOrSecondObjectPresent = [0,1,2,3,6,7,8,9].includes(object) && !displayForm.past; + const nearPronounPossible = (p: T.Person) => [4, 5, 10, 11].includes(p); + const noPronouns = + info.transitivity === "grammatically transitive" && displayForm.passive; + const noObjectPronoun = + intransitive || info.transitivity === "grammatically transitive" || + info.type === "dynamic compound" || info.type === "generative stative compound"; + const transDynCompPast = + info.transitivity === "transitive" && info.type === "dynamic compound" && displayForm.past; + const subjectPronoun = (getPersonFromVerbForm( + pronouns.far[ergative ? "inflected" : "plain"], + subject, + ) as T.ArrayOneOrMore)[0]; + const nearSubjectPronoun = (getPersonFromVerbForm( + pronouns.near[ergative ? "inflected" : "plain"], + subject, + ) as T.ArrayOneOrMore)[0]; + const objectPronoun = (getPersonFromVerbForm( + pronouns.far[firstOrSecondObjectPresent ? "inflected" : "plain"], + object, + ) as T.ArrayOneOrMore)[0]; + const nearObjectPronoun = (getPersonFromVerbForm( + pronouns.near[firstOrSecondObjectPresent ? "inflected" : "plain"], + object, + ) as T.ArrayOneOrMore)[0]; + const miniPronoun = (getPersonFromVerbForm( + pronouns.mini, + ergative ? subject : object, + ) as T.ArrayOneOrMore)[0]; + + const prns: Pronouns = noPronouns + ? undefined + : noObjectPronoun + ? { + subject: nearPronounPossible(subject) ? [subjectPronoun, nearSubjectPronoun] : subjectPronoun, + mini: miniPronoun, + } : { + subject: nearPronounPossible(subject) ? [subjectPronoun, nearSubjectPronoun] : subjectPronoun, + object: nearPronounPossible(object) ? [objectPronoun, nearObjectPronoun] : objectPronoun, + mini: miniPronoun, + }; + + function attachPronounsToVariation(ps: T.PsString, prns: Pronouns): T.ArrayOneOrMore { + if (!prns) { + return [ps]; + } + if (Array.isArray(prns.subject)) { + return [ + ...attachPronounsToVariation(ps, { ...prns, subject: prns.subject[0] }), + ...attachPronounsToVariation(ps, { ...prns, subject: prns.subject[1] }), + ] as T.ArrayOneOrMore; + } + if (Array.isArray(prns.object)) { + return [ + ...attachPronounsToVariation(ps, { ...prns, object: prns.object[0] }), + ...attachPronounsToVariation(ps, { ...prns, object: prns.object[1] }), + ] as T.ArrayOneOrMore; + } + const splitHead = (displayForm.aspect && displayForm.aspect === "perfective") + ? getSplitHead(info[displayForm.past ? "root" : "stem"].perfectiveSplit, matrixKey) + : undefined; + const basicForms = (!prns.object) + // basic form with only one pronoun + ? makeBasicPronounForm(ps, splitHead, displayForm, info, negative, prns.subject) + : [ + // basic form two full pronouns + ...makeBasicPronounForm(ps, splitHead, displayForm, info, negative, prns.subject, prns.object), + // basic form one full, one mini pronoun + ...makeBasicPronounForm( + ps, + splitHead, + displayForm, + info, + negative, + ergative ? prns.object : prns.subject, + prns.mini, + ), + ] as T.ArrayOneOrMore; + + const ergativeGrammTrans = (info.transitivity === "grammatically transitive" && ergative); + const canWorkWithOnlyMini = (prns.object && !displayForm.secondPronounNeeded && formHasVariations(displayForm.form)) + || transDynCompPast || ergativeGrammTrans; + return [ + ...basicForms, + ...canWorkWithOnlyMini + ? makeOnlyMiniForm(ps, splitHead, displayForm, info, negative, prns.mini) + : [], + ] as T.ArrayOneOrMore; + } + + // @ts-ignore + return s.reduce((variations, current) => ( + [...variations, ...uniquePsStringArray( + attachPronounsToVariation(current, prns) + )] + ), []) as T.ArrayOneOrMore; +} + +function nuMustGoAfterSplitHead(head: T.PsString) { + return ( + ["و", "وا"].includes(head.p) + || + head.p.slice(-1) === " " // compound splits + || + head.p.match(`[${pashtoCharacterRange}]* و`) + ); +} + +function spaceAfterSplitHead(head: T.PsString) { + if (nuMustGoAfterSplitHead(head) && head.p.slice(-1) !== " ") { + return { p: "", f: "-" } + } + return { p: " ", f: " " }; +} + +function makeBasicPronounForm( + ps: T.PsString, + splitHead: T.PsString | undefined, + displayForm: T.DisplayFormForSentence, + info: T.NonComboVerbInfo, + negative: boolean, + firstPronoun: T.PsString, + secondPronoun?: T.PsString, +): T.PsString[] { + if (!negative) { + return [ + ensureBaAt( + concatPsString( + firstPronoun, + " ", + secondPronoun ? concatPsString(secondPronoun, " ") : "", + ps, + ), + 1) + ]; + } + const objComplement = getObjComplement(info); + function negativeWOutSplit() { + if (!displayForm.reorderWithNegative) { + return [ + ensureBaAt( + concatPsString( + firstPronoun, + " ", + secondPronoun + ? concatPsString(secondPronoun, " ") + : objComplement + ? concatPsString(objComplement, " ") + : "", + nuParticle, + " ", + removeAccents(objComplement ? removeObjComp(objComplement, ps) : ps) + ), + 1), + ]; + } + const [beginning, end] = splitOffLeapfrogWord(ps); + return [ + ensureBaAt( + objComplement ? + concatPsString( + firstPronoun, + " ", + objComplement, + " ", + nuParticle, + " ", + end, + " ", + removeAccents(removeObjComp(objComplement, beginning)), + ) + : concatPsString( + firstPronoun, + " ", + secondPronoun ? concatPsString(secondPronoun, " ") : "", + nuParticle, + " ", + end, + " ", + removeAccents(beginning), + ), + 1), + ensureBaAt( + concatPsString( + firstPronoun, + " ", + secondPronoun ? concatPsString(secondPronoun, " ") : "", + removeAccents(beginning), + " ", + nuParticle, + " ", + end, + ), + 1), + ]; + } + function insertNegInSplit(splitHead: T.PsString) { + if (!displayForm.reorderWithNegative) { + return [ + ensureBaAt( + concatPsString( + firstPronoun, + " ", + secondPronoun ? concatPsString(secondPronoun, " ") : "", + removeAccents(splitHead), + spaceAfterSplitHead(splitHead), + nuParticle, + " ", + removeHead(splitHead, ps), + ), + 1), + ]; + } + const [beginning, end] = splitOffLeapfrogWord(ps); + return [ + ensureBaAt( + concatPsString( + firstPronoun, + " ", + secondPronoun ? concatPsString(secondPronoun, " ") : "", + removeAccents(splitHead), + spaceAfterSplitHead(splitHead), + nuParticle, + " ", + end, + " ", + removeHead(splitHead, beginning), + ), + 1), + ensureBaAt( + concatPsString( + firstPronoun, + " ", + secondPronoun ? concatPsString(secondPronoun, " ") : "", + removeAccents(splitHead), + spaceAfterSplitHead(splitHead), + nuParticle, + " ", + removeHead(splitHead, beginning), + " ", + end, + ), + 1), + ]; + } + if (splitHead) { + return nuMustGoAfterSplitHead(splitHead) ? insertNegInSplit(splitHead) : [ + ...insertNegInSplit(splitHead), + ...negativeWOutSplit(), + ] + } + return negativeWOutSplit(); +} + +function makeOnlyMiniForm( + ps: T.PsString, + splitHead: T.PsString | undefined, + displayForm: T.DisplayFormForSentence, + info: T.NonComboVerbInfo, + negative: boolean, + mini: T.PsString, +): T.PsString[] { + const objComplement = getObjComplement(info); + function reorderedNegativeAfterSplitHead(splitHead: T.PsString) { + const [beginning, end] = splitOffLeapfrogWord(ps); + return ensureBaAt( + objComplement ? + concatPsString( + objComplement, + " ", + mini, + " ", + removeAccents(removeObjComp(objComplement, splitHead)), + spaceAfterSplitHead(splitHead), + nuParticle, + " ", + end, + " ", + removeHead(splitHead, beginning), + ) + : concatPsString( + removeAccents(splitHead), + spaceAfterSplitHead(splitHead), + mini, + " ", + nuParticle, + " ", + end, + " ", + removeHead(splitHead, beginning), + ), + 1) + } + if (splitHead) { + // only mini pronoun with split + if (!displayForm.reorderWithNegative || !negative) { + const safeSplitHead = removeObjComp(objComplement, splitHead); + return [ensureBaAt( + concatPsString( + objComplement ? concatPsString(objComplement, " ", mini, " ") : "", + negative ? removeAccents(safeSplitHead) : safeSplitHead, + spaceAfterSplitHead(safeSplitHead), + !objComplement ? concatPsString(mini, " ") : "", + negative ? concatPsString(nuParticle, " ") : "", + removeHead(splitHead, ps) + ), + 1)]; + } + // if (!nuMustGoAfterSplitHead(splitHead)) { + // TODO: IS THIS A SEPERATELY NECESSARY THING FOR VERBS LIKE + // PREXODUL -- LIKE COULD YOU ALSO DO A VERSION WHERE THE SPLIT ISN'T USED + // return [reorderedNegativeAfterSplitHead(splitHead)]; + // } + return [reorderedNegativeAfterSplitHead(splitHead)]; + } + // only mini without split + if (!displayForm.reorderWithNegative || !negative) { + if (objComplement) { + return [ + concatPsString( + objComplement, + " ", + concatPsString(mini, " "), + negative ? concatPsString(" ", nuParticle, " ") : "", + removeObjComp(objComplement, ps), + ) + ]; + } + return [ + concatPsString( + psRemove(ps, concatPsString(baParticle, " ")), + " ", + psStringContains(ps, concatPsString(baParticle, " ")) ? concatPsString(baParticle, " ") : "", + mini, + negative ? concatPsString(" ", nuParticle) : "", + ) + ]; + } + const [beginning, end] = splitOffLeapfrogWord(ps); + if (objComplement) { + return [ + ensureBaAt( + concatPsString( + objComplement, + " ", + mini, + " ", + nuParticle, + " ", + end, + " ", + removeObjComp(objComplement, beginning), + ), + 1), + ensureBaAt( + concatPsString( + objComplement, + " ", + mini, + " ", + removeObjComp(objComplement, beginning), + " ", + nuParticle, + " ", + end, + ), + 1), + ] + } + return [ + ensureBaAt( + concatPsString( + beginning, + " ", + mini, + " ", + nuParticle, + " ", + end, + ), + 1), + ensureBaAt( + concatPsString( + nuParticle, + " ", + end, + " ", + mini, + " ", + beginning, + ), + 1), + ]; +} + +function getObjComplement(info: T.NonComboVerbInfo): T.PsString | undefined { + return info.type === "dynamic compound" ? + (info.objComplement.plural ? info.objComplement.plural : info.objComplement.entry) : + undefined; +} diff --git a/src/lib/conjugation-forms.tsx b/src/lib/conjugation-forms.tsx new file mode 100644 index 0000000..468b885 --- /dev/null +++ b/src/lib/conjugation-forms.tsx @@ -0,0 +1,539 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + getPersonInflectionsKey, + pickPersInf, + getPersonFromVerbForm, +} from "./misc-helpers"; +import addPronouns from "./add-pronouns"; +import * as T from "../types"; + +type FilterFunc = (form: any) => boolean; +type MapFunc = (opts: { + subject: T.Person, + object: T.Person, + displayForm: T.DisplayFormForSentence, + info: T.NonComboVerbInfo, + negative: boolean, +}) => T.DisplayFormItem; + +/** + * Used to apply a filter function on both the levels of forms and subgroups + * + * @param input + * @param func + */ +const formFilter = ( + input: T.DisplayFormItem[], + func: FilterFunc | FilterFunc[] +): T.DisplayFormItem[] => { + // TODO: Better filtering that lets us filter things only in sub categories + + // recursive madness to apply an array of filters 🤪 + // i'm doing this because I couldn't get a compose function to work 🤷‍♂️ + if (Array.isArray(func)) { + if (func.length === 0) return input; + return formFilter( + formFilter(input, func[0]), + func.slice(1), + ); + } + return ( + input.filter(func) + .map((f) => ( + "content" in f + ? { ...f, content: f.content.filter(func) } + : f + )) + ); +}; + +/** + * Used to apply a filter function on both the levels of forms and subgroups + * + * @param input + * @param func + */ +const formMap = ( + input: T.DisplayFormItem[], + func: MapFunc, + info: T.NonComboVerbInfo, + subject: T.Person, + object: T.Person, + negative: boolean, +): T.DisplayFormItem[] => { + return ( + input.map((f) => ( + "content" in f + ? { ...f, content: formMap(f.content, func, info, subject, object, negative) } + : func({ displayForm: f as T.DisplayFormForSentence, info, subject, object, negative }) + )) + ); +}; + +const makeSentence = ({ subject, object, info, displayForm, negative }: { + subject: T.Person, + object: T.Person, + info: T.NonComboVerbInfo, + displayForm: T.DisplayFormForSentence, + negative: boolean, +}): T.DisplayForm => { + const intransitive = info.transitivity === "intransitive" || !!displayForm.passive; + const ergative = !intransitive && !!displayForm.past; + function chooseConjugation(g: T.SingleOrLengthOpts): T.SentenceForm { + const person = ergative + ? object + : subject; + return getPersonFromVerbForm(g, person); + } + const f = displayForm.form; + // IMPORTANT TODO!!! -- IS THIS ALWAYS THE OBJECT HERE? + const matrixKey = getPersonInflectionsKey(object); + const matrixChosen = pickPersInf(f, matrixKey); + const conjugationChosen = chooseConjugation(matrixChosen); + const form = addPronouns({ + s: conjugationChosen, + subject, + object, + info, + displayForm, + intransitive, + ergative, + matrixKey, + negative, + }); + return { + ...displayForm, + form, + }; +} + +export const getForms = ({ conj, filterFunc, mode, subject, object, negative } : { + conj: T.VerbConjugation, + filterFunc?: FilterFunc | FilterFunc[], + mode: "chart" | "sentence", + subject: T.Person, + object: T.Person, + negative: boolean, +}): T.DisplayFormItem[] => { + const forms: T.DisplayFormItem[] = [ + { + label: "Present", + aspect: "imperfective", + form: conj.imperfective.nonImperative, + formula: "Imperfective Stem + Present Ending", + sentence: true, + explanation: "Something that is happening, happens generally, or is definitely about to happen. ('I am ____ing', 'I _____')", + }, + { + label: "Subjunctive", + aspect: "perfective", + form: conj.perfective.nonImperative, + formula: "Perfective Stem + Present Ending", + sentence: true, + explanation: "Used for hypothetical statements about the desire, necessity, purpose, or possibility of something happening. Or for saying something should or shouldn't happen. ('Should I ____?', 'so that'll I'll _____')" + }, + { + label: "Imperfective Future", + aspect: "imperfective", + form: conj.imperfective.future, + advanced: true, + formula: "به - ba + Present", + sentence: true, + explanation: "Saying something will happen, repeatedly or as an ongoing action", + }, + { + label: "Perfective Future", + aspect: "perfective", + form: conj.perfective.future, + advanced: true, + formula: "به - ba + Subjunctive", + sentence: true, + explanation: "Saying something will happen as a one-time event - May also used when there is some doubt", + }, + { + label: "Continuous Past", + aspect: "imperfective", + form: conj.imperfective.past, + formula: "Imperfective Root + Past Ending", + sentence: true, + explanation: "Saying something was happening, or would happen ('I was ____ing', 'I would ____')", + past: true, + }, + { + label: "Simple Past", + aspect: "perfective", + form: conj.perfective.past, + formula: "Perfective Root + Past Ending", + sentence: true, + explanation: "Saying something happened ('I ____ed')", + past: true, + }, + { + label: "Modal (ability/possibility)", + subgroup: "modal", + sentence: true, + content: [ + { + label: "Present Modal", + aspect: "imperfective", + form: conj.imperfective.modal.nonImperative, + sentence: true, + formula: "Imperfective Root + Non-Inflectinig Ey-Tail + Subjunctive کېدل - to become", + explanation: "saying that something is possible currently or in general ('I can ____')", + reorderWithNegative: true, + }, + { + label: "Subjunctive Modal", + aspect: "perfective", + form: conj.perfective.modal.nonImperative, + advanced: true, + sentence: true, + formula: "Perfective Root + Non-Inflectinig Ey-Tail + Subjunctive کېدل - to become", + explanation: "talking about the possibility of something in a subjunctive way ('so that I can ____')", + reorderWithNegative: true, + }, + { + label: "Imperfective Future Modal", + aspect: "imperfective", + form: conj.imperfective.modal.future, + advanced: true, + sentence: true, + formula: "به - ba + Present Modal", + explanation: "saying that something will be possible in general or in an ongoing sense in the future ('I'll be able to ____')", + reorderWithNegative: true, + }, + { + label: "Perfective Future Modal", + aspect: "perfective", + form: conj.perfective.modal.future, + advanced: true, + sentence: true, + formula: "به - ba + Subjunctive Modal", + explanation: "saying that something will be possible at a certain point in the future ('I'll be able to ____')", + reorderWithNegative: true, + }, + { + label: "Continous Past Modal", + aspect: "imperfective", + form: conj.imperfective.modal.past, + advanced: true, + past: true, + sentence: true, + formula: "Imperfective Root + Non-Inflectinig Ey-Tail + Simple Past کېدل - to become", + explanation: "saying that something was possible in general, in an ongoing sense ('I was able to ____', ie. 'I could do ____ any time')", + reorderWithNegative: true, + }, + { + label: "Simple Past Modal", + aspect: "perfective", + form: conj.perfective.modal.past, + formula: "Perfective Root + Non-Inflectinig Ey-Tail + Simple Past کېدل - to become", + explanation: "saying that something was possible at a certain point in time ('I was able to ____, at one particular point in time')", + past: true, + sentence: true, + advanced: true, + reorderWithNegative: true, + }, + { + label: "Imperfective hypothetical/wildcard Past Modal", + aspect: "imperfective", + form: conj.imperfective.modal.hypotheticalPast, + formula: "Imperfective Root + Non-Inflectinig Ey-Tail + ش - sh + Non-Inflectinig Ey-Tail", + explanation: "saying that something was possible in general, in an ongoing sense ('I was able to ____', ie. 'I could do ____ any time'). This 'wildcard' form can be used either to talk about hypothetical things, or to avoid worrying about verb agreement", + past: true, + sentence: true, + advanced: true, + reorderWithNegative: true, + }, + { + label: "Perfective hypothetical/wildcard Past Modal", + aspect: "perfective", + form: conj.perfective.modal.hypotheticalPast, + formula: "Perfective Root + Non-Inflectinig Ey-Tail + ش - sh + Non-Inflectinig Ey-Tail", + explanation: "saying that something was possible at a certain point in time ('I was able to ____, at one particular point in time'). This 'wildcard' form can be used either to talk about hypothetical things, or to avoid worrying about verb agreement", + past: true, + sentence: true, + advanced: true, + reorderWithNegative: true, + }, + ], + }, + ...conj.imperfective.imperative ? + [{ + label: "Imperfective Imperative", + aspect: "imperfective", + form: conj.imperfective.imperative, + formula: "Imperfective Stem + Imperative Ending", + explanation: "Commanding someone/people to do something repeatedly, or in general", + } as T.DisplayForm] : [], + ...conj.perfective.imperative ? + [{ + label: "Perfective Imperative", + aspect: "perfective", + form: conj.perfective.imperative, + formula: "Perfective Stem + Imperative Ending", + explanation: "Commanding someone/people to do something one time", + } as T.DisplayForm] : [], + { + label: "Perfect", + subgroup: "perfect", + sentence: true, + content: [ + { + label: "Half Perfect", + form: conj.perfect.halfPerfect, + past: true, + sentence: true, + formula: "Past participle inflected", + secondPronounNeeded: true, + explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect.", + }, + { + label: "Past Perfect", + form: conj.perfect.past, + past: true, + sentence: true, + formula: "Past participle inflected + Past Equative", + explanation: "Talking about events that had happened in the past, or had affected a past situation ('I had ____ed')", + reorderWithNegative: true, + }, + { + label: "Present Perfect", + form: conj.perfect.present, + past: true, + sentence: true, + formula: "Past participle inflected + Present Equative", + explanation: "Talking about that something happened in the past and it affects the present ('I have _____ed')", + reorderWithNegative: true, + }, + { + label: "Subjunctive/Habitual Perfect", + form: conj.perfect.subjunctive, + past: true, + sentence: true, + formula: "Past participle inflected + Subjunctive/Habitual Equative", + explanation: "Talking about something that will have happened habitually, or expressing hope, desire, or judgement about an action having happened", + reorderWithNegative: true, + }, + { + label: "Future/Presumptive Perfect", + form: conj.perfect.future, + advanced: true, + past: true, + sentence: true, + formula: "به - ba + Past participle Inflected + Future Equative", + explanation: "Talking about something that will have happened in the future, or guessing that the event will have occured presently ('I will have ____ed')", + reorderWithNegative: true, + }, + { + label: "Affirmational Perfect", + form: conj.perfect.affirmational, + advanced: true, + past: true, + sentence: true, + explanation: "Affirming that an event will have taken place ('I will have ____ed')", + formula: "به - ba + Past Participle Inflected + Past Equative", + reorderWithNegative: true, + }, + { + label: "Conterfactual/Past Subjunctive Perfect", + form: conj.perfect.pastSubjunctiveHypothetical, + advanced: true, + past: true, + sentence: true, + secondPronounNeeded: true, + explanation: "Talking about an event that would have hypothetically taken place (but didn't), or that should have taken place but didn't", + formula: "به - ba + Past Participle Inflected + Past Subjunctive / Hypothetical Equative", + reorderWithNegative: true, + }, + ], + }, + { + label: "Hypothetical/Wish", + advanced: true, + form: conj.hypothetical, + formula: "Imperfective Root + Non-Inflecting Ey-Tail", + explanation: "Talking about a hypothetical, unreal situation, or something that is wished for ('If I ____')", + past: true, + }, + { + label: "Participle", + subgroup: "participle", + advanced: true, + content: [ + { + label: "Present Participle", + form: conj.participle.present, + formula: "Short form of Ininitive Root + ونکی - oonkey", + explanation: "Making a verb into a noun or adjective, talking about a person or thing that does or experiences something. Also used to say something is about to happen. ('____ing', '____er')", + }, + { + label: "Past Participle", + form: conj.participle.past, + past: true, + formula: "Infinitive Root or Special Form + Inflecting Ey-Tail", + explanation: "Making a verb into a noun or adjective, talking about how a person or thing did or experienced something. ('____ed')", + }, + ], + }, + ...conj.passive ? + [{ + label: "Passive", + subgroup: "passive", + advanced: true, + sentence: true, + content: [ + { + label: "Passive Present", + aspect: "imperfective", + form: conj.passive.imperfective.nonImperative, + sentence: true, + passive: true, + formula: "Long Imperfective Root + Present کېدل - to become", + explanation: "Saying that something is being done or is done in general, without mentioning the subject/agent. ('I am being ____en')", + }, + { + label: "Passive Subjunctive", + aspect: "perfective", + form: conj.passive.perfective.nonImperative, + sentence: true, + passive: true, + formula: "Long Perfective Root + Subjunctive کېدل - to become", + explanation: "Saying that something should be done, or giving a purpose for something being done etc., without mentioning the subject/agent. ('Should I be ____en?', 'So that I'll be ____en')" + }, + { + label: "Passive Imperfective Future", + aspect: "imperfective", + form: conj.passive.imperfective.future, + sentence: true, + passive: true, + formula: "به - ba + Passive Present", + explanation: "Saying something will be done as a one-time event, without mentioning the subject/agent.", + }, + { + label: "Passive Perfective Future", + aspect: "perfective", + form: conj.passive.perfective.future, + sentence: true, + passive: true, + formula: "به - ba + Passive Subjunctive", + explanation: "Saying something will be done in an ongoing or repeated sense, without mentioning the subject/agent." + }, + { + label: "Passive Continuous Past", + aspect: "imperfective", + form: conj.passive.imperfective.past, + past: true, + sentence: true, + passive: true, + formula: "Long Imperfective Root + Continuous Past کېدل - to become", + explanation: "Saying that something was being done, or would be done, without mentioning the subject/agent. ('I was being ____en', 'I would be ____en')", + }, + { + label: "Passive Simple Past", + aspect: "perfective", + form: conj.passive.perfective.past, + past: true, + sentence: true, + passive: true, + formula: "Long Perfective Root + Simple Past کېدل - to become", + explanation: "Saying that was done as a one-time event, without mentioning the subject/agent. ('I was ____en')" + }, + { + label: "Passive Perfect", + subgroup: "passive perfect", + passive: true, + sentence: true, + content: [ + { + label: "Passive Half Perfect", + form: conj.passive.perfect.halfPerfect, + past: true, + sentence: true, + passive: true, + formula: "Infinitive + کېدل (to be) past participle inflected", + explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect. (Passive voice)", + }, + { + label: "Passive Past Perfect", + form: conj.passive.perfect.past, + past: true, + sentence: true, + passive: true, + formula: "Infinitive + کېدل (to be) past participle inflected + Past Equative", + explanation: "Talking about events that had happened in the past, or had affected a past situation (Passive voice) ('I had been ____ed')", + }, + { + label: "Passive Present Perfect", + form: conj.passive.perfect.present, + past: true, + sentence: true, + passive: true, + formula: "Infinitive + کېدل (to be) past participle inflected + Present Equative", + explanation: "Talking about that something happened in the past and it affects the present (Passive voice) ('I have been _____ed')", + }, + { + label: "Passive Subjunctive/Habitual Perfect", + form: conj.passive.perfect.subjunctive, + past: true, + sentence: true, + passive: true, + formula: "Infinitive + کېدل (to be) past participle inflected + Subjunctive/Habitual Equative", + }, + { + label: "Passive Future/Presumptive Perfect", + form: conj.passive.perfect.future, + advanced: true, + past: true, + sentence: true, + passive: true, + formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Future Equative", + explanation: "Talking about something that will have happened in the future, or guessing that the event will have occured presently (Passive voice) ('I will have been ____ed')", + }, + { + label: "Passive Affirmational Perfect", + form: conj.passive.perfect.affirmational, + advanced: true, + past: true, + sentence: true, + passive: true, + explanation: "Affirming that an event will have taken place (Passive voice) ('I will have been ____ed')", + formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Equative" + }, + { + label: "Passive Past Subjunctive / Hypothetical Perfect", + form: conj.passive.perfect.pastSubjunctiveHypothetical, + advanced: true, + past: true, + sentence: true, + passive: true, + explanation: "Talking about an event that would have hypothetically taken place, or that should have taken place (Passive voice) ('I would have been ____ed')", + formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Subjunctive / Hypothetical Equative" + }, + ], + }, + ] + } as T.DisplayFormSubgroup] + : [], + ]; + const initialFilter = filterFunc + ? formFilter(forms, filterFunc) + : forms; + return mode === "chart" + ? initialFilter + : formMap( + formFilter(initialFilter, (f) => f.sentence), + makeSentence, + conj.info, + subject, + object, + negative, + ); +} diff --git a/src/lib/convert-spelling.test.ts b/src/lib/convert-spelling.test.ts new file mode 100644 index 0000000..12061e9 --- /dev/null +++ b/src/lib/convert-spelling.test.ts @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + convertAfToPkSpelling, + convertPkToAfSpelling, +} from "./convert-spelling"; + +const pairs = [ + ["سړی", "سړے"], + ["موسیٰ", "موسیٰ"], + ["فرمايي", "فرمائی"], + ["چای", "چائ"], + ["زوی", "زوئ"], + ["ښويېدل", "ښوئېدل"], + ["ويي", "وئی"], + ["دوستي", "دوستی"], + ["هييت", "هييت"], + ["ښيي", "ښيی"], + ["ستاينه", "ستائينه"], + ["فرمايل", "فرمائيل"], + ["ضمائر", "ضمائر"], +]; + +pairs.forEach((pair) => { + test(`${pair[0]} should be converted to ${pair[1]} in Pakistani spelling`, () => { + const converted = convertAfToPkSpelling(pair[0]); + expect(converted).toBe(pair[1]); + }); + + test(`${pair[1]} should be converted to ${pair[0]} in Afghan spelling`, () => { + const converted = convertPkToAfSpelling(pair[1]); + expect(converted).toBe(pair[0]); + }); +}); diff --git a/src/lib/convert-spelling.ts b/src/lib/convert-spelling.ts new file mode 100644 index 0000000..df75218 --- /dev/null +++ b/src/lib/convert-spelling.ts @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +export function convertAfToPkSpelling(input: string): string { + const converted = input + .replace(/ای(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ائ") + .replace(/وی(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وئ") + .replace(/ی(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ے") + .replace(/ي(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ی") + .replace(/(?:ای|اي)(?=ي|ی|ې)/g, "ائ") + .replace(/(?:وی|وي)(?=ي|ی|ې)/g, "وئ") + .replace(/(?:ای|اي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ائي") + .replace(/(?:وی|وي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وئي"); + return converted; +} + +export function convertPkToAfSpelling(input: string): string { + const converted = input + .replace(/ی(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ي") + .replace(/ے(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ی") + .replace(/ائ(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ای") + .replace(/وئ(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وی") + .replace(/(?:ائی|ائي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "اي") + .replace(/(?:وئی|وئي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وي") + .replace(/ائ(?=ي|ی|ې)/g, "اي") + .replace(/وئ(?=ي|ی|ې)/g, "وي"); + return converted; +} diff --git a/src/lib/default-text-options.ts b/src/lib/default-text-options.ts new file mode 100644 index 0000000..bb60220 --- /dev/null +++ b/src/lib/default-text-options.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { TextOptions } from "../types"; + +const defualtTextOptions: TextOptions = { + pTextSize: "normal", + spelling: "Afghan", + diacritics: false, + dialect: "standard", + phonetics: "lingdocs", +} + +export default defualtTextOptions; \ No newline at end of file diff --git a/src/lib/dyn-comp-aux-verbs.ts b/src/lib/dyn-comp-aux-verbs.ts new file mode 100644 index 0000000..088a2b5 --- /dev/null +++ b/src/lib/dyn-comp-aux-verbs.ts @@ -0,0 +1,407 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import * as T from "../types"; + +// TODO: Automatice syncing of aux verbs from dictionary + +export const dynamicAuxVerbs: Array< + { + entry: T.DictionaryEntry, + complement?: T.DictionaryEntry, + } +> = [ + { + entry: {"i":10058,"ts":1527812752,"p":"کول","f":"kawul","e":"to do (an action or activity)","c":"v. trans. irreg. dyn. aux.","ssp":"وکړ","ssf":"óokR","prp":"وکړل","prf":"óokRul","pprtp":"کړی","pprtf":"kúRey","diacExcept":true}, + }, + { + entry: {"i":10122,"ts":1527812754,"p":"کېدل","f":"kedul","e":"to happen, occur","c":"v. intrans. irreg. aux. dyn.","ssp":"وش","ssf":"óosh","prp":"وشول","prf":"óoshwul","pprtp":"شوی","pprtf":"shúwey","diacExcept":true}, + }, + { + entry: { + ts:1527813914, + p:"ورکول", + f:"wărkawul", + e:"to give (to him, her, them, others)", + c: "v. trans.", + i:12350, + }, + }, + { + entry: { + ts: 1527812157, + p: "تېرول", + f: "terawul", + e: "to pass (time), to take across, to pass, endure (difficulties)", + c: "v. stat. comp. trans.", + l: 1527813139, + i: 3459, + }, + complement: {"i":3774,"ts":1527813139,"p":"تېر","f":"ter","e":"last, past, previous, passed, gone over","c":"adj."}, + }, + { + entry: { + ts: 1527815399, + p: "وهل", + f: "wahul", + e: "to hit", + c: "v. trans.", + i: 12183, + tppp: "واهه", + tppf: "waahu", + }, + }, + { + entry: { + ts: 1527817026, + p: "کښل", + f: "kxul", + e: "to drag, pull, take out, draw, get", + c: "v. trans.", + i: 8862, + }, + }, + { + entry: { + ts: 1527814084, + p: "لګول", + f: "lagawul", + e: "to touch, join, use, take, place", + c: "v. trans.", + i: 9794, + }, + }, + { + entry: { + ts: 1527814084, + p: "لګول", + f: "lagawul", + e: "to touch, join, use, take, place", + c: "v. trans.", + i: 9794, + } + }, + { + entry: { + ts: 1527817013, + p: "ویل", + f: "wayl", + e: "to say, to tell", + c: "v. trans. indir.", + i: 12229, + }, + }, + { + entry: { + ts: 1527815396, + p: "وایل", + f: "waayul", + e: "to say, to tell", + c: "v. trans. indir.", + i: 11929, + }, + }, + { + entry: { + ts: 1527812447, + p: "اخستل", + f: "akhustul", + e: "to take, buy, purchase, receive; to shave, cut with scissors", + c: "v. trans.", + i: 251, + psp: "اخل", + psf: "akhl", + }, + }, + { + entry: { + ts: 1527817298, + p: "اخیستل", + f: "akheestul", + e: "to take, buy, purchase, receive; to shave, cut with scissors", + c: "v. trans.", + i: 266, + }, + }, + { + entry: { + ts: 1527814617, + p: "نیول", + f: "neewul", + e: "to catch, grab, take, arrest; bear (fruit)", + c: "v. trans. irreg.", + i: 11880, + psp: "نیس", + psf: "nees", + }, + }, + { + entry: { + ts: 1527811872, + p: "اچول", + f: "achawul", + e: "to pour, drop, throw, put on", + c: "v. trans.", + i: 194, + }, + }, + { + entry: { + ts: 1527812790, + p: "خوړل", + f: "khoRul", + e: "to eat, to bite", + c: "v. trans.", + i: 4769, + psp: "خور", + psf: "khor", + tppp: "خوړ", + tppf: "khoR", + }, + }, + { + entry: { + ts: 1527811868, + p: "غښتل", + f: "ghuxtul", + e: "to twist, curl, roll up, wrap up", + c: "v. trans.", + i: 7958, + }, + }, + { + entry: { + ts: 1527816127, + p: "اړول", + f: "aRawul", + e: "to turn over, flip over; convert, change; to move over to, establish oneself in a new spot; divert, turn away, hijack; oblige, force", + c: "v. trans.", + i: 389, + }, + }, + { + entry: { + ts: 1527812868, + p: "لرل", + f: "larul", + e: "to have, possess", + c: "v. trans.", + i: 9707, + tppp: "لاره", + tppf: "laaru", + }, + }, + { + entry: { + ts: 1527813572, + p: "رسول", + f: "rasawul", + e: "to deliver, to make arrive, provide, send, supply, bring to,", + c: "v. trans.", + i: 5897, + }, + }, + { + entry: { + ts: 1581619940636, + p: "باسل", + f: "baasul", + e: "to take out, extract, pull out, tear out", + c: "v. trans.", + i: 1115, + }, + }, + { + entry: { + ts: 1527816146, + p: "ایستل", + f: "eestul", + e: "to throw out, discard, chuck, toss; to extract, to take out", + c: "v. trans.", + i: 1025, + psp: "باس", + psf: "baas", + }, + }, + { + entry: { + ts: 1527818123, + p: "څنډل", + f: "tsanDúl", + e: "to shake out, shake off, brush aside", + c: "v. trans.", + i: 4975, + tppp: "څانډ", + tppf: "tsaanD", + }, + }, + { + entry: { + ts: 1527814862, + p: "وژل", + f: "wajzul", + e: "to kill, slaughter", + c: "v. trans. irreg.", + i: 12071, + psp: "وژن", + psf: "wajzn", + tppp: "واژه", + tppf: "waajzu", + }, + }, + { + entry: { + ts: 1527813019, + p: "ګرول", + f: "grawul", + e: "to scratch, scrape", + c: "v. trans.", + i: 9370, + }, + }, + { + entry: { + ts: 1527818260, + p: "بادول", + f: "baadawúl", + e: "to winnow, toss, throw to the wind, squander", + c: "v. stat. comp. trans.", + l: 1527816345, + i: 1088, + }, + complement: { + ts: 1527816345, + p: "باد", + f: "baad", + e: "wind, air; swelling, rheumitism", + c: "n. m.", + i: 1076, + }, + }, + { + entry: { + ts: 1527815343, + p: "تېرېدل", + f: "teredul", + e: "to pass, go across, go by", + c: "v. stat. comp. intrans.", + l: 1527813139, + i: 3461, + }, + complement: { + ts: 1527813139, + p: "تېر", + f: "ter", + e: "last, past, previous, passed, gone over", + c: "adj.", + i: 3449, + }, + }, + { + entry: { + ts: 1571859113828, + p: "پخول", + f: "pukhawul", + e: "to cook, prepare, to cause to ripen", + c: "v. stat. comp. trans.", + l: 1574867531681, + i: 2011, + }, + complement: { + ts: 1574867531681, + p: "پوخ", + f: "pokh", + e: "mature, ripe, ready, cooked, able, skillful, experienced, tried, tested, true", + c: "adj. irreg.", + i: 2321, + infap: "پاخه", + infaf: "paakhu", + infbp: "پخ", + infbf: "pakh", + }, + }, + { + entry: { + ts: 1527817706, + p: "ټکول", + f: "Takawul", + e: "to knock, tap", + c: "v. trans.", + i: 3568, + }, + }, + { + entry: { + ts: 1527812869, + p: "لټول", + f: "luTawul", + e: "to search, seek", + c: "v. trans.", + i: 9686, + }, + }, + { + entry: { + ts: 1574784362578, + p: "ډنګول", + f: "Dangawul", + e: "to make sound, to make ring out, to meat to make a sound (like a symbal, pan, etc.)", + c: "v. trans.", + i: 5653, + }, + }, + { + entry: { + ts: 1527811289, + p: "کېنول", + f: "kenawul", + e: "to seat, to make or have someone sit down", + c: "v. trans.", + i: 9240, + noOo: true, + }, + }, + { + entry: { + ts: 1527812873, + p: "لوستل", + f: "lwustul", + e: "to read, study", + c: "v. trans. irreg.", + i: 10163, + psp: "لول", + psf: "lwul", + }, + }, + { + entry: { + i:4362, + ts:1527814586, + p:"چلول", + f:"chalawul", + e:"to drive, operate, handle, put forward, circulate", + c:"v. trans.", + }, + }, + { + entry: {"i":6731,"ts":1527815240,"p":"ساتل","f":"saatul","e":"to keep, protect, watch over; to hold","c":"v. trans."}, + }, + { + entry: {"i":11782,"ts":1527814053,"p":"موندل","f":"moondúl","e":"to find, acquire, discover, get","c":"v. trans. irreg.","psp":"موم","psf":"moom"}, + }, + { + entry: {"i":4212,"ts":1527812712,"p":"جوړول","f":"joRawul","e":"to make, form, build, mend","l":1527812711,"c":"v. stat. comp. trans."}, + complement: {"i":4206,"ts":1527812711,"p":"جوړ","f":"joR","e":"well, healthy, whole, made","c":"adj."}, + }, + { + entry: {"i":13869,"ts":1527816865,"p":"وړل","f":"wuRúl, oRúl, wRul","e":"to take, carry, bear, move (inanimate objects); to win, earn (subjunctive یوسي - yósee or ویسي - wéesee, simple past یو یې وړلو - yo ye wRulo)","separationAtP":2,"separationAtF":2,"c":"v. trans. irreg.","ssp":"یوس","ssf":"yos","prp":"یوړل","prf":"yóRul","noOo":true,"diacExcept":true}, + }, + { + entry: {"i":6503,"ts":1527815214,"p":"راوړل","f":"raawRúl","e":"to bring, deliver (inanimate objects)","separationAtP":2,"separationAtF":3,"c":"v. trans. irreg.","noOo":true}, + }, +]; diff --git a/src/lib/fields.ts b/src/lib/fields.ts new file mode 100644 index 0000000..b026313 --- /dev/null +++ b/src/lib/fields.ts @@ -0,0 +1,11 @@ +import * as T from "../types"; + +export const dictionaryEntryTextFields: T.DictionaryEntryTextField[] = [ + "p", "f", "e", "c", "infap", "infaf", "infbp", "infbf", "app", "apf", "ppp", "ppf", "psp", "psf", "ssp", "ssf", "prp", "prf", "pprtp", "pprtf", "tppp", "tppf", +]; +export const dictionaryEntryBooleanFields: T.DictionaryEntryBooleanField[] = [ + "noInf", "shortIntrans", "noOo", "sepOo", "diacExcept", +] +export const dictionaryEntryNumberFields: T.DictionaryEntryNumberField[] = [ + "ts", "i", "l", "separationAtP", "separationAtF", +]; \ No newline at end of file diff --git a/src/lib/grammar-units.ts b/src/lib/grammar-units.ts new file mode 100644 index 0000000..3e23377 --- /dev/null +++ b/src/lib/grammar-units.ts @@ -0,0 +1,617 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { kawulStat } from "./irregular-conjugations"; +import * as T from "../types"; + +export const presentEndings: T.VerbBlock = [ + [ + [{ + p: "م", + f: "um" + }], + [{ + p: "و", + f: "oo" + }], + ], + [ + [{ + p: "م", + f: "um" + }], + [{ + p: "و", + f: "oo" + }], + ], + [ + [{ + p: "ې", + f: "e" + }], + [{ + p: "ئ", + f: "eyy" + }], + ], + [ + [{ + p: "ې", + f: "e" + }], + [{ + p: "ئ", + f: "eyy" + }], + ], + [ + [{ + p: "ي", + f: "ee" + }], + [{ + p: "ي", + f: "ee" + }], + ], + [ + [{ + p: "ي", + f: "ee" + }], + [{ + p: "ي", + f: "ee" + }], + ], +]; + +export const pastEndings: T.VerbBlock = [ + [ + [{ + p: "م", + f: "um" + }], + [{ + p: "و", + f: "oo" + }] + ], + [ + [{ + p: "م", + f: "um" + }], + [{ + p: "و", + f: "oo" + }] + ], + [ + [{ + p: "ې", + f: "e" + }], + [{ + p: "ئ", + f: "eyy" + }] + ], + [ + [{ + p: "ې", + f: "e" + }], + [{ + p: "ئ", + f: "eyy" + }] + ], + [ + [{ + p: "ه", + f: "u" + }, + { + p: "و", + f: "o" + }, + ], + [{ + p: "ل", + f: "ul" + }], + ], + [ + [{ + p: "ه", + f: "a" + }], + [{ + p: "ې", + f: "e" + }] + ], +]; + +// TODO: MAKE THIS VARIABLE FOR DIALECTS! + +export const aayTail: T.PsString = { p: "ی", f: "ey" }; + +export const subjPastEquative: T.PsString = { + p: "و" + aayTail.p, + f: "w" + aayTail.f, +}; + +export const equativeEndings: { + past: T.LengthOptions, + present: T.VerbBlock, + subjunctive: T.VerbBlock, + hypothetical: T.VerbBlock, +} = { + past: { + short: [ + [ + [{ + p: "وم", + f: "wum" + }], + [{ + p: "وو", + f: "woo" + }] + ], + [ + [{ + p: "وم", + f: "wum" + }], + [{ + p: "وو", + f: "woo" + }] + ], + [ + [{ + p: "وې", + f: "we" + }], + [{ + p: "وئ", + f: "weyy" + }] + ], + [ + [{ + p: "وې", + f: "we" + }], + [{ + p: "وئ", + f: "weyy" + }] + ], + [ + [{ + p: "و", + f: "wo" + }], + [{ + p: "ول", + f: "wul", + }, { + p: "وو", + f: "woo" + }] + ], + [ + [{ + p: "وه", + f: "wa" + }], + [{ + p: "وې", + f: "we" + }] + ], + ], + long: [ + [ + [{ + p: "ولم", + f: "wulum" + }], + [{ + p: "ولو", + f: "wuloo" + }] + ], + [ + [{ + p: "ولم", + f: "wulum" + }], + [{ + p: "ولو", + f: "wuloo" + }] + ], + [ + [{ + p: "ولې", + f: "wule" + }], + [{ + p: "ولئ", + f: "wuleyy" + }] + ], + [ + [{ + p: "ولې", + f: "wule" + }], + [{ + p: "ولئ", + f: "wuleyy" + }] + ], + [ + [{ + p: "ولو", + f: "wulo" + }], + [{ + p: "ول", + f: "wul", + }, + { + p: "ولو", + f: "wuloo" + }] + ], + [ + [{ + p: "وله", + f: "wula" + }], + [{ + p: "ولې", + f: "wule" + }] + ], + ], + }, + present: [ + [ + [{ + p: "یم", + f: "yum" + }], + [{ + p: "یو", + f: "yoo" + }] + ], + [ + [{ + p: "یم", + f: "yum" + }], + [{ + p: "یو", + f: "yoo" + }] + ], + [ + [{ + p: "یې", + f: "ye" + }], + [{ + p: "یئ", + f: "yeyy" + }] + ], + [ + [{ + p: "یې", + f: "ye" + }], + [{ + p: "یئ", + f: "yeyy" + }] + ], + [ + [{ + p: "دی", + f: "dey" + }], + [{ + p: "دي", + f: "dee" + }] + ], + [ + [{ + p: "ده", + f: "da" + }], + [{ + p: "دي", + f: "dee" + }] + ], + ], + subjunctive: [ + [ + [{ + p: "یم", + f: "yum" + }], + [{ + p: "یو", + f: "yoo" + }] + ], + [ + [{ + p: "یم", + f: "yum" + }], + [{ + p: "یو", + f: "yoo" + }] + ], + [ + [{ + p: "یې", + f: "ye" + }], + [{ + p: "یئ", + f: "yeyy" + }] + ], + [ + [{ + p: "یې", + f: "ye" + }], + [{ + p: "یئ", + f: "yeyy" + }] + ], + [ + [{ + p: "وي", + f: "wee" + }], + [{ + p: "وي", + f: "wee" + }] + ], + [ + [{ + p: "وي", + f: "wee" + }], + [{ + p: "وي", + f: "wee" + }] + ], + ], + hypothetical: [ + [[subjPastEquative], [subjPastEquative]], + [[subjPastEquative], [subjPastEquative]], + [[subjPastEquative], [subjPastEquative]], + [[subjPastEquative], [subjPastEquative]], + [[subjPastEquative], [subjPastEquative]], + [[subjPastEquative], [subjPastEquative]], + ], +}; + +export const emptyVerbBlock: T.VerbBlock = [ + [[{p: "", f: ""}], [{p: "", f: ""}]], + [[{p: "", f: ""}], [{p: "", f: ""}]], + [[{p: "", f: ""}], [{p: "", f: ""}]], + [[{p: "", f: ""}], [{p: "", f: ""}]], + [[{p: "", f: ""}], [{p: "", f: ""}]], + [[{p: "", f: ""}], [{p: "", f: ""}]], +]; + +export const imperativeEndings: T.ImperativeBlock = [ + // masc 2nd pers + [ + [{ p: "ه", f: "a" }], // singular + [{ p: "ئ", f: "eyy" }], // plural + ], + // fem 2nds pers + [ + [{ p: "ه", f: "a" }], // singular + [{ p: "ئ", f: "eyy" }], // plural + ], +]; + +export const ooPrefix: T.PsString = { p: "و", f: "oo" }; + +export const baParticle: T.PsString = { p: "به", f: "ba" }; + +export const presentParticipleSuffix: T.PsString = { p: "ونکی", f: "oonkey" }; + +const adjEndingsBlock = [ + // singular plural + [ + [{ + p: `ی`, + f: `ey` + }], + [{ + p: `ي`, + f: `ee` + }] + ], // male + [ + [{ + p: `ې`, + f: `e` + }], + [{ + p: `ې`, + f: `e` + }] + ], // female +]; + +export const adjectiveEndings = [...adjEndingsBlock, ...adjEndingsBlock, ...adjEndingsBlock] as T.VerbBlock; + +const ksPerf = kawulStat.info.root.perfective as T.LengthOptions; + +export const passiveStativeBridge = [ + // TODO: SHORT AND LONG HERE?? + { + short: ksPerf.long, + long: ksPerf.long, + }, + { + short: { + p: ksPerf.short.p + aayTail.p, + f: ksPerf.short.f + aayTail.f, + }, + long: { + p: ksPerf.long.p + aayTail.p, + f: ksPerf.long.f + aayTail.f, + }, + }, +]; + +const basePlainPronouns = [ + [[{ p: "زه", f: "zu" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]], + [[{ p: "زه", f: "zu" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]], + [[{ p: "ته", f: "tu" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]], + [[{ p: "ته", f: "tu" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]], +]; + +const baseInflectedPronouns = [ + [[{ p: "ما", f: "maa" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]], + [[{ p: "ما", f: "maa" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]], + [[{ p: "تا", f: "taa" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]], + [[{ p: "تا", f: "taa" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]], +]; + + const plainPronounsFar = [ + ...basePlainPronouns, + [[{ p: "هغه", f: "haghá" }], [{ p: "هغوي", f: "haghwée" }]], + [[{ p: "هغه", f: "haghá" }], [{ p: "هغوي", f: "haghwée" }]], +] as T.VerbBlock; + +const plainPronounsNear = [ + ...basePlainPronouns, + [[{ p: "دی", f: "dey" }], [{ p: "دوي", f: "dwee" }]], + [[{ p: "دا", f: "daa" }], [{ p: "دوي", f: "dwee" }]], +] as T.VerbBlock; + +const inflectedPronounsFar = [ + ...baseInflectedPronouns, + [[{ p: "هغهٔ", f: "haghú" }], [{ p: "هغوي", f: "haghwée" }]], + [[{ p: "هغې", f: "haghé" }], [{ p: "هغوي", f: "haghwée" }]], +] as T.VerbBlock; + +const inflectedPronounsNear = [ + ...baseInflectedPronouns, + [[{ p: "دهٔ", f: "du" }], [{ p: "دوي", f: "dwee" }]], + [[{ p: "دې", f: "de" }], [{ p: "دوي", f: "dwee" }]], +] as T.VerbBlock; + +const miniPronouns: T.VerbBlock = [ + [[{ p: "مې", f: "me" }], [{ p: "مو", f: "mU" }]], + [[{ p: "مې", f: "me" }], [{ p: "مو", f: "mU" }]], + [[{ p: "دې", f: "de" }], [{ p: "مو", f: "mU" }]], + [[{ p: "دې", f: "de" }], [{ p: "مو", f: "mU" }]], + [[{ p: "یې", f: "ye" }], [{ p: "یې", f: "ye" }]], + [[{ p: "یې", f: "ye" }], [{ p: "یې", f: "ye" }]], +]; + +export const pronouns: { + far: { + inflected: T.VerbBlock; + plain: T.VerbBlock; + }; + near: { + plain: T.VerbBlock; + inflected: T.VerbBlock; + }; + mini: T.VerbBlock; + } = { + far: { + plain: plainPronounsFar, + inflected: inflectedPronounsFar, + }, + near: { + plain: plainPronounsNear, + inflected: inflectedPronounsNear, + }, + mini: miniPronouns, +}; + +export const persons = [ + { + label: { subject: "I (m.)", object: "me (m.)" }, + person: 0, + }, + { + label: { subject: "I (f.)", object: "me (f.)" }, + person: 1, + }, + { + label: { subject: "You (m.)", object: "you (m.)" }, + person: 2, + }, + { + label: { subject: "You (f.)", object: "you (f.)" }, + person: 3, + }, + { + label: { subject: "He/it (m.)", object: "him/it (m.)" }, + person: 4, + }, + { + label: { subject: "She/it (f.)", object: "her/it (f.)" }, + person: 5, + }, + { + label: { subject: "We (m. pl.)", object: "us (m. pl.)" }, + person: 6, + }, + { + label: { subject: "We (f. pl.)", object: "us (f. pl.)" }, + person: 7, + }, + { + label: { subject: "You (m. pl.)", object: "you (m. pl.)" }, + person: 8, + }, + { + label: { subject: "You (f. pl.)", object: "you (f. pl.)" }, + person: 9, + }, + { + label: { subject: "They (m. pl.)", object: "them (m. pl.)" }, + person: 10, + }, + { + label: { subject: "They (f. pl.)", object: "them (f. pl.)" }, + person: 11, + }, +]; \ No newline at end of file diff --git a/src/lib/irregular-conjugations.ts b/src/lib/irregular-conjugations.ts new file mode 100644 index 0000000..3d5839f --- /dev/null +++ b/src/lib/irregular-conjugations.ts @@ -0,0 +1,2683 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import * as T from "../types"; + +const kedulStatModal: T.ModalContent = { + nonImperative: { + long: [ + [[{ p: "کېدلی شم", f: "kedúley shum" }], [{ p: "کېدلی شو", f: "kedúley shoo" }]], + [[{ p: "کېدلی شم", f: "kedúley shum" }], [{ p: "کېدلی شو", f: "kedúley shoo" }]], + [[{ p: "کېدلی شې", f: "kedúley she" }], [{ p: "کېدلی شئ", f: "kedúley sheyy" }]], + [[{ p: "کېدلی شې", f: "kedúley she" }], [{ p: "کېدلی شئ", f: "kedúley sheyy" }]], + [[{ p: "کېدلی شي", f: "kedúley shee" }], [{ p: "کېدلی شي", f: "kedúley shee" }]], + [[{ p: "کېدلی شي", f: "kedúley shee" }], [{ p: "کېدلی شي", f: "kedúley shee" }]], + ], + short: [ + [[{ p: "کېدی شم", f: "kedéy shum" }], [{ p: "کېدی شو", f: "kedéy shoo" }]], + [[{ p: "کېدی شم", f: "kedéy shum" }], [{ p: "کېدی شو", f: "kedéy shoo" }]], + [[{ p: "کېدی شې", f: "kedéy she" }], [{ p: "کېدی شئ", f: "kedéy sheyy" }]], + [[{ p: "کېدی شې", f: "kedéy she" }], [{ p: "کېدی شئ", f: "kedéy sheyy" }]], + [[{ p: "کېدی شي", f: "kedéy shee" }], [{ p: "کېدی شي", f: "kedéy shee" }]], + [[{ p: "کېدی شي", f: "kedéy shee" }], [{ p: "کېدی شي", f: "kedéy shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به کېدلی شم", f: "ba kedúley shum" }], [{ p: "به کېدلی شو", f: "ba kedúley shoo" }]], + [[{ p: "به کېدلی شم", f: "ba kedúley shum" }], [{ p: "به کېدلی شو", f: "ba kedúley shoo" }]], + [[{ p: "به کېدلی شې", f: "ba kedúley she" }], [{ p: "به کېدلی شئ", f: "ba kedúley sheyy" }]], + [[{ p: "به کېدلی شې", f: "ba kedúley she" }], [{ p: "به کېدلی شئ", f: "ba kedúley sheyy" }]], + [[{ p: "به کېدلی شي", f: "ba kedúley shee" }], [{ p: "به کېدلی شي", f: "ba kedúley shee" }]], + [[{ p: "به کېدلی شي", f: "ba kedúley shee" }], [{ p: "به کېدلی شي", f: "ba kedúley shee" }]], + ], + short: [ + [[{ p: "به کېدی شم", f: "ba kedéy shum" }], [{ p: "به کېدی شو", f: "ba kedéy shoo" }]], + [[{ p: "به کېدی شم", f: "ba kedéy shum" }], [{ p: "به کېدی شو", f: "ba kedéy shoo" }]], + [[{ p: "به کېدی شې", f: "ba kedéy she" }], [{ p: "به کېدی شئ", f: "ba kedéy sheyy" }]], + [[{ p: "به کېدی شې", f: "ba kedéy she" }], [{ p: "به کېدی شئ", f: "ba kedéy sheyy" }]], + [[{ p: "به کېدی شي", f: "ba kedéy shee" }], [{ p: "به کېدی شي", f: "ba kedéy shee" }]], + [[{ p: "به کېدی شي", f: "ba kedéy shee" }], [{ p: "به کېدی شي", f: "ba kedéy shee" }]], + ], + }, + past: { + long: [ + [[{ p: "کېدلی شوم", f: "kedúley shwum" }], [{ p: "کېدلی شو", f: "kedúley shoo" }]], + [[{ p: "کېدلی شوم", f: "kedúley shwum" }], [{ p: "کېدلی شو", f: "kedúley shoo" }]], + [[{ p: "کېدلی شوې", f: "kedúley shwe" }], [{ p: "کېدلی شوئ", f: "kedúley shweyy" }]], + [[{ p: "کېدلی شوې", f: "kedúley shwe" }], [{ p: "کېدلی شوئ", f: "kedúley shweyy" }]], + [[{ p: "کېدلی شو", f: "kedúley sho" }], [{ p: "کېدلی شول", f: "kedúley shwul" }, { p: "کېدلی شو", f: "kedúley shoo" }]], + [[{ p: "کېدلی شوه", f: "kedúley shwa" }], [{ p: "کېدلی شولې", f: "kedúley shwule" }, { p: "کېدلی شوې", f: "kedúley shwe" }]], + ], + short: [ + [[{ p: "کېدی شوم", f: "kedéy shwum" }], [{ p: "کېدی شو", f: "kedéy shoo" }]], + [[{ p: "کېدی شوم", f: "kedéy shwum" }], [{ p: "کېدی شو", f: "kedéy shoo" }]], + [[{ p: "کېدی شوې", f: "kedéy shwe" }], [{ p: "کېدی شوئ", f: "kedéy shweyy" }]], + [[{ p: "کېدی شوې", f: "kedéy shwe" }], [{ p: "کېدی شوئ", f: "kedéy shweyy" }]], + [[{ p: "کېدی شو", f: "kedéy sho" }], [{ p: "کېدی شول", f: "kedéy shwul" }, { p: "کېدی شو", f: "kedéy shoo" }]], + [[{ p: "کېدی شوه", f: "kedéy shwa" }], [{ p: "کېدی شولې", f: "kedéy shwule" }, { p: "کېدی شوې", f: "kedéy shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "کېدلی شوی", f: "kedúley shwey" }], [{ p: "کېدلی شوی", f: "kedúley shwey" }]], + [[{ p: "کېدلی شوی", f: "kedúley shwey" }], [{ p: "کېدلی شوی", f: "kedúley shwey" }]], + [[{ p: "کېدلی شوی", f: "kedúley shwey" }], [{ p: "کېدلی شوی", f: "kedúley shwey" }]], + [[{ p: "کېدلی شوی", f: "kedúley shwey" }], [{ p: "کېدلی شوی", f: "kedúley shwey" }]], + [[{ p: "کېدلی شوی", f: "kedúley shwey" }], [{ p: "کېدلی شوی", f: "kedúley shwey" }]], + [[{ p: "کېدلی شوی", f: "kedúley shwey" }], [{ p: "کېدلی شوی", f: "kedúley shwey" }]], + ], + short: [ + [[{ p: "کېدی شوی", f: "kedéy shwey" }], [{ p: "کېدی شوی", f: "kedéy shwey" }]], + [[{ p: "کېدی شوی", f: "kedéy shwey" }], [{ p: "کېدی شوی", f: "kedéy shwey" }]], + [[{ p: "کېدی شوی", f: "kedéy shwey" }], [{ p: "کېدی شوی", f: "kedéy shwey" }]], + [[{ p: "کېدی شوی", f: "kedéy shwey" }], [{ p: "کېدی شوی", f: "kedéy shwey" }]], + [[{ p: "کېدی شوی", f: "kedéy shwey" }], [{ p: "کېدی شوی", f: "kedéy shwey" }]], + [[{ p: "کېدی شوی", f: "kedéy shwey" }], [{ p: "کېدی شوی", f: "kedéy shwey" }]], + ], + }, +}; + +export const kedulStat: T.VerbConjugation = { + info: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + imperfective: { p: "کېږ", f: "kéG" }, + perfective: { p: "ش", f: "sh" }, + }, + root: { + imperfective: { + long: { p: "کېدل", f: "kedúl" }, + short: { p: "کېد", f: "ked" }, + }, + perfective: { + long: { p: "شول", f: "shwul" }, + short: { p: "شو", f: "shw" }, + }, + }, + participle: { + present: { p: "کېدونکی", f: "kedóonkey" }, + past: { p: "شوی", f: "shúwey" }, + }, + }, + imperfective: { + nonImperative: [ + [[{p: "کېږم", f: "keGum"}], [{p: "کېږو", f: "keGoo"}]], + [[{p: "کېږم", f: "keGum"}], [{p: "کېږو", f: "keGoo"}]], + [[{p: "کېږې", f: "keGe"}], [{p: "کېږئ", f: "keGeyy"}]], + [[{p: "کېږې", f: "keGe"}], [{p: "کېږئ", f: "keGeyy"}]], + [[{p: "کېږي", f: "keGee"}], [{p: "کېږي", f: "keGee"}]], + [[{p: "کېږي", f: "keGee"}], [{p: "کېږي", f: "keGee"}]], + ], + future: [ + [[{p: "به کېږم", f: "ba keGum"}], [{p: "به کېږو", f: "ba keGoo"}]], + [[{p: "به کېږم", f: "ba keGum"}], [{p: "به کېږو", f: "ba keGoo"}]], + [[{p: "به کېږې", f: "ba keGe"}], [{p: "به کېږئ", f: "ba keGeyy"}]], + [[{p: "به کېږې", f: "ba keGe"}], [{p: "به کېږئ", f: "ba keGeyy"}]], + [[{p: "به کېږي", f: "ba keGee"}], [{p: "به کېږي", f: "ba keGee"}]], + [[{p: "به کېږي", f: "ba keGee"}], [{p: "به کېږي", f: "ba keGee"}]], + ], + imperative: [ + [[{ p: "کېږه", f: "keGa" }], [{ p: "کېږئ", f: "keGeyy" }]], + [[{ p: "کېږه", f: "keGa" }], [{ p: "کېږئ", f: "keGeyy" }]] + ], + past: { + short: [ + [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], + [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], + [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], + [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], + [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]], + [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]], + ], + long: [ + [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]], + [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]], + [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]], + [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]], + [[{p: "کېدله", f: "kedulu"}, {p: "کېدلو", f: "kedulo"}], [{p: "کېدل", f: "kedul"}]], + [[{p: "کېدله", f: "kedula"}], [{p: "کېدلې", f: "kedule"}]], + ], + }, + modal: kedulStatModal, + }, + perfective: { + nonImperative: [ + [[{p: "شم", f: "shum"}], [{p: "شو", f: "shoo"}]], + [[{p: "شم", f: "shum"}], [{p: "شو", f: "shoo"}]], + [[{p: "شې", f: "she"}], [{p: "شئ", f: "sheyy"}]], + [[{p: "شې", f: "she"}], [{p: "شئ", f: "sheyy"}]], + [[{p: "شي", f: "shee"}], [{p: "شي", f: "shee"}]], + [[{p: "شي", f: "shee"}], [{p: "شي", f: "shee"}]], + ], + future: [ + [[{p: "به شم", f: "ba shum"}], [{p: "به شو", f: "ba shoo"}]], + [[{p: "به شم", f: "ba shum"}], [{p: "به شو", f: "ba shoo"}]], + [[{p: "به شې", f: "ba she"}], [{p: "به شئ", f: "ba sheyy"}]], + [[{p: "به شې", f: "ba she"}], [{p: "به شئ", f: "ba sheyy"}]], + [[{p: "به شي", f: "ba shee"}], [{p: "به شي", f: "ba shee"}]], + [[{p: "به شي", f: "ba shee"}], [{p: "به شي", f: "ba shee"}]], + ], + imperative: [ + [[{ p: "شه", f: "sha" }], [{ p: "شئ", f: "sheyy" }]], + [[{ p: "شه", f: "sha" }], [{ p: "شئ", f: "sheyy" }]], + ], + past: { + short: [ + [[{p: "شوم", f: "shwum"}], [{p: "شو", f: "shoo"}]], + [[{p: "شوم", f: "shwum"}], [{p: "شو", f: "shoo"}]], + [[{p: "شوې", f: "shwe"}], [{p: "شوئ", f: "shweyy"}]], + [[{p: "شوې", f: "shwe"}], [{p: "شوئ", f: "shweyy"}]], + [[{p: "شو", f: "sho"}], [{p: "شو", f: "shoo"}, {p: "شول", f: "shwul"}]], + [[{p: "شوه", f: "shwa"}], [{p: "شوې", f: "shwe"}]], + ], + long: [ + [[{p: "شولم", f: "shwulum"}], [{p: "شولو", f: "shwuloo"}]], + [[{p: "شولم", f: "shwulum"}], [{p: "شولو", f: "shwuloo"}]], + [[{p: "شولې", f: "shwule"}], [{p: "شولئ", f: "shwuleyy"}]], + [[{p: "شولې", f: "shwule"}], [{p: "شولئ", f: "shwuleyy"}]], + [[{p: "شوله", f: "shwulu"}, {p: "شولو", f: "shwulo"}], [{p: "شول", f: "shwul"}]], + [[{p: "شوله", f: "shwula"}], [{p: "شولې", f: "shwule"}]], + ], + }, + modal: kedulStatModal, + }, + hypothetical: { + short: [ + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + ], + long: [ + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + ], + }, + participle: { + past: { + masc: [ + [{ p: "شوی", f: "shúwey" }], + [{ p: "شوي", f: "shúwee" }], + [{ p: "شویو", f: "shúwiyo" }, { p: "شوو", f: "shúwo" }], + ], + fem: [ + [{ p: "شوې", f: "shúwe" }], + [{ p: "شوې", f: "shúwe" }], + [{ p: "شوو", f: "shúwo" }], + ], + }, + present: { + masc: [ + [{ p: "کېدونکی", f: "keedóonkey" }], + [{ p: "کېدونکي", f: "keedóonkee" }], + [{ p: "کېدونکیو", f: "keedóonkiyo" }, { p: "کېدونکو", f: "kedóonko" }], + ], + fem: [ + [{ p: "کېدونکې", f: "keedóonke" }], + [{ p: "کېدونکې", f: "keedóonke" }], + [{ p: "کېدونکو", f: "keedóonko" }], + ], + }, + }, + perfect: { + halfPerfect: [ + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + ], + past: [ + [[{p: "شوی وم", f: "shuwey wum"}], [{p: "شوي وو", f: "shuwee woo"}]], + [[{p: "شوې وم", f: "shuwe wum"}], [{p: "شوې وو", f: "shuwe woo"}]], + [[{p: "شوی وې", f: "shuwey we"}], [{p: "شوي وئ", f: "shuwee weyy"}]], + [[{p: "شوې وې", f: "shuwe we"}], [{p: "شوې وئ", f: "shuwe weyy"}]], + [[{p: "شوی و", f: "shuwey wo"}], [{p: "شوي وو", f: "shuwee woo"}]], + [[{p: "شوې وه", f: "shuwe wa"}], [{p: "شوې وې", f: "shuwe we"}]], + ], + present: [ + [[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]], + [[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]], + [[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]], + [[{p: "شوې یې", f: "shuwe ye"}], [{p: "شوې یئ", f: "shuwe yeyy"}]], + [[{p: "شوی دی", f: "shuwey dey"}], [{p: "شوي دي", f: "shuwee dee"}]], + [[{p: "شوې ده", f: "shuwe da"}], [{p: "شوې دي", f: "shuwe dee"}]], + ], + subjunctive: [ + [[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]], + [[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]], + [[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]], + [[{p: "شوې یې", f: "shuwe ye"}], [{p: "شوې یئ", f: "shuwe yeyy"}]], + [[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]], + [[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]], + ], + future: [ + [[{p: "به شوی یم", f: "ba shuwey yum"}], [{p: "به شوي یو", f: "ba shuwee yoo"}]], + [[{p: "به شوې یم", f: "ba shuwe yum"}], [{p: "به شوې یو", f: "ba shuwe yoo"}]], + [[{p: "به شوی یې", f: "ba shuwey ye"}], [{p: "به شوي یئ", f: "ba shuwee yeyy"}]], + [[{p: "به شوې یې", f: "ba shuwe ye"}], [{p: "به شوې یئ", f: "ba shuwe yeyy"}]], + [[{p: "به شوی وي", f: "ba shuwey wee"}], [{p: "به شوي وي", f: "ba shuwee wee"}]], + [[{p: "به شوې وي", f: "ba shuwe wee"}], [{p: "به شوې وي", f: "ba shuwe wee"}]], + ], + affirmational: [ + [[{p: "به شوی وم", f: "ba shuwey wum"}], [{p: "به شوي وو", f: "ba shuwee woo"}]], + [[{p: "به شوې وم", f: "ba shuwe wum"}], [{p: "به شوې وو", f: "ba shuwe woo"}]], + [[{p: "به شوی وې", f: "ba shuwey we"}], [{p: "به شوي وئ", f: "ba shuwee weyy"}]], + [[{p: "به شوې وې", f: "ba shuwe we"}], [{p: "به شوې وئ", f: "ba shuwe weyy"}]], + [[{p: "به شوی و", f: "ba shuwey wo"}], [{p: "به شوي وو", f: "ba shuwee woo"}]], + [[{p: "به شوې وه", f: "ba shuwe wa"}], [{p: "به شوې وې", f: "ba shuwe we"}]], + ], + pastSubjunctiveHypothetical: [ + [[{p: "به شوی وای", f: "ba shuwey waay"}], [{p: "به شوي وای", f: "ba shuwee waay"}]], + [[{p: "به شوې وای", f: "ba shuwe waay"}], [{p: "به شوې وای", f: "ba shuwe waay"}]], + [[{p: "به شوی وای", f: "ba shuwey waay"}], [{p: "به شوي وای", f: "ba shuwee waay"}]], + [[{p: "به شوې وای", f: "ba shuwe waay"}], [{p: "به شوې وای", f: "ba shuwe waay"}]], + [[{p: "به شوی وای", f: "ba shuwey waay"}], [{p: "به شوي وای", f: "ba shuwee waay"}]], + [[{p: "به شوې وای", f: "ba shuwe waay"}], [{p: "به شوې وای", f: "ba shuwe waay"}]], + ], + }, +}; + +export const kedulDyn: T.VerbConjugation = { + info: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + imperfective: { p: "کېږ", f: "kéG" }, + perfective: { p: "وش", f: "óosh" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "ش", f: "sh" }], + }, + root: { + imperfective: { + long: { p: "کېدل", f: "kedúl" }, + short: { p: "کېد", f: "ked" }, + }, + perfective: { + long: { p: "وشول", f: "óoshwul" }, + short: { p: "وشو", f: "óoshw" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "شول", f: "shwul" }], + short: [{ p: "و", f: "óo" }, { p: "شو", f: "shw" }], + }, + }, + participle: { + present: { p: "کېدونکی", f: "kedóonkey" }, + past: { p: "شوی", f: "shúwey" }, + }, + }, + imperfective: { + nonImperative: [ + [[{p: "کېږم", f: "keGum"}], [{p: "کېږو", f: "keGoo"}]], + [[{p: "کېږم", f: "keGum"}], [{p: "کېږو", f: "keGoo"}]], + [[{p: "کېږې", f: "keGe"}], [{p: "کېږئ", f: "keGeyy"}]], + [[{p: "کېږې", f: "keGe"}], [{p: "کېږئ", f: "keGeyy"}]], + [[{p: "کېږي", f: "keGee"}], [{p: "کېږي", f: "keGee"}]], + [[{p: "کېږي", f: "keGee"}], [{p: "کېږي", f: "keGee"}]], + ], + future: [ + [[{p: "به کېږم", f: "ba keGum"}], [{p: "به کېږو", f: "ba keGoo"}]], + [[{p: "به کېږم", f: "ba keGum"}], [{p: "به کېږو", f: "ba keGoo"}]], + [[{p: "به کېږې", f: "ba keGe"}], [{p: "به کېږئ", f: "ba keGeyy"}]], + [[{p: "به کېږې", f: "ba keGe"}], [{p: "به کېږئ", f: "ba keGeyy"}]], + [[{p: "به کېږي", f: "ba keGee"}], [{p: "به کېږي", f: "ba keGee"}]], + [[{p: "به کېږي", f: "ba keGee"}], [{p: "به کېږي", f: "ba keGee"}]], + ], + imperative: [ + [[{ p: "کېږه", f: "keGa" }], [{ p: "کېږئ", f: "keGeyy" }]], + [[{ p: "کېږه", f: "keGa" }], [{ p: "کېږئ", f: "keGeyy" }]] + ], + past: { + short: [ + [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], + [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], + [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], + [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], + [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]], + [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]], + ], + long: [ + [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]], + [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]], + [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]], + [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]], + [[{p: "کېدله", f: "kedulu"}, {p: "کېدلو", f: "kedulo"}], [{p: "کېدل", f: "kedul"}]], + [[{p: "کېدله", f: "kedula"}], [{p: "کېدلې", f: "kedule"}]], + ], + }, + modal: kedulStatModal, + }, + perfective: { + nonImperative: [ + [[{p: "وشم", f: "óoshum"}], [{p: "وشو", f: "óoshoo"}]], + [[{p: "وشم", f: "óoshum"}], [{p: "وشو", f: "óoshoo"}]], + [[{p: "وشې", f: "óoshe"}], [{p: "وشئ", f: "óosheyy"}]], + [[{p: "وشې", f: "óoshe"}], [{p: "وشئ", f: "óosheyy"}]], + [[{p: "وشي", f: "óoshee"}], [{p: "وشي", f: "óoshee"}]], + [[{p: "وشي", f: "óoshee"}], [{p: "وشي", f: "óoshee"}]], + ], + future: [ + [[{p: "به شم", f: "ba shum"}], [{p: "به شو", f: "ba shoo"}]], + [[{p: "به شم", f: "ba shum"}], [{p: "به شو", f: "ba shoo"}]], + [[{p: "به شې", f: "ba she"}], [{p: "به شئ", f: "ba sheyy"}]], + [[{p: "به شې", f: "ba she"}], [{p: "به شئ", f: "ba sheyy"}]], + [[{p: "به شي", f: "ba shee"}], [{p: "به شي", f: "ba shee"}]], + [[{p: "به شي", f: "ba shee"}], [{p: "به شي", f: "ba shee"}]], + ], + imperative: [ + [[{ p: "وشه", f: "óosha" }], [{ p: "وشئ", f: "óosheyy" }]], + [[{ p: "وشه", f: "óosha" }], [{ p: "وشئ", f: "óosheyy" }]], + ], + past: { + short: [ + [[{p: "وشوم", f: "óoshwum"}], [{p: "وشو", f: "óoshoo"}]], + [[{p: "وشوم", f: "óoshwum"}], [{p: "وشو", f: "óoshoo"}]], + [[{p: "وشوې", f: "óoshwe"}], [{p: "وشوئ", f: "óoshweyy"}]], + [[{p: "وشوې", f: "óoshwe"}], [{p: "وشوئ", f: "óoshweyy"}]], + [[{p: "وشو", f: "óosho"}], [{p: "وشو", f: "óoshoo"}, {p: "وشول", f: "óoshwul"}]], + [[{p: "وشوه", f: "óoshwa"}], [{p: "وشوې", f: "óoshwe"}]], + ], + long: [ + [[{p: "وشولم", f: "óoshwulum"}], [{p: "وشولو", f: "óoshwuloo"}]], + [[{p: "وشولم", f: "óoshwulum"}], [{p: "وشولو", f: "óoshwuloo"}]], + [[{p: "وشولې", f: "óoshwule"}], [{p: "وشولئ", f: "óoshwuleyy"}]], + [[{p: "وشولې", f: "óoshwule"}], [{p: "وشولئ", f: "óoshwuleyy"}]], + [[{p: "وشوله", f: "óoshwulu"}, {p: "وشولو", f: "óoshwulo"}], [{p: "وشول", f: "óoshwul"}]], + [[{p: "وشوله", f: "óoshwula"}], [{p: "وشولې", f: "óoshwule"}]], + ], + }, + modal: kedulStatModal, + }, + hypothetical: { + short: [ + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + [[{ p: "کېدی", f: "kedéy" }], [{ p: "کېدی", f: "kedéy" }]], + ], + long: [ + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + [[{ p: "کېدلی", f: "kedúley" }], [{ p: "کېدلی", f: "kedúley" }]], + ], + }, + participle: { + past: { + masc: [ + [{ p: "شوی", f: "shúwey" }], + [{ p: "شوي", f: "shúwee" }], + [{ p: "شویو", f: "shúwiyo" }, { p: "شوو", f: "shúwo" }], + ], + fem: [ + [{ p: "شوې", f: "shúwe" }], + [{ p: "شوې", f: "shúwe" }], + [{ p: "شوو", f: "shúwo" }], + ], + }, + present: { + masc: [ + [{ p: "کېدونکی", f: "keedóonkey" }], + [{ p: "کېدونکي", f: "keedóonkee" }], + [{ p: "کېدونکیو", f: "keedóonkiyo" }, { p: "کېدونکو", f: "kedóonko" }], + ], + fem: [ + [{ p: "کېدونکې", f: "keedóonke" }], + [{ p: "کېدونکې", f: "keedóonke" }], + [{ p: "کېدونکو", f: "keedóonko" }], + ], + }, + }, + perfect: { + halfPerfect: [ + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + ], + past: [ + [[{p: "شوی وم", f: "shuwey wum"}], [{p: "شوي وو", f: "shuwee woo"}]], + [[{p: "شوې وم", f: "shuwe wum"}], [{p: "شوې وو", f: "shuwe woo"}]], + [[{p: "شوی وې", f: "shuwey we"}], [{p: "شوي وئ", f: "shuwee weyy"}]], + [[{p: "شوې وې", f: "shuwe we"}], [{p: "شوې وئ", f: "shuwe weyy"}]], + [[{p: "شوی و", f: "shuwey wo"}], [{p: "شوي وو", f: "shuwee woo"}]], + [[{p: "شوې وه", f: "shuwe wa"}], [{p: "شوې وې", f: "shuwe we"}]], + ], + present: [ + [[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]], + [[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]], + [[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]], + [[{p: "شوې یې", f: "shuwe ye"}], [{p: "شوې یئ", f: "shuwe yeyy"}]], + [[{p: "شوی دی", f: "shuwey dey"}], [{p: "شوي دي", f: "shuwee dee"}]], + [[{p: "شوې ده", f: "shuwe da"}], [{p: "شوې دي", f: "shuwe dee"}]], + ], + subjunctive: [ + [[{p: "شوی یم", f: "shuwey yum"}], [{p: "شوي یو", f: "shuwee yoo"}]], + [[{p: "شوې یم", f: "shuwe yum"}], [{p: "شوې یو", f: "shuwe yoo"}]], + [[{p: "شوی یې", f: "shuwey ye"}], [{p: "شوي یئ", f: "shuwee yeyy"}]], + [[{p: "شوې یې", f: "shuwe ye"}], [{p: "شوې یئ", f: "shuwe yeyy"}]], + [[{p: "شوی وي", f: "shuwey wee"}], [{p: "شوي وي", f: "shuwee wee"}]], + [[{p: "شوې وي", f: "shuwe wee"}], [{p: "شوې وي", f: "shuwe wee"}]], + ], + future: [ + [[{p: "به شوی یم", f: "ba shuwey yum"}], [{p: "به شوي یو", f: "ba shuwee yoo"}]], + [[{p: "به شوې یم", f: "ba shuwe yum"}], [{p: "به شوې یو", f: "ba shuwe yoo"}]], + [[{p: "به شوی یې", f: "ba shuwey ye"}], [{p: "به شوي یئ", f: "ba shuwee yeyy"}]], + [[{p: "به شوې یې", f: "ba shuwe ye"}], [{p: "به شوې یئ", f: "ba shuwe yeyy"}]], + [[{p: "به شوی وي", f: "ba shuwey wee"}], [{p: "به شوي وي", f: "ba shuwee wee"}]], + [[{p: "به شوې وي", f: "ba shuwe wee"}], [{p: "به شوې وي", f: "ba shuwe wee"}]], + ], + affirmational: [ + [[{p: "به شوی وم", f: "ba shuwey wum"}], [{p: "به شوي وو", f: "ba shuwee woo"}]], + [[{p: "به شوې وم", f: "ba shuwe wum"}], [{p: "به شوې وو", f: "ba shuwe woo"}]], + [[{p: "به شوی وې", f: "ba shuwey we"}], [{p: "به شوي وئ", f: "ba shuwee weyy"}]], + [[{p: "به شوې وې", f: "ba shuwe we"}], [{p: "به شوې وئ", f: "ba shuwe weyy"}]], + [[{p: "به شوی و", f: "ba shuwey wo"}], [{p: "به شوي وو", f: "ba shuwee woo"}]], + [[{p: "به شوې وه", f: "ba shuwe wa"}], [{p: "به شوې وې", f: "ba shuwe we"}]], + ], + pastSubjunctiveHypothetical: [ + [[{p: "به شوی وای", f: "ba shuwey waay"}], [{p: "به شوي وای", f: "ba shuwee waay"}]], + [[{p: "به شوې وای", f: "ba shuwe waay"}], [{p: "به شوې وای", f: "ba shuwe waay"}]], + [[{p: "به شوی وای", f: "ba shuwey waay"}], [{p: "به شوي وای", f: "ba shuwee waay"}]], + [[{p: "به شوې وای", f: "ba shuwe waay"}], [{p: "به شوې وای", f: "ba shuwe waay"}]], + [[{p: "به شوی وای", f: "ba shuwey waay"}], [{p: "به شوي وای", f: "ba shuwee waay"}]], + [[{p: "به شوې وای", f: "ba shuwe waay"}], [{p: "به شوې وای", f: "ba shuwe waay"}]], + ], + }, +}; + + +export const kawulStat: T.VerbConjugation = { + info: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "کول", f: "kawúl" }, + short: { p: "کو", f: "kaw" }, + }, + perfective: { + long: { p: "کړل", f: "kRul" }, + short: { p: "کړ", f: "kR" }, + mini: { p: "ک", f: "k" }, + }, + }, + stem: { + imperfective: { p: "کو", f: "kaw" }, + perfective: { + long: { p: "کړ", f: "kR" }, + short: { p: "ک", f: "k" }, + }, + }, + participle: { + present: { p: "کوونکی", f: "kawóonkey" }, + past: { p: "کړی", f: "kúRey" }, + }, + }, + imperfective: { + nonImperative: [ + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کوي", f: "kawee"}], [{p: "کوي", f: "kawee"}]], + [[{p: "کوي", f: "kawee"}], [{p: "کوي", f: "kawee"}]], + ], + future: [ + [[{p: "به کوم", f: "ba kawum"}], [{p: "به کوو", f: "ba kawoo"}]], + [[{p: "به کوم", f: "ba kawum"}], [{p: "به کوو", f: "ba kawoo"}]], + [[{p: "به کوې", f: "ba kawe"}], [{p: "به کوئ", f: "ba kaweyy"}]], + [[{p: "به کوې", f: "ba kawe"}], [{p: "به کوئ", f: "ba kaweyy"}]], + [[{p: "به کوي", f: "ba kawee"}], [{p: "به کوي", f: "ba kawee"}]], + [[{p: "به کوي", f: "ba kawee"}], [{p: "به کوي", f: "ba kawee"}]], + ], + imperative: [ + [[{ p: "کوه", f: "kawá" }], [{ p: "کوئ", f: "kawéyy" }]], + [[{ p: "کوه", f: "kawá" }], [{ p: "کوئ", f: "kawéyy" }]] + ], + past: { + short: [ + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کاوه", f: "kaawu"}], [{p: "کول", f: "kawul"}]], + [[{p: "کوه", f: "kawa"}], [{p: "کوې", f: "kawe"}]], + ], + long: [ + [[{p: "کولم", f: "kawulum"}], [{p: "کولو", f: "kawuloo"}]], + [[{p: "کولم", f: "kawulum"}], [{p: "کولو", f: "kawuloo"}]], + [[{p: "کولې", f: "kawule"}], [{p: "کولئ", f: "kawuleyy"}]], + [[{p: "کولې", f: "kawule"}], [{p: "کولئ", f: "kawuleyy"}]], + [[{p: "کوله", f: "kawulu"}, {p: "کولو", f: "kawulo"}], [{p: "کول", f: "kawul"}]], + [[{p: "کوله", f: "kawula"}], [{p: "کولې", f: "kawule"}]], + ], + }, + modal: { + nonImperative: { + long: [ + [[{ p: "کولی شم", f: "kawúley shum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شم", f: "kawúley shum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شې", f: "kawúley she" }], [{ p: "کولی شئ", f: "kawúley sheyy" }]], + [[{ p: "کولی شې", f: "kawúley she" }], [{ p: "کولی شئ", f: "kawúley sheyy" }]], + [[{ p: "کولی شي", f: "kawúley shee" }], [{ p: "کولی شي", f: "kawúley shee" }]], + [[{ p: "کولی شي", f: "kawúley shee" }], [{ p: "کولی شي", f: "kawúley shee" }]], + ], + short: [ + [[{ p: "کوی شم", f: "kawéy shum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شم", f: "kawéy shum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شې", f: "kawéy she" }], [{ p: "کوی شئ", f: "kawéy sheyy" }]], + [[{ p: "کوی شې", f: "kawéy she" }], [{ p: "کوی شئ", f: "kawéy sheyy" }]], + [[{ p: "کوی شي", f: "kawéy shee" }], [{ p: "کوی شي", f: "kawéy shee" }]], + [[{ p: "کوی شي", f: "kawéy shee" }], [{ p: "کوی شي", f: "kawéy shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به کولی شم", f: "ba kawúley shum" }], [{ p: "به کولی شو", f: "ba kawúley shoo" }]], + [[{ p: "به کولی شم", f: "ba kawúley shum" }], [{ p: "به کولی شو", f: "ba kawúley shoo" }]], + [[{ p: "به کولی شې", f: "ba kawúley she" }], [{ p: "به کولی شئ", f: "ba kawúley sheyy" }]], + [[{ p: "به کولی شې", f: "ba kawúley she" }], [{ p: "به کولی شئ", f: "ba kawúley sheyy" }]], + [[{ p: "به کولی شي", f: "ba kawúley shee" }], [{ p: "به کولی شي", f: "ba kawúley shee" }]], + [[{ p: "به کولی شي", f: "ba kawúley shee" }], [{ p: "به کولی شي", f: "ba kawúley shee" }]], + ], + short: [ + [[{ p: "به کوی شم", f: "ba kawéy shum" }], [{ p: "به کوی شو", f: "ba kawéy shoo" }]], + [[{ p: "به کوی شم", f: "ba kawéy shum" }], [{ p: "به کوی شو", f: "ba kawéy shoo" }]], + [[{ p: "به کوی شې", f: "ba kawéy she" }], [{ p: "به کوی شئ", f: "ba kawéy sheyy" }]], + [[{ p: "به کوی شې", f: "ba kawéy she" }], [{ p: "به کوی شئ", f: "ba kawéy sheyy" }]], + [[{ p: "به کوی شي", f: "ba kawéy shee" }], [{ p: "به کوی شي", f: "ba kawéy shee" }]], + [[{ p: "به کوی شي", f: "ba kawéy shee" }], [{ p: "به کوی شي", f: "ba kawéy shee" }]], + ], + }, + past: { + long: [ + [[{ p: "کولی شوم", f: "kawúley shwum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شوم", f: "kawúley shwum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شوې", f: "kawúley shwe" }], [{ p: "کولی شوئ", f: "kawúley shweyy" }]], + [[{ p: "کولی شوې", f: "kawúley shwe" }], [{ p: "کولی شوئ", f: "kawúley shweyy" }]], + [[{ p: "کولی شو", f: "kawúley sho" }], [{ p: "کولی شول", f: "kawúley shwul" }, { p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شوه", f: "kawúley shwa" }], [{ p: "کولی شولې", f: "kawúley shwule" }, { p: "کولی شوې", f: "kawúley shwe" }]], + ], + short: [ + [[{ p: "کوی شوم", f: "kawéy shwum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شوم", f: "kawéy shwum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شوې", f: "kawéy shwe" }], [{ p: "کوی شوئ", f: "kawéy shweyy" }]], + [[{ p: "کوی شوې", f: "kawéy shwe" }], [{ p: "کوی شوئ", f: "kawéy shweyy" }]], + [[{ p: "کوی شو", f: "kawéy sho" }], [{ p: "کوی شول", f: "kawéy shwul" }, { p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شوه", f: "kawéy shwa" }], [{ p: "کوی شولې", f: "kawéy shwule" }, { p: "کوی شوې", f: "kawéy shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + ], + short: [ + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + ], + }, + }, + }, + perfective: { + nonImperative: { + long: [ + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]], + [[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]], + ], + short: [ + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]], + [[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]], + ], + }, + future: { + long: [ + [[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]], + [[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]], + [[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]], + [[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]], + [[{p: "به کړي", f: "ba kRee"}], [{p: "به کړي", f: "ba kRee"}]], + [[{p: "به کړي", f: "ba kRee"}], [{p: "به کړي", f: "ba kRee"}]], + ], + short: [ + [[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]], + [[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]], + [[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]], + [[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]], + [[{p: "به کي", f: "ba kee"}], [{p: "به کي", f: "ba kee"}]], + [[{p: "به کي", f: "ba kee"}], [{p: "به کي", f: "ba kee"}]], + ], + }, + imperative: { + long: [ + [[{ p: "کړه", f: "kRa" }], [{ p: "کړئ", f: "kReyy" }]], + [[{ p: "کړه", f: "kRa" }], [{ p: "کړئ", f: "kReyy" }]] + ], + short: [ + [[{ p: "که", f: "ka" }], [{ p: "کئ", f: "keyy" }]], + [[{ p: "که", f: "ka" }], [{ p: "کئ", f: "keyy" }]], + ], + }, + past: { + mini: [ + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "که", f: "ku"}, {p: "کو", f: "ko"}], [{p: "کړل", f: "kRul"}, { p: "کو", f: "koo" }]], + [[{p: "که", f: "ka"}], [{p: "کې", f: "ke"}]], + ], + short: [ + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړه", f: "kRu"}, {p: "کړو", f: "kRo"}, {p: "کړ", f: "kuR"}], [{p: "کړل", f: "kRul"}, {p: "کړو", f: "kRoo" }]], + [[{p: "کړه", f: "kRa"}], [{p: "کړې", f: "kRe"}]], + ], + long: [ + [[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]], + [[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]], + [[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]], + [[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]], + [[{p: "کړله", f: "kRulu"}, {p: "کړلو", f: "kRulo"}], [{p: "کړل", f: "kRul"}, {p: "کړلو", f: "kRuloo"}]], + [[{p: "کړله", f: "kRula"}], [{p: "کړلې", f: "kRule"}]], + ], + }, + modal: { + nonImperative: { + long: [ + [[{ p: "کړلی شم", f: "kRúley shum" }], [{ p: "کړلی شو", f: "kRúley shoo" }]], + [[{ p: "کړلی شم", f: "kRúley shum" }], [{ p: "کړلی شو", f: "kRúley shoo" }]], + [[{ p: "کړلی شې", f: "kRúley she" }], [{ p: "کړلی شئ", f: "kRúley sheyy" }]], + [[{ p: "کړلی شې", f: "kRúley she" }], [{ p: "کړلی شئ", f: "kRúley sheyy" }]], + [[{ p: "کړلی شي", f: "kRúley shee" }], [{ p: "کړلی شي", f: "kRúley shee" }]], + [[{ p: "کړلی شي", f: "kRúley shee" }], [{ p: "کړلی شي", f: "kRúley shee" }]], + ], + short: [ + [[{ p: "کړی شم", f: "kRéy shum" }], [{ p: "کړی شو", f: "kRéy shoo" }]], + [[{ p: "کړی شم", f: "kRéy shum" }], [{ p: "کړی شو", f: "kRéy shoo" }]], + [[{ p: "کړی شې", f: "kRéy she" }], [{ p: "کړی شئ", f: "kRéy sheyy" }]], + [[{ p: "کړی شې", f: "kRéy she" }], [{ p: "کړی شئ", f: "kRéy sheyy" }]], + [[{ p: "کړی شي", f: "kRéy shee" }], [{ p: "کړی شي", f: "kRéy shee" }]], + [[{ p: "کړی شي", f: "kRéy shee" }], [{ p: "کړی شي", f: "kRéy shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به کړلی شم", f: "ba kRúley shum" }], [{ p: "به کړلی شو", f: "ba kRúley shoo" }]], + [[{ p: "به کړلی شم", f: "ba kRúley shum" }], [{ p: "به کړلی شو", f: "ba kRúley shoo" }]], + [[{ p: "به کړلی شې", f: "ba kRúley she" }], [{ p: "به کړلی شئ", f: "ba kRúley sheyy" }]], + [[{ p: "به کړلی شې", f: "ba kRúley she" }], [{ p: "به کړلی شئ", f: "ba kRúley sheyy" }]], + [[{ p: "به کړلی شي", f: "ba kRúley shee" }], [{ p: "به کړلی شي", f: "ba kRúley shee" }]], + [[{ p: "به کړلی شي", f: "ba kRúley shee" }], [{ p: "به کړلی شي", f: "ba kRúley shee" }]], + ], + short: [ + [[{ p: "به کړی شم", f: "ba kRéy shum" }], [{ p: "به کړی شو", f: "ba kRéy shoo" }]], + [[{ p: "به کړی شم", f: "ba kRéy shum" }], [{ p: "به کړی شو", f: "ba kRéy shoo" }]], + [[{ p: "به کړی شې", f: "ba kRéy she" }], [{ p: "به کړی شئ", f: "ba kRéy sheyy" }]], + [[{ p: "به کړی شې", f: "ba kRéy she" }], [{ p: "به کړی شئ", f: "ba kRéy sheyy" }]], + [[{ p: "به کړی شي", f: "ba kRéy shee" }], [{ p: "به کړی شي", f: "ba kRéy shee" }]], + [[{ p: "به کړی شي", f: "ba kRéy shee" }], [{ p: "به کړی شي", f: "ba kRéy shee" }]], + ], + }, + past: { + long: [ + [[{ p: "کړلی شوم", f: "kRúley shwum" }], [{ p: "کړلی شو", f: "kRúley shoo" }]], + [[{ p: "کړلی شوم", f: "kRúley shwum" }], [{ p: "کړلی شو", f: "kRúley shoo" }]], + [[{ p: "کړلی شوې", f: "kRúley shwe" }], [{ p: "کړلی شوئ", f: "kRúley shweyy" }]], + [[{ p: "کړلی شوې", f: "kRúley shwe" }], [{ p: "کړلی شوئ", f: "kRúley shweyy" }]], + [[{ p: "کړلی شو", f: "kRúley sho" }], [{ p: "کړلی شول", f: "kRúley shwul" }, { p: "کړلی شو", f: "kRúley shoo" }]], + [[{ p: "کړلی شوه", f: "kRúley shwa" }], [{ p: "کړلی شولې", f: "kRúley shwule" }, { p: "کړلی شوې", f: "kRúley shwe" }]], + ], + short: [ + [[{ p: "کړی شوم", f: "kRéy shwum" }], [{ p: "کړی شو", f: "kRéy shoo" }]], + [[{ p: "کړی شوم", f: "kRéy shwum" }], [{ p: "کړی شو", f: "kRéy shoo" }]], + [[{ p: "کړی شوې", f: "kRéy shwe" }], [{ p: "کړی شوئ", f: "kRéy shweyy" }]], + [[{ p: "کړی شوې", f: "kRéy shwe" }], [{ p: "کړی شوئ", f: "kRéy shweyy" }]], + [[{ p: "کړی شو", f: "kRéy sho" }], [{ p: "کړی شول", f: "kRéy shwul" }, { p: "کړی شو", f: "kRéy shoo" }]], + [[{ p: "کړی شوه", f: "kRéy shwa" }], [{ p: "کړی شولې", f: "kRéy shwule" }, { p: "کړی شوې", f: "kRéy shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "کړلی شوی", f: "kRúley shwey" }], [{ p: "کړلی شوی", f: "kRúley shwey" }]], + [[{ p: "کړلی شوی", f: "kRúley shwey" }], [{ p: "کړلی شوی", f: "kRúley shwey" }]], + [[{ p: "کړلی شوی", f: "kRúley shwey" }], [{ p: "کړلی شوی", f: "kRúley shwey" }]], + [[{ p: "کړلی شوی", f: "kRúley shwey" }], [{ p: "کړلی شوی", f: "kRúley shwey" }]], + [[{ p: "کړلی شوی", f: "kRúley shwey" }], [{ p: "کړلی شوی", f: "kRúley shwey" }]], + [[{ p: "کړلی شوی", f: "kRúley shwey" }], [{ p: "کړلی شوی", f: "kRúley shwey" }]], + ], + short: [ + [[{ p: "کړی شوی", f: "kRéy shwey" }], [{ p: "کړی شوی", f: "kRéy shwey" }]], + [[{ p: "کړی شوی", f: "kRéy shwey" }], [{ p: "کړی شوی", f: "kRéy shwey" }]], + [[{ p: "کړی شوی", f: "kRéy shwey" }], [{ p: "کړی شوی", f: "kRéy shwey" }]], + [[{ p: "کړی شوی", f: "kRéy shwey" }], [{ p: "کړی شوی", f: "kRéy shwey" }]], + [[{ p: "کړی شوی", f: "kRéy shwey" }], [{ p: "کړی شوی", f: "kRéy shwey" }]], + [[{ p: "کړی شوی", f: "kRéy shwey" }], [{ p: "کړی شوی", f: "kRéy shwey" }]], + ], + }, + }, + }, + hypothetical: { + short: [ + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + ], + long: [ + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + ], + }, + participle: { + past: { + masc: [ + [{ p: "کړی", f: "kúRey" }], + [{ p: "کړي", f: "kúRee" }], + [{ p: "کړیو", f: "kúRiyo" }, { p: "کړو", f: "kúRo" }], + ], + fem: [ + [{ p: "کړې", f: "kúRe" }], + [{ p: "کړې", f: "kúRe" }], + [{ p: "کړو", f: "kúRo" }], + ], + }, + present: { + masc: [ + [{ p: "کوونکی", f: "kawóonkey" }], + [{ p: "کوونکي", f: "kawóonkee" }], + [{ p: "کوونکیو", f: "kawóonkiyo" }, { p: "کوونکو", f: "kedóonko" }], + ], + fem: [ + [{ p: "کوونکې", f: "kawóonke" }], + [{ p: "کوونکې", f: "kawóonke" }], + [{ p: "کوونکو", f: "kawóonko" }], + ], + }, + }, + perfect: { + halfPerfect: [ + [[{p: "کړی", f: "kúRey"}], [{p: "کړي", f: "kúRee"}]], + [[{p: "کړې", f: "kúRe"}], [{p: "کړې", f: "kúRe"}]], + [[{p: "کړی", f: "kúRey"}], [{p: "کړي", f: "kúRee"}]], + [[{p: "کړې", f: "kúRe"}], [{p: "کړې", f: "kúRe"}]], + [[{p: "کړی", f: "kúRey"}], [{p: "کړي", f: "kúRee"}]], + [[{p: "کړې", f: "kúRe"}], [{p: "کړې", f: "kúRe"}]], + ], + past: [ + [[{p: "کړی وم", f: "kúRey wum"}], [{p: "کړي وو", f: "kúRee woo"}]], + [[{p: "کړې وم", f: "kúRe wum"}], [{p: "کړې وو", f: "kúRe woo"}]], + [[{p: "کړی وې", f: "kúRey we"}], [{p: "کړي وئ", f: "kúRee weyy"}]], + [[{p: "کړې وې", f: "kúRe we"}], [{p: "کړې وئ", f: "kúRe weyy"}]], + [[{p: "کړی و", f: "kúRey wo"}], [{p: "کړي وو", f: "kúRee woo"}]], + [[{p: "کړې وه", f: "kúRe wa"}], [{p: "کړې وې", f: "kúRe we"}]], + ], + present: [ + [[{p: "کړی یم", f: "kúRey yum"}], [{p: "کړي یو", f: "kúRee yoo"}]], + [[{p: "کړې یم", f: "kúRe yum"}], [{p: "کړې یو", f: "kúRe yoo"}]], + [[{p: "کړی یې", f: "kúRey ye"}], [{p: "کړي یئ", f: "kúRee yeyy"}]], + [[{p: "کړې یې", f: "kúRe ye"}], [{p: "کړې یئ", f: "kúRe yeyy"}]], + [[{p: "کړی دی", f: "kúRey dey"}], [{p: "کړي دي", f: "kúRee dee"}]], + [[{p: "کړې ده", f: "kúRe da"}], [{p: "کړې دي", f: "kúRe dee"}]], + ], + subjunctive: [ + [[{p: "کړی یم", f: "kúRey yum"}], [{p: "کړي یو", f: "kúRee yoo"}]], + [[{p: "کړې یم", f: "kúRe yum"}], [{p: "کړې یو", f: "kúRe yoo"}]], + [[{p: "کړی یې", f: "kúRey ye"}], [{p: "کړي یئ", f: "kúRee yeyy"}]], + [[{p: "کړې یې", f: "kúRe ye"}], [{p: "کړې یئ", f: "kúRe yeyy"}]], + [[{p: "کړی وي", f: "kúRey wee"}], [{p: "کړي وي", f: "kúRee wee"}]], + [[{p: "کړې وي", f: "kúRe wee"}], [{p: "کړې وي", f: "kúRe wee"}]], + ], + future: [ + [[{p: "به کړی یم", f: "ba kúRey yum"}], [{p: "به کړي یو", f: "ba kúRee yoo"}]], + [[{p: "به کړې یم", f: "ba kúRe yum"}], [{p: "به کړې یو", f: "ba kúRe yoo"}]], + [[{p: "به کړی یې", f: "ba kúRey ye"}], [{p: "به کړي یئ", f: "ba kúRee yeyy"}]], + [[{p: "به کړې یې", f: "ba kúRe ye"}], [{p: "به کړې یئ", f: "ba kúRe yeyy"}]], + [[{p: "به کړی وي", f: "ba kúRey wee"}], [{p: "به کړي وي", f: "ba kúRee wee"}]], + [[{p: "به کړې وي", f: "ba kúRe wee"}], [{p: "به کړې وي", f: "ba kúRe wee"}]], + ], + affirmational: [ + [[{p: "به کړی وم", f: "ba kúRey wum"}], [{p: "به کړي وو", f: "ba kúRee woo"}]], + [[{p: "به کړې وم", f: "ba kúRe wum"}], [{p: "به کړې وو", f: "ba kúRe woo"}]], + [[{p: "به کړی وې", f: "ba kúRey we"}], [{p: "به کړي وئ", f: "ba kúRee weyy"}]], + [[{p: "به کړې وې", f: "ba kúRe we"}], [{p: "به کړې وئ", f: "ba kúRe weyy"}]], + [[{p: "به کړی و", f: "ba kúRey wo"}], [{p: "به کړي وو", f: "ba kúRee woo"}]], + [[{p: "به کړې وه", f: "ba kúRe wa"}], [{p: "به کړې وې", f: "ba kúRe we"}]], + ], + pastSubjunctiveHypothetical: [ + [[{p: "کړی وای", f: "kúRey"}], [{p: "به کړي", f: "kúRee"}]], + [[{p: "کړې وای", f: "kúRe"}], [{p: "به کړې", f: "kúRe"}]], + [[{p: "کړی وای", f: "kúRey"}], [{p: "به کړي", f: "kúRee"}]], + [[{p: "کړې وای", f: "kúRe"}], [{p: "به کړې", f: "kúRe"}]], + [[{p: "کړی وای", f: "kúRey"}], [{p: "به کړي", f: "kúRee"}]], + [[{p: "کړې وای", f: "kúRe"}], [{p: "به کړې", f: "kúRe"}]], + ], + }, + // passive: { + // imperfective: { + // nonImperative: [ + // [{p: "کول کېږم", f: "kawul keGum"}, {p: "کول کېږو", f: "kawul keGoo"}], + // [{p: "کول کېږې", f: "kawul keGe"}, {p: "کول کېږئ", f: "kawul keGeyy"}], + // [{p: "کول کېږي", f: "kawul keGee"}, {p: "کول کېږي", f: "kawul keGee"}], + // ], + // future: [ + // [{p: "به کول کېږم", f: "ba kawul keGum"}, {p: "به کول کېږو", f: "ba kawul keGoo"}], + // [{p: "به کول کېږې", f: "ba kawul keGe"}, {p: "به کول کېږئ", f: "ba kawul keGeyy"}], + // [{p: "به کول کېږي", f: "ba kawul keGee"}, {p: "به کول کېږي", f: "ba kawul keGee"}], + // ], + // past: { + // short: [ + // [[{p: "کول کېدم", f: "kawul kedum"}], [{p: "کول کېدو", f: "kawul kedoo"}]], + // [[{p: "کول کېدم", f: "kawul kedum"}], [{p: "کول کېدو", f: "kawul kedoo"}]], + // [[{p: "کول کېدې", f: "kawul kede"}], [{p: "کول کېدئ", f: "kawul kedeyy"}]], + // [[{p: "کول کېدې", f: "kawul kede"}], [{p: "کول کېدئ", f: "kawul kedeyy"}]], + // [[{p: "کول کېده", f: "kawul kedu"}, {p: "کول کېدو", f: "kawul kedo"}], [{p: "کول کېدل", f: "kawul kedul"}]], + // [[{p: "کول کېده", f: "kawul keda"}], [{p: "کول کېدې", f: "kawul kede"}]], + // ], + // long: [ + // [[{p: "کول کېدلم", f: "kawul kedulum"}], [{p: "کول کېدلو", f: "kawul keduloo"}]], + // [[{p: "کول کېدلم", f: "kawul kedulum"}], [{p: "کول کېدلو", f: "kawul keduloo"}]], + // [[{p: "کول کېدلې", f: "kawul kedule"}], [{p: "کول کېدلئ", f: "kawul keduleyy"}]], + // [[{p: "کول کېدلې", f: "kawul kedule"}], [{p: "کول کېدلئ", f: "kawul keduleyy"}]], + // [[{p: "کول کېدله", f: "kawul kedulu"}, {p: "کول کېدلو", f: "kawul kedulo"}], [{p: "کول کېدل", f: "kawul kedul"}]], + // [[{p: "کول کېدله", f: "kawul kedula"}], [{p: "کول کېدلې", f: "kawul kedule"}]], + // ], + // }, + // }, + // perfective: { + // nonImperative: { + // short: [ + // [{p: "کړلی کېږم", f: "kRuley keGum"}, {p: "کړلی کېږو", f: "kRuley keGoo"}], + // [{p: "کړلی کېږې", f: "kRuley keGe"}, {p: "کړلی کېږئ", f: "kRuley keGeyy"}], + // [{p: "کړلی کېږي", f: "kRuley keGee"}, {p: "کړلی کېږي", f: "kRuley keGee"}], + // ], + // long: [ + // [{p: "کړی کېږم", f: "kRey keGum"}, {p: "کړی کېږو", f: "kRey keGoo"}], + // [{p: "کړی کېږې", f: "kRey keGe"}, {p: "کړی کېږئ", f: "kRey keGeyy"}], + // [{p: "کړی کېږي", f: "kRey keGee"}, {p: "کړی کېږي", f: "kRey keGee"}], + // ], + // }, + // future: { + // short: [ + // [{p: "به کړلی کېږم", f: "ba kRuley keGum"}, {p: "به کړلی کېږو", f: "ba kRuley keGoo"}], + // [{p: "به کړلی کېږې", f: "ba kRuley keGe"}, {p: "به کړلی کېږئ", f: "ba kRuley keGeyy"}], + // [{p: "به کړلی کېږي", f: "ba kRuley keGee"}, {p: "به کړلی کېږي", f: "ba kRuley keGee"}], + // ], + // long: [ + // [{p: "به کړی کېږم", f: "ba kRey keGum"}, {p: "به کړی کېږو", f: "ba kRey keGoo"}], + // [{p: "به کړی کېږې", f: "ba kRey keGe"}, {p: "به کړی کېږئ", f: "ba kRey keGeyy"}], + // [{p: "به کړی کېږي", f: "ba kRey keGee"}, {p: "به کړی کېږي", f: "ba kRey keGee"}], + // ], + // }, + // past: { + // short: [ + // [[{p: "کړی شوم", f: "kRey shwum"}], [{p: "کړی شو", f: "kRey shoo"}]], + // [[{p: "کړی شوم", f: "kRey shwum"}], [{p: "کړی شو", f: "kRey shoo"}]], + // [[{p: "کړی شوې", f: "kRey shwe"}], [{p: "کړی شوئ", f: "kRey shweyy"}]], + // [[{p: "کړی شوې", f: "kRey shwe"}], [{p: "کړی شوئ", f: "kRey shweyy"}]], + // [[{p: "کړی شو", f: "kRey sho"}], [{p: "کړی شو", f: "kRey shoo"}, {p: "کړی شول", f: "kRey shwul"}]], + // [[{p: "کړی شوه", f: "kRey shwa"}], [{p: "کړی شوې", f: "kRey shwe"}]], + // ], + // long: [ + // [[{p: "کړلی شوم", f: "kRúley shwum"}], [{p: "کړلی شو", f: "kRúley shoo"}]], + // [[{p: "کړلی شوم", f: "kRúley shwum"}], [{p: "کړلی شو", f: "kRúley shoo"}]], + // [[{p: "کړلی شوې", f: "kRúley shwe"}], [{p: "کړلی شوئ", f: "kRúley shweyy"}]], + // [[{p: "کړلی شوې", f: "kRúley shwe"}], [{p: "کړلی شوئ", f: "kRúley shweyy"}]], + // [[{p: "کړلی شو", f: "kRúley sho"}], [{p: "کړلی شو", f: "kRúley shoo"}, {p: "کړلی شول", f: "kRúley shwul"}]], + // [[{p: "کړلی شوه", f: "kRúley shwa"}], [{p: "کړلی شوې", f: "kRúley shwe"}]], + // ], + // }, + // }, + // perfect: { + // halfPerfect: { + // short: [ + // [[{p: "کړی شوی", f: "kRéy shuwey"}], [{p: "کړی شوي", f: "kRéy shuwee"}]], + // [[{p: "کړی شوې", f: "kRéy shuwe"}], [{p: "کړی شوې", f: "kRéy shuwe"}]], + // [[{p: "کړی شوی", f: "kRéy shuwey"}], [{p: "کړی شوي", f: "kRéy shuwee"}]], + // [[{p: "کړی شوې", f: "kRéy shuwe"}], [{p: "کړی شوې", f: "kRéy shuwe"}]], + // [[{p: "کړی شوی", f: "kRéy shuwey"}], [{p: "کړی شوي", f: "kRéy shuwee"}]], + // [[{p: "کړی شوې", f: "kRéy shuwe"}], [{p: "کړی شوې", f: "kRéy shuwe"}]], + // ], + // long: [ + // [[{p: "کړلی شوی", f: "kRúley shuwey"}], [{p: "کړلی شوي", f: "kRúley shuwee"}]], + // [[{p: "کړلی شوې", f: "kRúley shuwe"}], [{p: "کړلی شوې", f: "kRúley shuwe"}]], + // [[{p: "کړلی شوی", f: "kRúley shuwey"}], [{p: "کړلی شوي", f: "kRúley shuwee"}]], + // [[{p: "کړلی شوې", f: "kRúley shuwe"}], [{p: "کړلی شوې", f: "kRúley shuwe"}]], + // [[{p: "کړلی شوی", f: "kRúley shuwey"}], [{p: "کړلی شوي", f: "kRúley shuwee"}]], + // [[{p: "کړلی شوې", f: "kRúley shuwe"}], [{p: "کړلی شوې", f: "kRúley shuwe"}]], + // ], + // }, + // past: { + // short: [ + // [[{p: "کړی شوی وم", f: "kRéy shuwey wum"}], [{p: "کړی شوي وو", f: "kRéy shuwee woo"}]], + // [[{p: "کړی شوې وم", f: "kRéy shuwe wum"}], [{p: "کړی شوې وو", f: "kRéy shuwe woo"}]], + // [[{p: "کړی شوی وې", f: "kRéy shuwey we"}], [{p: "کړی شوي وئ", f: "kRéy shuwee weyy"}]], + // [[{p: "کړی شوې وې", f: "kRéy shuwe we"}], [{p: "کړی شوې وئ", f: "kRéy shuwe weyy"}]], + // [[{p: "کړی شوی و", f: "kRéy shuwey wo"}], [{p: "کړی شوي وو", f: "kRéy shuwee woo"}]], + // [[{p: "کړی شوې وه", f: "kRéy shuwe wa"}], [{p: "کړی شوې وې", f: "kRéy shuwe we"}]], + // ], + // long: [ + // [[{p: "کړلی شوی وم", f: "kRúley shuwey wum"}], [{p: "کړلی شوي وو", f: "kRúley shuwee woo"}]], + // [[{p: "کړلی شوې وم", f: "kRúley shuwe wum"}], [{p: "کړلی شوې وو", f: "kRúley shuwe woo"}]], + // [[{p: "کړلی شوی وې", f: "kRúley shuwey we"}], [{p: "کړلی شوي وئ", f: "kRúley shuwee weyy"}]], + // [[{p: "کړلی شوې وې", f: "kRúley shuwe we"}], [{p: "کړلی شوې وئ", f: "kRúley shuwe weyy"}]], + // [[{p: "کړلی شوی و", f: "kRúley shuwey wo"}], [{p: "کړلی شوي وو", f: "kRúley shuwee woo"}]], + // [[{p: "کړلی شوې وه", f: "kRúley shuwe wa"}], [{p: "کړلی شوې وې", f: "kRúley shuwe we"}]], + // ], + // }, + // present: { + // short: [ + // [[{p: "کړی شوی یم", f: "kRéy shuwey yum"}], [{p: "کړی شوي یو", f: "kRéy shuwee yoo"}]], + // [[{p: "کړی شوې یم", f: "kRéy shuwe yum"}], [{p: "کړی شوې یو", f: "kRéy shuwe yoo"}]], + // [[{p: "کړی شوی یې", f: "kRéy shuwey ye"}], [{p: "کړی شوي یئ", f: "kRéy shuwee yeyy"}]], + // [[{p: "کړی شوې یې", f: "kRéy shuwe ye"}], [{p: "کړی شوې یئ", f: "kRéy shuwe yeyy"}]], + // [[{p: "کړی شوی دی", f: "kRéy shuwey dey"}], [{p: "کړی شوي دي", f: "kRéy shuwee dee"}]], + // [[{p: "کړی شوې ده", f: "kRéy shuwe da"}], [{p: "کړی شوې دي", f: "kRéy shuwe dee"}]], + // ], + // long: [ + // [[{p: "کړلی شوی یم", f: "kRúley shuwey yum"}], [{p: "کړلی شوي یو", f: "kRúley shuwee yoo"}]], + // [[{p: "کړلی شوې یم", f: "kRúley shuwe yum"}], [{p: "کړلی شوې یو", f: "kRúley shuwe yoo"}]], + // [[{p: "کړلی شوی یې", f: "kRúley shuwey ye"}], [{p: "کړلی شوي یئ", f: "kRúley shuwee yeyy"}]], + // [[{p: "کړلی شوې یې", f: "kRúley shuwe ye"}], [{p: "کړلی شوې یئ", f: "kRúley shuwe yeyy"}]], + // [[{p: "کړلی شوی دی", f: "kRúley shuwey dey"}], [{p: "کړلی شوي دي", f: "kRúley shuwee dee"}]], + // [[{p: "کړلی شوې ده", f: "kRúley shuwe da"}], [{p: "کړلی شوې دي", f: "kRúley shuwe dee"}]], + // ], + // }, + // future: { + // short: [ + // [[{p: "به کړی شوی یم", f: "ba kRéy shuwey yum"}], [{p: "به کړی شوي یو", f: "ba kRéy shuwee yoo"}]], + // [[{p: "به کړی شوې یم", f: "ba kRéy shuwe yum"}], [{p: "به کړی شوې یو", f: "ba kRéy shuwe yoo"}]], + // [[{p: "به کړی شوی یې", f: "ba kRéy shuwey ye"}], [{p: "به کړی شوي یئ", f: "ba kRéy shuwee yeyy"}]], + // [[{p: "به کړی شوې یې", f: "ba kRéy shuwe ye"}], [{p: "به کړی شوې یئ", f: "ba kRéy shuwe yeyy"}]], + // [[{p: "به کړی شوی وي", f: "ba kRéy shuwey wee"}], [{p: "به کړی شوي وي", f: "ba kRéy shuwee wee"}]], + // [[{p: "به کړی شوې وي", f: "ba kRéy shuwe wee"}], [{p: "به کړی شوې وي", f: "ba kRéy shuwe wee"}]], + // ], + // long: [ + // [[{p: "به کړلی شوی یم", f: "ba kRúley shuwey yum"}], [{p: "به کړلی شوي یو", f: "ba kRúley shuwee yoo"}]], + // [[{p: "به کړلی شوې یم", f: "ba kRúley shuwe yum"}], [{p: "به کړلی شوې یو", f: "ba kRúley shuwe yoo"}]], + // [[{p: "به کړلی شوی یې", f: "ba kRúley shuwey ye"}], [{p: "به کړلی شوي یئ", f: "ba kRúley shuwee yeyy"}]], + // [[{p: "به کړلی شوې یې", f: "ba kRúley shuwe ye"}], [{p: "به کړلی شوې یئ", f: "ba kRúley shuwe yeyy"}]], + // [[{p: "به کړلی شوی وي", f: "ba kRúley shuwey wee"}], [{p: "به کړلی شوي وي", f: "ba kRúley shuwee wee"}]], + // [[{p: "به کړلی شوې وي", f: "ba kRúley shuwe wee"}], [{p: "به کړلی شوې وي", f: "ba kRúley shuwe wee"}]], + // ], + // }, + // affirmational: { + // short: [ + // [[{p: "به کړی شوی وم", f: "ba kRéy shuwey wum"}], [{p: "به کړی شوي وو", f: "ba kRéy shuwee woo"}]], + // [[{p: "به کړی شوې وم", f: "ba kRéy shuwe wum"}], [{p: "به کړی شوې وو", f: "ba kRéy shuwe woo"}]], + // [[{p: "به کړی شوی وې", f: "ba kRéy shuwey we"}], [{p: "به کړی شوي وئ", f: "ba kRéy shuwee weyy"}]], + // [[{p: "به کړی شوې وې", f: "ba kRéy shuwe we"}], [{p: "به کړی شوې وئ", f: "ba kRéy shuwe weyy"}]], + // [[{p: "به کړی شوی و", f: "ba kRéy shuwey wo"}], [{p: "به کړی شوي وو", f: "ba kRéy shuwee woo"}]], + // [[{p: "به کړی شوې وه", f: "ba kRéy shuwe wa"}], [{p: "به کړی شوې وې", f: "ba kRéy shuwe we"}]], + // ], + // long: [ + // [[{p: "به کړلی شوی وم", f: "ba kRúley shuwey wum"}], [{p: "به کړلی شوي وو", f: "ba kRúley shuwee woo"}]], + // [[{p: "به کړلی شوې وم", f: "ba kRúley shuwe wum"}], [{p: "به کړلی شوې وو", f: "ba kRúley shuwe woo"}]], + // [[{p: "به کړلی شوی وې", f: "ba kRúley shuwey we"}], [{p: "به کړلی شوي وئ", f: "ba kRúley shuwee weyy"}]], + // [[{p: "به کړلی شوې وې", f: "ba kRúley shuwe we"}], [{p: "به کړلی شوې وئ", f: "ba kRúley shuwe weyy"}]], + // [[{p: "به کړلی شوی و", f: "ba kRúley shuwey wo"}], [{p: "به کړلی شوي وو", f: "ba kRúley shuwee woo"}]], + // [[{p: "به کړلی شوې وه", f: "ba kRúley shuwe wa"}], [{p: "به کړلی شوې وې", f: "ba kRúley shuwe we"}]], + // ], + // }, + // pastSubjunctiveHypothetical: { + // short: [ + // [[{p: "کړی شوی وای", f: "ba kRéy shuwey"}], [{p: "به کړی شوي", f: "ba kRéy shuwee"}]], + // [[{p: "کړی شوې وای", f: "ba kRéy shuwe"}], [{p: "به کړی شوې", f: "ba kRéy shuwe"}]], + // [[{p: "کړی شوی وای", f: "ba kRéy shuwey"}], [{p: "به کړی شوي", f: "ba kRéy shuwee"}]], + // [[{p: "کړی شوې وای", f: "ba kRéy shuwe"}], [{p: "به کړی شوې", f: "ba kRéy shuwe"}]], + // [[{p: "کړی شوی وای", f: "ba kRéy shuwey"}], [{p: "به کړی شوي", f: "ba kRéy shuwee"}]], + // [[{p: "کړی شوې وای", f: "ba kRéy shuwe"}], [{p: "به کړی شوې", f: "ba kRéy shuwe"}]], + // ], + // long: [ + // [[{p: "کړلی شوی وای", f: "ba kRúley shuwey"}], [{p: "به کړلی شوي", f: "ba kRúley shuwee"}]], + // [[{p: "کړلی شوې وای", f: "ba kRúley shuwe"}], [{p: "به کړلی شوې", f: "ba kRúley shuwe"}]], + // [[{p: "کړلی شوی وای", f: "ba kRúley shuwey"}], [{p: "به کړلی شوي", f: "ba kRúley shuwee"}]], + // [[{p: "کړلی شوې وای", f: "ba kRúley shuwe"}], [{p: "به کړلی شوې", f: "ba kRúley shuwe"}]], + // [[{p: "کړلی شوی وای", f: "ba kRúley shuwey"}], [{p: "به کړلی شوي", f: "ba kRúley shuwee"}]], + // [[{p: "کړلی شوې وای", f: "ba kRúley shuwe"}], [{p: "به کړلی شوې", f: "ba kRúley shuwe"}]], + // ], + // }, + // }, + // }, +}; + +// TODO: This is kind of bad because the info can get generated perfectly and tested but we're returning it by hand here? +// leads to possible discrepency when changing things, almost like two sources of truth? +export const kawulDyn: T.VerbConjugation = { + info: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "کول", f: "kawúl" }, + short: { p: "کو", f: "kaw" }, + }, + perfective: { + long: { p: "وکړلو", f: "óokRul" }, + short: { p: "وکړو", f: "óokR" }, + mini: { p: "وکو", f: "óok" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "کړل", f: "kRul" }], + short: [{ p: "و", f: "óo" }, { p: "کړ", f: "kR" }], + mini: [{ p: "و", f: "óo" }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "کو", f: "kaw" }, + perfective: { + long: { p: "وکړ", f: "óokR" }, + short: { p: "وک", f: "óok" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "کړ", f: "kR" }], + short: [{ p: "و", f: "óo" }, { p: "ک", f: "k" }], + }, + }, + participle: { + present: { p: "کوونکی", f: "kawóonkey" }, + past: { p: "کړی", f: "kúRey" }, + }, + }, + imperfective: { + nonImperative: [ + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کوي", f: "kawee"}], [{p: "کوي", f: "kawee"}]], + [[{p: "کوي", f: "kawee"}], [{p: "کوي", f: "kawee"}]], + ], + future: [ + [[{p: "به کوم", f: "ba kawum"}], [{p: "به کوو", f: "ba kawoo"}]], + [[{p: "به کوم", f: "ba kawum"}], [{p: "به کوو", f: "ba kawoo"}]], + [[{p: "به کوې", f: "ba kawe"}], [{p: "به کوئ", f: "ba kaweyy"}]], + [[{p: "به کوې", f: "ba kawe"}], [{p: "به کوئ", f: "ba kaweyy"}]], + [[{p: "به کوي", f: "ba kawee"}], [{p: "به کوي", f: "ba kawee"}]], + [[{p: "به کوي", f: "ba kawee"}], [{p: "به کوي", f: "ba kawee"}]], + ], + imperative: [ + [[{ p: "کوه", f: "kawá" }], [{ p: "کوئ", f: "kawéyy" }]], + [[{ p: "کوه", f: "kawá" }], [{ p: "کوئ", f: "kawéyy" }]] + ], + past: { + short: [ + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوم", f: "kawum"}], [{p: "کوو", f: "kawoo"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کوې", f: "kawe"}], [{p: "کوئ", f: "kaweyy"}]], + [[{p: "کاوه", f: "kaawu"}], [{p: "کول", f: "kawul"}]], + [[{p: "کوه", f: "kawa"}], [{p: "کوې", f: "kawe"}]], + ], + long: [ + [[{p: "کولم", f: "kawulum"}], [{p: "کولو", f: "kawuloo"}]], + [[{p: "کولم", f: "kawulum"}], [{p: "کولو", f: "kawuloo"}]], + [[{p: "کولې", f: "kawule"}], [{p: "کولئ", f: "kawuleyy"}]], + [[{p: "کولې", f: "kawule"}], [{p: "کولئ", f: "kawuleyy"}]], + [[{p: "کوله", f: "kawulu"}, {p: "کولو", f: "kawulo"}], [{p: "کول", f: "kawul"}]], + [[{p: "کوله", f: "kawula"}], [{p: "کولې", f: "kawule"}]], + ], + }, + modal: { + nonImperative: { + long: [ + [[{ p: "کولی شم", f: "kawúley shum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شم", f: "kawúley shum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شې", f: "kawúley she" }], [{ p: "کولی شئ", f: "kawúley sheyy" }]], + [[{ p: "کولی شې", f: "kawúley she" }], [{ p: "کولی شئ", f: "kawúley sheyy" }]], + [[{ p: "کولی شي", f: "kawúley shee" }], [{ p: "کولی شي", f: "kawúley shee" }]], + [[{ p: "کولی شي", f: "kawúley shee" }], [{ p: "کولی شي", f: "kawúley shee" }]], + ], + short: [ + [[{ p: "کوی شم", f: "kawéy shum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شم", f: "kawéy shum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شې", f: "kawéy she" }], [{ p: "کوی شئ", f: "kawéy sheyy" }]], + [[{ p: "کوی شې", f: "kawéy she" }], [{ p: "کوی شئ", f: "kawéy sheyy" }]], + [[{ p: "کوی شي", f: "kawéy shee" }], [{ p: "کوی شي", f: "kawéy shee" }]], + [[{ p: "کوی شي", f: "kawéy shee" }], [{ p: "کوی شي", f: "kawéy shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به کولی شم", f: "ba kawúley shum" }], [{ p: "به کولی شو", f: "ba kawúley shoo" }]], + [[{ p: "به کولی شم", f: "ba kawúley shum" }], [{ p: "به کولی شو", f: "ba kawúley shoo" }]], + [[{ p: "به کولی شې", f: "ba kawúley she" }], [{ p: "به کولی شئ", f: "ba kawúley sheyy" }]], + [[{ p: "به کولی شې", f: "ba kawúley she" }], [{ p: "به کولی شئ", f: "ba kawúley sheyy" }]], + [[{ p: "به کولی شي", f: "ba kawúley shee" }], [{ p: "به کولی شي", f: "ba kawúley shee" }]], + [[{ p: "به کولی شي", f: "ba kawúley shee" }], [{ p: "به کولی شي", f: "ba kawúley shee" }]], + ], + short: [ + [[{ p: "به کوی شم", f: "ba kawéy shum" }], [{ p: "به کوی شو", f: "ba kawéy shoo" }]], + [[{ p: "به کوی شم", f: "ba kawéy shum" }], [{ p: "به کوی شو", f: "ba kawéy shoo" }]], + [[{ p: "به کوی شې", f: "ba kawéy she" }], [{ p: "به کوی شئ", f: "ba kawéy sheyy" }]], + [[{ p: "به کوی شې", f: "ba kawéy she" }], [{ p: "به کوی شئ", f: "ba kawéy sheyy" }]], + [[{ p: "به کوی شي", f: "ba kawéy shee" }], [{ p: "به کوی شي", f: "ba kawéy shee" }]], + [[{ p: "به کوی شي", f: "ba kawéy shee" }], [{ p: "به کوی شي", f: "ba kawéy shee" }]], + ], + }, + past: { + long: [ + [[{ p: "کولی شوم", f: "kawúley shwum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شوم", f: "kawúley shwum" }], [{ p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شوې", f: "kawúley shwe" }], [{ p: "کولی شوئ", f: "kawúley shweyy" }]], + [[{ p: "کولی شوې", f: "kawúley shwe" }], [{ p: "کولی شوئ", f: "kawúley shweyy" }]], + [[{ p: "کولی شو", f: "kawúley sho" }], [{ p: "کولی شول", f: "kawúley shwul" }, { p: "کولی شو", f: "kawúley shoo" }]], + [[{ p: "کولی شوه", f: "kawúley shwa" }], [{ p: "کولی شولې", f: "kawúley shwule" }, { p: "کولی شوې", f: "kawúley shwe" }]], + ], + short: [ + [[{ p: "کوی شوم", f: "kawéy shwum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شوم", f: "kawéy shwum" }], [{ p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شوې", f: "kawéy shwe" }], [{ p: "کوی شوئ", f: "kawéy shweyy" }]], + [[{ p: "کوی شوې", f: "kawéy shwe" }], [{ p: "کوی شوئ", f: "kawéy shweyy" }]], + [[{ p: "کوی شو", f: "kawéy sho" }], [{ p: "کوی شول", f: "kawéy shwul" }, { p: "کوی شو", f: "kawéy shoo" }]], + [[{ p: "کوی شوه", f: "kawéy shwa" }], [{ p: "کوی شولې", f: "kawéy shwule" }, { p: "کوی شوې", f: "kawéy shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + [[{ p: "کولی شوی", f: "kawúley shwey" }], [{ p: "کولی شوی", f: "kawúley shwey" }]], + ], + short: [ + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + [[{ p: "کوی شوی", f: "kawéy shwey" }], [{ p: "کوی شوی", f: "kawéy shwey" }]], + ], + }, + }, + }, + perfective: { + nonImperative: { + long: [ + [[{p: "وکړم", f: "óokRum"}], [{p: "وکړو", f: "óokRoo"}]], + [[{p: "وکړم", f: "óokRum"}], [{p: "وکړو", f: "óokRoo"}]], + [[{p: "وکړې", f: "óokRe"}], [{p: "وکړئ", f: "óokReyy"}]], + [[{p: "وکړې", f: "óokRe"}], [{p: "وکړئ", f: "óokReyy"}]], + [[{p: "وکړي", f: "óokRee"}], [{p: "وکړي", f: "óokRee"}]], + [[{p: "وکړي", f: "óokRee"}], [{p: "وکړي", f: "óokRee"}]], + ], + short: [ + [[{p: "وکم", f: "óokum"}], [{p: "وکو", f: "óokoo"}]], + [[{p: "وکم", f: "óokum"}], [{p: "وکو", f: "óokoo"}]], + [[{p: "وکې", f: "óoke"}], [{p: "وکئ", f: "óokeyy"}]], + [[{p: "وکې", f: "óoke"}], [{p: "وکئ", f: "óokeyy"}]], + [[{p: "وکي", f: "óokee"}], [{p: "وکي", f: "óokee"}]], + [[{p: "وکي", f: "óokee"}], [{p: "وکي", f: "óokee"}]], + ], + }, + future: { + long: [ + [[{p: "به وکړم", f: "ba óokRum"}], [{p: "به وکړو", f: "ba óokRoo"}]], + [[{p: "به وکړم", f: "ba óokRum"}], [{p: "به وکړو", f: "ba óokRoo"}]], + [[{p: "به وکړې", f: "ba óokRe"}], [{p: "به وکړئ", f: "ba óokReyy"}]], + [[{p: "به وکړې", f: "ba óokRe"}], [{p: "به وکړئ", f: "ba óokReyy"}]], + [[{p: "به وکړي", f: "ba óokRee"}], [{p: "به وکړي", f: "ba óokRee"}]], + [[{p: "به وکړي", f: "ba óokRee"}], [{p: "به وکړي", f: "ba óokRee"}]], + ], + short: [ + [[{p: "به وکم", f: "ba óokum"}], [{p: "به وکو", f: "ba óokoo"}]], + [[{p: "به وکم", f: "ba óokum"}], [{p: "به وکو", f: "ba óokoo"}]], + [[{p: "به وکې", f: "ba óoke"}], [{p: "به وکئ", f: "ba óokeyy"}]], + [[{p: "به وکې", f: "ba óoke"}], [{p: "به وکئ", f: "ba óokeyy"}]], + [[{p: "به وکي", f: "ba óokee"}], [{p: "به وکي", f: "ba óokee"}]], + [[{p: "به وکي", f: "ba óokee"}], [{p: "به وکي", f: "ba óokee"}]], + ], + }, + imperative: { + long: [ + [[{ p: "وکړه", f: "óokRa" }], [{ p: "وکړئ", f: "óokReyy" }]], + [[{ p: "وکړه", f: "óokRa" }], [{ p: "وکړئ", f: "óokReyy" }]] + ], + short: [ + [[{ p: "وکه", f: "óoka" }], [{ p: "وکئ", f: "óokeyy" }]], + [[{ p: "وکه", f: "óoka" }], [{ p: "وکئ", f: "óokeyy" }]], + ], + }, + past: { + mini: [ + [[{p: "وکم", f: "óokum"}], [{p: "وکو", f: "óokoo"}]], + [[{p: "وکم", f: "óokum"}], [{p: "وکو", f: "óokoo"}]], + [[{p: "وکې", f: "óoke"}], [{p: "وکئ", f: "óokeyy"}]], + [[{p: "وکې", f: "óoke"}], [{p: "وکئ", f: "óokeyy"}]], + [[{p: "وکه", f: "óoku"}, {p: "وکو", f: "óoko"}], [{p: "وکړل", f: "óokRul"}, { p: "وکو", f: "óokoo" }]], + [[{p: "وکه", f: "óoka"}], [{p: "وکې", f: "óoke"}]], + ], + short: [ + [[{p: "وکړم", f: "óokRum"}], [{p: "وکړو", f: "óokRoo"}]], + [[{p: "وکړم", f: "óokRum"}], [{p: "وکړو", f: "óokRoo"}]], + [[{p: "وکړې", f: "óokRe"}], [{p: "وکړئ", f: "óokReyy"}]], + [[{p: "وکړې", f: "óokRe"}], [{p: "وکړئ", f: "óokReyy"}]], + [[{p: "وکړه", f: "óokRu"}, {p: "وکړو", f: "óokRo"}, {p: "وکړ", f: "óokuR"}], [{p: "وکړل", f: "óokRul"}, {p: "وکړو", f: "óokRoo" }]], + [[{p: "وکړه", f: "óokRa"}], [{p: "وکړې", f: "óokRe"}]], + ], + long: [ + [[{p: "وکړلم", f: "óokRulum"}], [{p: "وکړلو", f: "óokRuloo"}]], + [[{p: "وکړلم", f: "óokRulum"}], [{p: "وکړلو", f: "óokRuloo"}]], + [[{p: "وکړلې", f: "óokRule"}], [{p: "وکړلئ", f: "óokRuleyy"}]], + [[{p: "وکړلې", f: "óokRule"}], [{p: "وکړلئ", f: "óokRuleyy"}]], + [[{p: "وکړله", f: "óokRulu"}, {p: "وکړلو", f: "óokRulo"}], [{p: "وکړل", f: "óokRul"}, {p: "وکړلو", f: "óokRuloo"}]], + [[{p: "وکړله", f: "óokRula"}], [{p: "وکړلې", f: "óokRule"}]], + ], + }, + modal: { + nonImperative: { + long: [ + [[{ p: "کړلی شم", f: "óokRuley shum" }], [{ p: "کړلی شو", f: "óokRuley shoo" }]], + [[{ p: "کړلی شم", f: "óokRuley shum" }], [{ p: "کړلی شو", f: "óokRuley shoo" }]], + [[{ p: "کړلی شې", f: "óokRuley she" }], [{ p: "کړلی شئ", f: "óokRuley sheyy" }]], + [[{ p: "کړلی شې", f: "óokRuley she" }], [{ p: "کړلی شئ", f: "óokRuley sheyy" }]], + [[{ p: "کړلی شي", f: "óokRuley shee" }], [{ p: "کړلی شي", f: "óokRuley shee" }]], + [[{ p: "کړلی شي", f: "óokRuley shee" }], [{ p: "کړلی شي", f: "óokRuley shee" }]], + ], + short: [ + [[{ p: "کړی شم", f: "óokRey shum" }], [{ p: "کړی شو", f: "óokRey shoo" }]], + [[{ p: "کړی شم", f: "óokRey shum" }], [{ p: "کړی شو", f: "óokRey shoo" }]], + [[{ p: "کړی شې", f: "óokRey she" }], [{ p: "کړی شئ", f: "óokRey sheyy" }]], + [[{ p: "کړی شې", f: "óokRey she" }], [{ p: "کړی شئ", f: "óokRey sheyy" }]], + [[{ p: "کړی شي", f: "óokRey shee" }], [{ p: "کړی شي", f: "óokRey shee" }]], + [[{ p: "کړی شي", f: "óokRey shee" }], [{ p: "کړی شي", f: "óokRey shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به کړلی شم", f: "ba óokRuley shum" }], [{ p: "به کړلی شو", f: "ba óokRuley shoo" }]], + [[{ p: "به کړلی شم", f: "ba óokRuley shum" }], [{ p: "به کړلی شو", f: "ba óokRuley shoo" }]], + [[{ p: "به کړلی شې", f: "ba óokRuley she" }], [{ p: "به کړلی شئ", f: "ba óokRuley sheyy" }]], + [[{ p: "به کړلی شې", f: "ba óokRuley she" }], [{ p: "به کړلی شئ", f: "ba óokRuley sheyy" }]], + [[{ p: "به کړلی شي", f: "ba óokRuley shee" }], [{ p: "به کړلی شي", f: "ba óokRuley shee" }]], + [[{ p: "به کړلی شي", f: "ba óokRuley shee" }], [{ p: "به کړلی شي", f: "ba óokRuley shee" }]], + ], + short: [ + [[{ p: "به کړی شم", f: "ba óokRey shum" }], [{ p: "به کړی شو", f: "ba óokRey shoo" }]], + [[{ p: "به کړی شم", f: "ba óokRey shum" }], [{ p: "به کړی شو", f: "ba óokRey shoo" }]], + [[{ p: "به کړی شې", f: "ba óokRey she" }], [{ p: "به کړی شئ", f: "ba óokRey sheyy" }]], + [[{ p: "به کړی شې", f: "ba óokRey she" }], [{ p: "به کړی شئ", f: "ba óokRey sheyy" }]], + [[{ p: "به کړی شي", f: "ba óokRey shee" }], [{ p: "به کړی شي", f: "ba óokRey shee" }]], + [[{ p: "به کړی شي", f: "ba óokRey shee" }], [{ p: "به کړی شي", f: "ba óokRey shee" }]], + ], + }, + past: { + long: [ + [[{ p: "کړلی شوم", f: "óokRuley shwum" }], [{ p: "کړلی شو", f: "óokRuley shoo" }]], + [[{ p: "کړلی شوم", f: "óokRuley shwum" }], [{ p: "کړلی شو", f: "óokRuley shoo" }]], + [[{ p: "کړلی شوې", f: "óokRuley shwe" }], [{ p: "کړلی شوئ", f: "óokRuley shweyy" }]], + [[{ p: "کړلی شوې", f: "óokRuley shwe" }], [{ p: "کړلی شوئ", f: "óokRuley shweyy" }]], + [[{ p: "کړلی شو", f: "óokRuley sho" }], [{ p: "کړلی شول", f: "óokRuley shwul" }, { p: "کړلی شو", f: "óokRuley shoo" }]], + [[{ p: "کړلی شوه", f: "óokRuley shwa" }], [{ p: "کړلی شولې", f: "óokRuley shwule" }, { p: "کړلی شوې", f: "óokRuley shwe" }]], + ], + short: [ + [[{ p: "کړی شوم", f: "óokRey shwum" }], [{ p: "کړی شو", f: "óokRey shoo" }]], + [[{ p: "کړی شوم", f: "óokRey shwum" }], [{ p: "کړی شو", f: "óokRey shoo" }]], + [[{ p: "کړی شوې", f: "óokRey shwe" }], [{ p: "کړی شوئ", f: "óokRey shweyy" }]], + [[{ p: "کړی شوې", f: "óokRey shwe" }], [{ p: "کړی شوئ", f: "óokRey shweyy" }]], + [[{ p: "کړی شو", f: "óokRey sho" }], [{ p: "کړی شول", f: "óokRey shwul" }, { p: "کړی شو", f: "óokRey shoo" }]], + [[{ p: "کړی شوه", f: "óokRey shwa" }], [{ p: "کړی شولې", f: "óokRey shwule" }, { p: "کړی شوې", f: "óokRey shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "کړلی شوی", f: "óokRuley shwey" }], [{ p: "کړلی شوی", f: "óokRuley shwey" }]], + [[{ p: "کړلی شوی", f: "óokRuley shwey" }], [{ p: "کړلی شوی", f: "óokRuley shwey" }]], + [[{ p: "کړلی شوی", f: "óokRuley shwey" }], [{ p: "کړلی شوی", f: "óokRuley shwey" }]], + [[{ p: "کړلی شوی", f: "óokRuley shwey" }], [{ p: "کړلی شوی", f: "óokRuley shwey" }]], + [[{ p: "کړلی شوی", f: "óokRuley shwey" }], [{ p: "کړلی شوی", f: "óokRuley shwey" }]], + [[{ p: "کړلی شوی", f: "óokRuley shwey" }], [{ p: "کړلی شوی", f: "óokRuley shwey" }]], + ], + short: [ + [[{ p: "کړی شوی", f: "óokRey shwey" }], [{ p: "کړی شوی", f: "óokRey shwey" }]], + [[{ p: "کړی شوی", f: "óokRey shwey" }], [{ p: "کړی شوی", f: "óokRey shwey" }]], + [[{ p: "کړی شوی", f: "óokRey shwey" }], [{ p: "کړی شوی", f: "óokRey shwey" }]], + [[{ p: "کړی شوی", f: "óokRey shwey" }], [{ p: "کړی شوی", f: "óokRey shwey" }]], + [[{ p: "کړی شوی", f: "óokRey shwey" }], [{ p: "کړی شوی", f: "óokRey shwey" }]], + [[{ p: "کړی شوی", f: "óokRey shwey" }], [{ p: "کړی شوی", f: "óokRey shwey" }]], + ], + }, + }, + }, + hypothetical: { + short: [ + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + [[{ p: "کوی", f: "kawéy" }], [{ p: "کوی", f: "kawéy" }]], + ], + long: [ + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + [[{ p: "کولی", f: "kawúley" }], [{ p: "کولی", f: "kawúley" }]], + ], + }, + participle: { + past: { + masc: [ + [{ p: "کړی", f: "kúRey" }], + [{ p: "کړي", f: "kúRee" }], + [{ p: "کړیو", f: "kúRiyo" }, { p: "کړو", f: "kúRo" }], + ], + fem: [ + [{ p: "کړې", f: "kúRe" }], + [{ p: "کړې", f: "kúRe" }], + [{ p: "کړو", f: "kúRo" }], + ], + }, + present: { + masc: [ + [{ p: "کوونکی", f: "kawóonkey" }], + [{ p: "کوونکي", f: "kawóonkee" }], + [{ p: "کوونکیو", f: "kawóonkiyo" }, { p: "کوونکو", f: "kedóonko" }], + ], + fem: [ + [{ p: "کوونکې", f: "kawóonke" }], + [{ p: "کوونکې", f: "kawóonke" }], + [{ p: "کوونکو", f: "kawóonko" }], + ], + }, + }, + perfect: { + halfPerfect: [ + [[{p: "کړی", f: "kúRey"}], [{p: "کړي", f: "kúRee"}]], + [[{p: "کړې", f: "kúRe"}], [{p: "کړې", f: "kúRe"}]], + [[{p: "کړی", f: "kúRey"}], [{p: "کړي", f: "kúRee"}]], + [[{p: "کړې", f: "kúRe"}], [{p: "کړې", f: "kúRe"}]], + [[{p: "کړی", f: "kúRey"}], [{p: "کړي", f: "kúRee"}]], + [[{p: "کړې", f: "kúRe"}], [{p: "کړې", f: "kúRe"}]], + ], + past: [ + [[{p: "کړی وم", f: "kúRey wum"}], [{p: "کړي وو", f: "kúRee woo"}]], + [[{p: "کړې وم", f: "kúRe wum"}], [{p: "کړې وو", f: "kúRe woo"}]], + [[{p: "کړی وې", f: "kúRey we"}], [{p: "کړي وئ", f: "kúRee weyy"}]], + [[{p: "کړې وې", f: "kúRe we"}], [{p: "کړې وئ", f: "kúRe weyy"}]], + [[{p: "کړی و", f: "kúRey wo"}], [{p: "کړي وو", f: "kúRee woo"}]], + [[{p: "کړې وه", f: "kúRe wa"}], [{p: "کړې وې", f: "kúRe we"}]], + ], + present: [ + [[{p: "کړی یم", f: "kúRey yum"}], [{p: "کړي یو", f: "kúRee yoo"}]], + [[{p: "کړې یم", f: "kúRe yum"}], [{p: "کړې یو", f: "kúRe yoo"}]], + [[{p: "کړی یې", f: "kúRey ye"}], [{p: "کړي یئ", f: "kúRee yeyy"}]], + [[{p: "کړې یې", f: "kúRe ye"}], [{p: "کړې یئ", f: "kúRe yeyy"}]], + [[{p: "کړی دی", f: "kúRey dey"}], [{p: "کړي دي", f: "kúRee dee"}]], + [[{p: "کړې ده", f: "kúRe da"}], [{p: "کړې دي", f: "kúRe dee"}]], + ], + subjunctive: [ + [[{p: "کړی یم", f: "kúRey yum"}], [{p: "کړي یو", f: "kúRee yoo"}]], + [[{p: "کړې یم", f: "kúRe yum"}], [{p: "کړې یو", f: "kúRe yoo"}]], + [[{p: "کړی یې", f: "kúRey ye"}], [{p: "کړي یئ", f: "kúRee yeyy"}]], + [[{p: "کړې یې", f: "kúRe ye"}], [{p: "کړې یئ", f: "kúRe yeyy"}]], + [[{p: "کړی وي", f: "kúRey wee"}], [{p: "کړي وي", f: "kúRee wee"}]], + [[{p: "کړې وي", f: "kúRe wee"}], [{p: "کړې وي", f: "kúRe wee"}]], + ], + future: [ + [[{p: "به کړی یم", f: "ba kúRey yum"}], [{p: "به کړي یو", f: "ba kúRee yoo"}]], + [[{p: "به کړې یم", f: "ba kúRe yum"}], [{p: "به کړې یو", f: "ba kúRe yoo"}]], + [[{p: "به کړی یې", f: "ba kúRey ye"}], [{p: "به کړي یئ", f: "ba kúRee yeyy"}]], + [[{p: "به کړې یې", f: "ba kúRe ye"}], [{p: "به کړې یئ", f: "ba kúRe yeyy"}]], + [[{p: "به کړی وي", f: "ba kúRey wee"}], [{p: "به کړي وي", f: "ba kúRee wee"}]], + [[{p: "به کړې وي", f: "ba kúRe wee"}], [{p: "به کړې وي", f: "ba kúRe wee"}]], + ], + affirmational: [ + [[{p: "به کړی وم", f: "ba kúRey wum"}], [{p: "به کړي وو", f: "ba kúRee woo"}]], + [[{p: "به کړې وم", f: "ba kúRe wum"}], [{p: "به کړې وو", f: "ba kúRe woo"}]], + [[{p: "به کړی وې", f: "ba kúRey we"}], [{p: "به کړي وئ", f: "ba kúRee weyy"}]], + [[{p: "به کړې وې", f: "ba kúRe we"}], [{p: "به کړې وئ", f: "ba kúRe weyy"}]], + [[{p: "به کړی و", f: "ba kúRey wo"}], [{p: "به کړي وو", f: "ba kúRee woo"}]], + [[{p: "به کړې وه", f: "ba kúRe wa"}], [{p: "به کړې وې", f: "ba kúRe we"}]], + ], + pastSubjunctiveHypothetical: [ + [[{p: "کړی وای", f: "kúRey"}], [{p: "به کړي", f: "kúRee"}]], + [[{p: "کړې وای", f: "kúRe"}], [{p: "به کړې", f: "kúRe"}]], + [[{p: "کړی وای", f: "kúRey"}], [{p: "به کړي", f: "kúRee"}]], + [[{p: "کړې وای", f: "kúRe"}], [{p: "به کړې", f: "kúRe"}]], + [[{p: "کړی وای", f: "kúRey"}], [{p: "به کړي", f: "kúRee"}]], + [[{p: "کړې وای", f: "kúRe"}], [{p: "به کړې", f: "kúRe"}]], + ], + }, + // passive: { + // imperfective: { + // nonImperative: [ + // [{p: "کول کېږم", f: "kawul keGum"}, {p: "کول کېږو", f: "kawul keGoo"}], + // [{p: "کول کېږې", f: "kawul keGe"}, {p: "کول کېږئ", f: "kawul keGeyy"}], + // [{p: "کول کېږي", f: "kawul keGee"}, {p: "کول کېږي", f: "kawul keGee"}], + // ], + // future: [ + // [{p: "به کول کېږم", f: "ba kawul keGum"}, {p: "به کول کېږو", f: "ba kawul keGoo"}], + // [{p: "به کول کېږې", f: "ba kawul keGe"}, {p: "به کول کېږئ", f: "ba kawul keGeyy"}], + // [{p: "به کول کېږي", f: "ba kawul keGee"}, {p: "به کول کېږي", f: "ba kawul keGee"}], + // ], + // past: { + // short: [ + // [[{p: "کول کېدم", f: "kawul kedum"}], [{p: "کول کېدو", f: "kawul kedoo"}]], + // [[{p: "کول کېدم", f: "kawul kedum"}], [{p: "کول کېدو", f: "kawul kedoo"}]], + // [[{p: "کول کېدې", f: "kawul kede"}], [{p: "کول کېدئ", f: "kawul kedeyy"}]], + // [[{p: "کول کېدې", f: "kawul kede"}], [{p: "کول کېدئ", f: "kawul kedeyy"}]], + // [[{p: "کول کېده", f: "kawul kedu"}, {p: "کول کېدو", f: "kawul kedo"}], [{p: "کول کېدل", f: "kawul kedul"}]], + // [[{p: "کول کېده", f: "kawul keda"}], [{p: "کول کېدې", f: "kawul kede"}]], + // ], + // long: [ + // [[{p: "کول کېدلم", f: "kawul kedulum"}], [{p: "کول کېدلو", f: "kawul keduloo"}]], + // [[{p: "کول کېدلم", f: "kawul kedulum"}], [{p: "کول کېدلو", f: "kawul keduloo"}]], + // [[{p: "کول کېدلې", f: "kawul kedule"}], [{p: "کول کېدلئ", f: "kawul keduleyy"}]], + // [[{p: "کول کېدلې", f: "kawul kedule"}], [{p: "کول کېدلئ", f: "kawul keduleyy"}]], + // [[{p: "کول کېدله", f: "kawul kedulu"}, {p: "کول کېدلو", f: "kawul kedulo"}], [{p: "کول کېدل", f: "kawul kedul"}]], + // [[{p: "کول کېدله", f: "kawul kedula"}], [{p: "کول کېدلې", f: "kawul kedule"}]], + // ], + // }, + // }, + // perfective: { + // nonImperative: { + // short: [ + // [{p: "کړلی کېږم", f: "kRuley keGum"}, {p: "کړلی کېږو", f: "kRuley keGoo"}], + // [{p: "کړلی کېږې", f: "kRuley keGe"}, {p: "کړلی کېږئ", f: "kRuley keGeyy"}], + // [{p: "کړلی کېږي", f: "kRuley keGee"}, {p: "کړلی کېږي", f: "kRuley keGee"}], + // ], + // long: [ + // [{p: "کړی کېږم", f: "kRey keGum"}, {p: "کړی کېږو", f: "kRey keGoo"}], + // [{p: "کړی کېږې", f: "kRey keGe"}, {p: "کړی کېږئ", f: "kRey keGeyy"}], + // [{p: "کړی کېږي", f: "kRey keGee"}, {p: "کړی کېږي", f: "kRey keGee"}], + // ], + // }, + // future: { + // short: [ + // [{p: "به کړلی کېږم", f: "ba kRuley keGum"}, {p: "به کړلی کېږو", f: "ba kRuley keGoo"}], + // [{p: "به کړلی کېږې", f: "ba kRuley keGe"}, {p: "به کړلی کېږئ", f: "ba kRuley keGeyy"}], + // [{p: "به کړلی کېږي", f: "ba kRuley keGee"}, {p: "به کړلی کېږي", f: "ba kRuley keGee"}], + // ], + // long: [ + // [{p: "به کړی کېږم", f: "ba kRey keGum"}, {p: "به کړی کېږو", f: "ba kRey keGoo"}], + // [{p: "به کړی کېږې", f: "ba kRey keGe"}, {p: "به کړی کېږئ", f: "ba kRey keGeyy"}], + // [{p: "به کړی کېږي", f: "ba kRey keGee"}, {p: "به کړی کېږي", f: "ba kRey keGee"}], + // ], + // }, + // past: { + // short: [ + // [[{p: "کړی شوم", f: "kRey shwum"}], [{p: "کړی شو", f: "kRey shoo"}]], + // [[{p: "کړی شوم", f: "kRey shwum"}], [{p: "کړی شو", f: "kRey shoo"}]], + // [[{p: "کړی شوې", f: "kRey shwe"}], [{p: "کړی شوئ", f: "kRey shweyy"}]], + // [[{p: "کړی شوې", f: "kRey shwe"}], [{p: "کړی شوئ", f: "kRey shweyy"}]], + // [[{p: "کړی شو", f: "kRey sho"}], [{p: "کړی شو", f: "kRey shoo"}, {p: "کړی شول", f: "kRey shwul"}]], + // [[{p: "کړی شوه", f: "kRey shwa"}], [{p: "کړی شوې", f: "kRey shwe"}]], + // ], + // long: [ + // [[{p: "کړلی شوم", f: "kRúley shwum"}], [{p: "کړلی شو", f: "kRúley shoo"}]], + // [[{p: "کړلی شوم", f: "kRúley shwum"}], [{p: "کړلی شو", f: "kRúley shoo"}]], + // [[{p: "کړلی شوې", f: "kRúley shwe"}], [{p: "کړلی شوئ", f: "kRúley shweyy"}]], + // [[{p: "کړلی شوې", f: "kRúley shwe"}], [{p: "کړلی شوئ", f: "kRúley shweyy"}]], + // [[{p: "کړلی شو", f: "kRúley sho"}], [{p: "کړلی شو", f: "kRúley shoo"}, {p: "کړلی شول", f: "kRúley shwul"}]], + // [[{p: "کړلی شوه", f: "kRúley shwa"}], [{p: "کړلی شوې", f: "kRúley shwe"}]], + // ], + // }, + // }, + // perfect: { + // halfPerfect: { + // short: [ + // [[{p: "کړی شوی", f: "kRéy shuwey"}], [{p: "کړی شوي", f: "kRéy shuwee"}]], + // [[{p: "کړی شوې", f: "kRéy shuwe"}], [{p: "کړی شوې", f: "kRéy shuwe"}]], + // [[{p: "کړی شوی", f: "kRéy shuwey"}], [{p: "کړی شوي", f: "kRéy shuwee"}]], + // [[{p: "کړی شوې", f: "kRéy shuwe"}], [{p: "کړی شوې", f: "kRéy shuwe"}]], + // [[{p: "کړی شوی", f: "kRéy shuwey"}], [{p: "کړی شوي", f: "kRéy shuwee"}]], + // [[{p: "کړی شوې", f: "kRéy shuwe"}], [{p: "کړی شوې", f: "kRéy shuwe"}]], + // ], + // long: [ + // [[{p: "کړلی شوی", f: "kRúley shuwey"}], [{p: "کړلی شوي", f: "kRúley shuwee"}]], + // [[{p: "کړلی شوې", f: "kRúley shuwe"}], [{p: "کړلی شوې", f: "kRúley shuwe"}]], + // [[{p: "کړلی شوی", f: "kRúley shuwey"}], [{p: "کړلی شوي", f: "kRúley shuwee"}]], + // [[{p: "کړلی شوې", f: "kRúley shuwe"}], [{p: "کړلی شوې", f: "kRúley shuwe"}]], + // [[{p: "کړلی شوی", f: "kRúley shuwey"}], [{p: "کړلی شوي", f: "kRúley shuwee"}]], + // [[{p: "کړلی شوې", f: "kRúley shuwe"}], [{p: "کړلی شوې", f: "kRúley shuwe"}]], + // ], + // }, + // past: { + // short: [ + // [[{p: "کړی شوی وم", f: "kRéy shuwey wum"}], [{p: "کړی شوي وو", f: "kRéy shuwee woo"}]], + // [[{p: "کړی شوې وم", f: "kRéy shuwe wum"}], [{p: "کړی شوې وو", f: "kRéy shuwe woo"}]], + // [[{p: "کړی شوی وې", f: "kRéy shuwey we"}], [{p: "کړی شوي وئ", f: "kRéy shuwee weyy"}]], + // [[{p: "کړی شوې وې", f: "kRéy shuwe we"}], [{p: "کړی شوې وئ", f: "kRéy shuwe weyy"}]], + // [[{p: "کړی شوی و", f: "kRéy shuwey wo"}], [{p: "کړی شوي وو", f: "kRéy shuwee woo"}]], + // [[{p: "کړی شوې وه", f: "kRéy shuwe wa"}], [{p: "کړی شوې وې", f: "kRéy shuwe we"}]], + // ], + // long: [ + // [[{p: "کړلی شوی وم", f: "kRúley shuwey wum"}], [{p: "کړلی شوي وو", f: "kRúley shuwee woo"}]], + // [[{p: "کړلی شوې وم", f: "kRúley shuwe wum"}], [{p: "کړلی شوې وو", f: "kRúley shuwe woo"}]], + // [[{p: "کړلی شوی وې", f: "kRúley shuwey we"}], [{p: "کړلی شوي وئ", f: "kRúley shuwee weyy"}]], + // [[{p: "کړلی شوې وې", f: "kRúley shuwe we"}], [{p: "کړلی شوې وئ", f: "kRúley shuwe weyy"}]], + // [[{p: "کړلی شوی و", f: "kRúley shuwey wo"}], [{p: "کړلی شوي وو", f: "kRúley shuwee woo"}]], + // [[{p: "کړلی شوې وه", f: "kRúley shuwe wa"}], [{p: "کړلی شوې وې", f: "kRúley shuwe we"}]], + // ], + // }, + // present: { + // short: [ + // [[{p: "کړی شوی یم", f: "kRéy shuwey yum"}], [{p: "کړی شوي یو", f: "kRéy shuwee yoo"}]], + // [[{p: "کړی شوې یم", f: "kRéy shuwe yum"}], [{p: "کړی شوې یو", f: "kRéy shuwe yoo"}]], + // [[{p: "کړی شوی یې", f: "kRéy shuwey ye"}], [{p: "کړی شوي یئ", f: "kRéy shuwee yeyy"}]], + // [[{p: "کړی شوې یې", f: "kRéy shuwe ye"}], [{p: "کړی شوې یئ", f: "kRéy shuwe yeyy"}]], + // [[{p: "کړی شوی دی", f: "kRéy shuwey dey"}], [{p: "کړی شوي دي", f: "kRéy shuwee dee"}]], + // [[{p: "کړی شوې ده", f: "kRéy shuwe da"}], [{p: "کړی شوې دي", f: "kRéy shuwe dee"}]], + // ], + // long: [ + // [[{p: "کړلی شوی یم", f: "kRúley shuwey yum"}], [{p: "کړلی شوي یو", f: "kRúley shuwee yoo"}]], + // [[{p: "کړلی شوې یم", f: "kRúley shuwe yum"}], [{p: "کړلی شوې یو", f: "kRúley shuwe yoo"}]], + // [[{p: "کړلی شوی یې", f: "kRúley shuwey ye"}], [{p: "کړلی شوي یئ", f: "kRúley shuwee yeyy"}]], + // [[{p: "کړلی شوې یې", f: "kRúley shuwe ye"}], [{p: "کړلی شوې یئ", f: "kRúley shuwe yeyy"}]], + // [[{p: "کړلی شوی دی", f: "kRúley shuwey dey"}], [{p: "کړلی شوي دي", f: "kRúley shuwee dee"}]], + // [[{p: "کړلی شوې ده", f: "kRúley shuwe da"}], [{p: "کړلی شوې دي", f: "kRúley shuwe dee"}]], + // ], + // }, + // future: { + // short: [ + // [[{p: "به کړی شوی یم", f: "ba kRéy shuwey yum"}], [{p: "به کړی شوي یو", f: "ba kRéy shuwee yoo"}]], + // [[{p: "به کړی شوې یم", f: "ba kRéy shuwe yum"}], [{p: "به کړی شوې یو", f: "ba kRéy shuwe yoo"}]], + // [[{p: "به کړی شوی یې", f: "ba kRéy shuwey ye"}], [{p: "به کړی شوي یئ", f: "ba kRéy shuwee yeyy"}]], + // [[{p: "به کړی شوې یې", f: "ba kRéy shuwe ye"}], [{p: "به کړی شوې یئ", f: "ba kRéy shuwe yeyy"}]], + // [[{p: "به کړی شوی وي", f: "ba kRéy shuwey wee"}], [{p: "به کړی شوي وي", f: "ba kRéy shuwee wee"}]], + // [[{p: "به کړی شوې وي", f: "ba kRéy shuwe wee"}], [{p: "به کړی شوې وي", f: "ba kRéy shuwe wee"}]], + // ], + // long: [ + // [[{p: "به کړلی شوی یم", f: "ba kRúley shuwey yum"}], [{p: "به کړلی شوي یو", f: "ba kRúley shuwee yoo"}]], + // [[{p: "به کړلی شوې یم", f: "ba kRúley shuwe yum"}], [{p: "به کړلی شوې یو", f: "ba kRúley shuwe yoo"}]], + // [[{p: "به کړلی شوی یې", f: "ba kRúley shuwey ye"}], [{p: "به کړلی شوي یئ", f: "ba kRúley shuwee yeyy"}]], + // [[{p: "به کړلی شوې یې", f: "ba kRúley shuwe ye"}], [{p: "به کړلی شوې یئ", f: "ba kRúley shuwe yeyy"}]], + // [[{p: "به کړلی شوی وي", f: "ba kRúley shuwey wee"}], [{p: "به کړلی شوي وي", f: "ba kRúley shuwee wee"}]], + // [[{p: "به کړلی شوې وي", f: "ba kRúley shuwe wee"}], [{p: "به کړلی شوې وي", f: "ba kRúley shuwe wee"}]], + // ], + // }, + // affirmational: { + // short: [ + // [[{p: "به کړی شوی وم", f: "ba kRéy shuwey wum"}], [{p: "به کړی شوي وو", f: "ba kRéy shuwee woo"}]], + // [[{p: "به کړی شوې وم", f: "ba kRéy shuwe wum"}], [{p: "به کړی شوې وو", f: "ba kRéy shuwe woo"}]], + // [[{p: "به کړی شوی وې", f: "ba kRéy shuwey we"}], [{p: "به کړی شوي وئ", f: "ba kRéy shuwee weyy"}]], + // [[{p: "به کړی شوې وې", f: "ba kRéy shuwe we"}], [{p: "به کړی شوې وئ", f: "ba kRéy shuwe weyy"}]], + // [[{p: "به کړی شوی و", f: "ba kRéy shuwey wo"}], [{p: "به کړی شوي وو", f: "ba kRéy shuwee woo"}]], + // [[{p: "به کړی شوې وه", f: "ba kRéy shuwe wa"}], [{p: "به کړی شوې وې", f: "ba kRéy shuwe we"}]], + // ], + // long: [ + // [[{p: "به کړلی شوی وم", f: "ba kRúley shuwey wum"}], [{p: "به کړلی شوي وو", f: "ba kRúley shuwee woo"}]], + // [[{p: "به کړلی شوې وم", f: "ba kRúley shuwe wum"}], [{p: "به کړلی شوې وو", f: "ba kRúley shuwe woo"}]], + // [[{p: "به کړلی شوی وې", f: "ba kRúley shuwey we"}], [{p: "به کړلی شوي وئ", f: "ba kRúley shuwee weyy"}]], + // [[{p: "به کړلی شوې وې", f: "ba kRúley shuwe we"}], [{p: "به کړلی شوې وئ", f: "ba kRúley shuwe weyy"}]], + // [[{p: "به کړلی شوی و", f: "ba kRúley shuwey wo"}], [{p: "به کړلی شوي وو", f: "ba kRúley shuwee woo"}]], + // [[{p: "به کړلی شوې وه", f: "ba kRúley shuwe wa"}], [{p: "به کړلی شوې وې", f: "ba kRúley shuwe we"}]], + // ], + // }, + // pastSubjunctiveHypothetical: { + // short: [ + // [[{p: "کړی شوی وای", f: "ba kRéy shuwey"}], [{p: "به کړی شوي", f: "ba kRéy shuwee"}]], + // [[{p: "کړی شوې وای", f: "ba kRéy shuwe"}], [{p: "به کړی شوې", f: "ba kRéy shuwe"}]], + // [[{p: "کړی شوی وای", f: "ba kRéy shuwey"}], [{p: "به کړی شوي", f: "ba kRéy shuwee"}]], + // [[{p: "کړی شوې وای", f: "ba kRéy shuwe"}], [{p: "به کړی شوې", f: "ba kRéy shuwe"}]], + // [[{p: "کړی شوی وای", f: "ba kRéy shuwey"}], [{p: "به کړی شوي", f: "ba kRéy shuwee"}]], + // [[{p: "کړی شوې وای", f: "ba kRéy shuwe"}], [{p: "به کړی شوې", f: "ba kRéy shuwe"}]], + // ], + // long: [ + // [[{p: "کړلی شوی وای", f: "ba kRúley shuwey"}], [{p: "به کړلی شوي", f: "ba kRúley shuwee"}]], + // [[{p: "کړلی شوې وای", f: "ba kRúley shuwe"}], [{p: "به کړلی شوې", f: "ba kRúley shuwe"}]], + // [[{p: "کړلی شوی وای", f: "ba kRúley shuwey"}], [{p: "به کړلی شوي", f: "ba kRúley shuwee"}]], + // [[{p: "کړلی شوې وای", f: "ba kRúley shuwe"}], [{p: "به کړلی شوې", f: "ba kRúley shuwe"}]], + // [[{p: "کړلی شوی وای", f: "ba kRúley shuwey"}], [{p: "به کړلی شوي", f: "ba kRúley shuwee"}]], + // [[{p: "کړلی شوې وای", f: "ba kRúley shuwe"}], [{p: "به کړلی شوې", f: "ba kRúley shuwe"}]], + // ], + // }, + // }, + // }, +}; + +const tlulModal: T.ModalContent = { + nonImperative: { + long: [ + [[{ p: "تللی شم", f: "tlúley shum" }], [{ p: "تللی شو", f: "tlúley shoo" }]], + [[{ p: "تللی شم", f: "tlúley shum" }], [{ p: "تللی شو", f: "tlúley shoo" }]], + [[{ p: "تللی شې", f: "tlúley she" }], [{ p: "تللی شئ", f: "tlúley sheyy" }]], + [[{ p: "تللی شې", f: "tlúley she" }], [{ p: "تللی شئ", f: "tlúley sheyy" }]], + [[{ p: "تللی شي", f: "tlúley shee" }], [{ p: "تللی شي", f: "tlúley shee" }]], + [[{ p: "تللی شي", f: "tlúley shee" }], [{ p: "تللی شي", f: "tlúley shee" }]], + ], + short: [ + [[{ p: "تلی شم", f: "tléy shum" }], [{ p: "تلی شو", f: "tléy shoo" }]], + [[{ p: "تلی شم", f: "tléy shum" }], [{ p: "تلی شو", f: "tléy shoo" }]], + [[{ p: "تلی شې", f: "tléy she" }], [{ p: "تلی شئ", f: "tléy sheyy" }]], + [[{ p: "تلی شې", f: "tléy she" }], [{ p: "تلی شئ", f: "tléy sheyy" }]], + [[{ p: "تلی شي", f: "tléy shee" }], [{ p: "تلی شي", f: "tléy shee" }]], + [[{ p: "تلی شي", f: "tléy shee" }], [{ p: "تلی شي", f: "tléy shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به تللی شم", f: "ba tlúley shum" }], [{ p: "به تللی شو", f: "ba tlúley shoo" }]], + [[{ p: "به تللی شم", f: "ba tlúley shum" }], [{ p: "به تللی شو", f: "ba tlúley shoo" }]], + [[{ p: "به تللی شې", f: "ba tlúley she" }], [{ p: "به تللی شئ", f: "ba tlúley sheyy" }]], + [[{ p: "به تللی شې", f: "ba tlúley she" }], [{ p: "به تللی شئ", f: "ba tlúley sheyy" }]], + [[{ p: "به تللی شي", f: "ba tlúley shee" }], [{ p: "به تللی شي", f: "ba tlúley shee" }]], + [[{ p: "به تللی شي", f: "ba tlúley shee" }], [{ p: "به تللی شي", f: "ba tlúley shee" }]], + ], + short: [ + [[{ p: "به تلی شم", f: "ba tléy shum" }], [{ p: "به تلی شو", f: "ba tléy shoo" }]], + [[{ p: "به تلی شم", f: "ba tléy shum" }], [{ p: "به تلی شو", f: "ba tléy shoo" }]], + [[{ p: "به تلی شې", f: "ba tléy she" }], [{ p: "به تلی شئ", f: "ba tléy sheyy" }]], + [[{ p: "به تلی شې", f: "ba tléy she" }], [{ p: "به تلی شئ", f: "ba tléy sheyy" }]], + [[{ p: "به تلی شي", f: "ba tléy shee" }], [{ p: "به تلی شي", f: "ba tléy shee" }]], + [[{ p: "به تلی شي", f: "ba tléy shee" }], [{ p: "به تلی شي", f: "ba tléy shee" }]], + ], + }, + past: { + long: [ + [[{ p: "تللی شوم", f: "tlúley shwum" }], [{ p: "تللی شو", f: "tlúley shoo" }]], + [[{ p: "تللی شوم", f: "tlúley shwum" }], [{ p: "تللی شو", f: "tlúley shoo" }]], + [[{ p: "تللی شوې", f: "tlúley shwe" }], [{ p: "تللی شوئ", f: "tlúley shweyy" }]], + [[{ p: "تللی شوې", f: "tlúley shwe" }], [{ p: "تللی شوئ", f: "tlúley shweyy" }]], + [[{ p: "تللی شو", f: "tlúley sho" }], [{ p: "تللی شول", f: "tlúley shwul" }, { p: "تللی شو", f: "tlúley shoo" }]], + [[{ p: "تللی شوه", f: "tlúley shwa" }], [{ p: "تللی شولې", f: "tlúley shwule" }, { p: "تللی شوې", f: "tlúley shwe" }]], + ], + short: [ + [[{ p: "تلی شوم", f: "tléy shwum" }], [{ p: "تلی شو", f: "tléy shoo" }]], + [[{ p: "تلی شوم", f: "tléy shwum" }], [{ p: "تلی شو", f: "tléy shoo" }]], + [[{ p: "تلی شوې", f: "tléy shwe" }], [{ p: "تلی شوئ", f: "tléy shweyy" }]], + [[{ p: "تلی شوې", f: "tléy shwe" }], [{ p: "تلی شوئ", f: "tléy shweyy" }]], + [[{ p: "تلی شو", f: "tléy sho" }], [{ p: "تلی شول", f: "tléy shwul" }, { p: "تلی شو", f: "tléy shoo" }]], + [[{ p: "تلی شوه", f: "tléy shwa" }], [{ p: "تلی شولې", f: "tléy shwule" }, { p: "تلی شوې", f: "tléy shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "تللی شوی", f: "tlúley shwey" }], [{ p: "تللی شوی", f: "tlúley shwey" }]], + [[{ p: "تللی شوی", f: "tlúley shwey" }], [{ p: "تللی شوی", f: "tlúley shwey" }]], + [[{ p: "تللی شوی", f: "tlúley shwey" }], [{ p: "تللی شوی", f: "tlúley shwey" }]], + [[{ p: "تللی شوی", f: "tlúley shwey" }], [{ p: "تللی شوی", f: "tlúley shwey" }]], + [[{ p: "تللی شوی", f: "tlúley shwey" }], [{ p: "تللی شوی", f: "tlúley shwey" }]], + [[{ p: "تللی شوی", f: "tlúley shwey" }], [{ p: "تللی شوی", f: "tlúley shwey" }]], + ], + short: [ + [[{ p: "تلی شوی", f: "tléy shwey" }], [{ p: "تلی شوی", f: "tléy shwey" }]], + [[{ p: "تلی شوی", f: "tléy shwey" }], [{ p: "تلی شوی", f: "tléy shwey" }]], + [[{ p: "تلی شوی", f: "tléy shwey" }], [{ p: "تلی شوی", f: "tléy shwey" }]], + [[{ p: "تلی شوی", f: "tléy shwey" }], [{ p: "تلی شوی", f: "tléy shwey" }]], + [[{ p: "تلی شوی", f: "tléy shwey" }], [{ p: "تلی شوی", f: "tléy shwey" }]], + [[{ p: "تلی شوی", f: "tléy shwey" }], [{ p: "تلی شوی", f: "tléy shwey" }]], + ], + }, +} + +export const tlul: T.VerbConjugation = { + info: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + imperfective: { p: "ځ", f: "dz" }, + perfective: { + mascSing: { p: "لاړ ش", f: "laaR sh" }, + mascPlur: { p: "لاړ ش", f: "laaR sh" }, + femSing: { p: "لاړه ش", f: "laaRa sh" }, + femPlur: { p: "لاړې ش", f: "laaRe sh" }, + }, + perfectiveSplit: { + mascSing: [{ p: "لاړ ", f: "laaR " }, { p: "ش", f: "sh" }], + mascPlur: [{ p: "لاړ ", f: "laaR " }, { p: "ش", f: "sh" }], + femSing: [{ p: "لاړه ", f: "laaRa " }, { p: "ش", f: "sh" }], + femPlur: [{ p: "لاړې ", f: "laaRe " }, { p: "ش", f: "sh" }], + }, + }, + root: { + imperfective: { + long: { p: "تلل", f: "tlul" }, + short: { p: "تل", f: "tl" }, + }, + perfective: { + long: { p: "لاړل", f: "laaRul" }, + short: { p: "لاړ", f: "laaR" }, + }, + perfectiveSplit: { + long: [{ p: "لا", f: "laa" }, { p: "ړل", f: "Rul" }], + short: [{ p: "لا", f: "laa" }, { p: "ړ", f: "R" }], + }, + }, + participle: { + present: { p: "تلونکی", f: "tlóonkey" }, + past: { + long: { p: "تللی", f: "tlúley" }, + short: { p: "تلی", f: "túley" }, + } + }, + }, + imperfective: { + nonImperative: [ + [[{p: "ځم", f: "dzum"}], [{p: "ځو", f: "dzoo"}]], + [[{p: "ځم", f: "dzum"}], [{p: "ځو", f: "dzoo"}]], + [[{p: "ځې", f: "dze"}], [{p: "ځئ", f: "dzeyy"}]], + [[{p: "ځې", f: "dze"}], [{p: "ځئ", f: "dzeyy"}]], + [[{p: "ځي", f: "dzee"}], [{p: "ځي", f: "dzee"}]], + [[{p: "ځي", f: "dzee"}], [{p: "ځي", f: "dzee"}]], + ], + future: [ + [[{p: "به ځم", f: "ba dzum"}], [{p: "به ځو", f: "ba dzoo"}]], + [[{p: "به ځم", f: "ba dzum"}], [{p: "به ځو", f: "ba dzoo"}]], + [[{p: "به ځې", f: "ba dze"}], [{p: "به ځئ", f: "ba dzeyy"}]], + [[{p: "به ځې", f: "ba dze"}], [{p: "به ځئ", f: "ba dzeyy"}]], + [[{p: "به ځي", f: "ba dzee"}], [{p: "به ځي", f: "ba dzee"}]], + [[{p: "به ځي", f: "ba dzee"}], [{p: "به ځي", f: "ba dzee"}]], + ], + imperative: [ + [[{ p: "ځه", f: "dza" }], [{ p: "ځئ", f: "dzeyy" }]], + [[{ p: "ځه", f: "dza" }], [{ p: "ځئ", f: "dzeyy" }]] + ], + past: { + short: [ + [[{p: "تلم", f: "tlum"}], [{p: "تلو", f: "tluloo"}]], + [[{p: "تلم", f: "tlum"}], [{p: "تلو", f: "tluloo"}]], + [[{p: "تلې", f: "tle"}], [{p: "تلئ", f: "tluleyy"}]], + [[{p: "تلې", f: "tle"}], [{p: "تلئ", f: "tluleyy"}]], + [[{p: "تله", f: "tlu"}, {p: "تلو", f: "tlo"}, { p: "ته", f: "tu" }], [{p: "تلل", f: "tlul"}]], + [[{p: "تله", f: "tla"}], [{p: "تلې", f: "tle"}]], + ], + long: [ + [[{p: "تللم", f: "tlulum"}], [{p: "تللو", f: "tluloo"}]], + [[{p: "تللم", f: "tlulum"}], [{p: "تللو", f: "tluloo"}]], + [[{p: "تللې", f: "tlule"}], [{p: "تللئ", f: "tluleyy"}]], + [[{p: "تللې", f: "tlule"}], [{p: "تللئ", f: "tluleyy"}]], + [[{p: "تلله", f: "tlulu"}, {p: "تللو", f: "tlulo"}], [{p: "تلل", f: "tlul"}]], + [[{p: "تلله", f: "tlula"}], [{p: "تللې", f: "tlule"}]], + ], + }, + modal: tlulModal, + }, + perfective: { + nonImperative: [ + [[{p: "لاړ شم", f: "láaR shum"}], [{p: "لاړ شو", f: "láaR shoo"}]], + [[{p: "لاړه شم", f: "láaRa shum"}], [{p: "لاړې شو", f: "láaRe shoo"}]], + [[{p: "لاړ شې", f: "láaR she"}], [{p: "لاړ شئ", f: "láaR sheyy"}]], + [[{p: "لاړه شې", f: "láaRa she"}], [{p: "لاړې شئ", f: "láaRe sheyy"}]], + [[{p: "لاړ شي", f: "láaR shee"}], [{p: "لاړ شي", f: "láaR shee"}]], + [[{p: "لاړه شي", f: "láaRa shee"}], [{p: "لاړې شي", f: "láaRe shee"}]], + ], + future: [ + [[{p: "به لاړ شم", f: "ba láaR shum"}], [{p: "به لاړ شو", f: "ba láaR shoo"}]], + [[{p: "به لاړه شم", f: "ba láaRa shum"}], [{p: "به لاړې شو", f: "ba láaRe shoo"}]], + [[{p: "به لاړ شې", f: "ba láaR she"}], [{p: "به لاړ شئ", f: "ba láaR sheyy"}]], + [[{p: "به لاړه شې", f: "ba láaRa she"}], [{p: "به لاړې شئ", f: "ba láaRe sheyy"}]], + [[{p: "به لاړ شي", f: "ba láaR shee"}], [{p: "به لاړ شي", f: "ba láaR shee"}]], + [[{p: "به لاړه شي", f: "ba láaRa shee"}], [{p: "به لاړې شي", f: "ba láaRe shee"}]], + ], + imperative: [ + [[{ p: "لاړ شه", f: "láaR sha" }], [{ p: "لاړ شئ", f: "láaR sheyy" }]], + [[{ p: "لاړه شه", f: "láaRa sha" }], [{ p: "لاړې شئ", f: "láaRe sheyy" }]], + ], + past: { + short: [ + [[{p: "لاړم", f: "láaRum"}], [{p: "لاړو", f: "láaRoo"}]], + [[{p: "لاړم", f: "láaRum"}], [{p: "لاړو", f: "láaRoo"}]], + [[{p: "لاړې", f: "láaRe"}], [{p: "لاړئ", f: "láaReyy"}]], + [[{p: "لاړې", f: "láaRe"}], [{p: "لاړئ", f: "láaReyy"}]], + [[{p: "لاړه", f: "láaRu"}, {p: "لاړو", f: "láaRo"}, { p: "لاړ", f: "láaR" }], [{p: "لاړل", f: "láaRul"}]], + [[{p: "لاړه", f: "láaRa"}], [{p: "لاړې", f: "láaRe"}]], + ], + long: [ + [[{p: "لاړلم", f: "láaRulum"}], [{p: "لاړلو", f: "láaRuloo"}]], + [[{p: "لاړلم", f: "láaRulum"}], [{p: "لاړلو", f: "láaRuloo"}]], + [[{p: "لاړلې", f: "láaRule"}], [{p: "لاړلئ", f: "láaRuleyy"}]], + [[{p: "لاړلې", f: "láaRule"}], [{p: "لاړلئ", f: "láaRuleyy"}]], + [[{p: "لاړله", f: "láaRulu"}, {p: "لاړلو", f: "láaRulo"}], [{p: "لاړل", f: "láaRul"}]], + [[{p: "لاړله", f: "láaRula"}], [{p: "لاړلې", f: "láaRule"}]], + ], + }, + modal: tlulModal, + }, + hypothetical: { + short: [ + [[{ p: "تلی", f: "túley" }], [{ p: "تلی", f: "túley" }]], + [[{ p: "تلی", f: "túley" }], [{ p: "تلی", f: "túley" }]], + [[{ p: "تلی", f: "túley" }], [{ p: "تلی", f: "túley" }]], + [[{ p: "تلی", f: "túley" }], [{ p: "تلی", f: "túley" }]], + [[{ p: "تلی", f: "túley" }], [{ p: "تلی", f: "túley" }]], + [[{ p: "تلی", f: "túley" }], [{ p: "تلی", f: "túley" }]], + ], + long: [ + [[{ p: "تللی", f: "tlúley" }], [{ p: "تللی", f: "tlúley" }]], + [[{ p: "تللی", f: "tlúley" }], [{ p: "تللی", f: "tlúley" }]], + [[{ p: "تللی", f: "tlúley" }], [{ p: "تللی", f: "tlúley" }]], + [[{ p: "تللی", f: "tlúley" }], [{ p: "تللی", f: "tlúley" }]], + [[{ p: "تللی", f: "tlúley" }], [{ p: "تللی", f: "tlúley" }]], + [[{ p: "تللی", f: "tlúley" }], [{ p: "تللی", f: "tlúley" }]], + ], + }, + participle: { + past: { + long: { + masc: [ + [{ p: "تللی", f: "tlúley" }], + [{ p: "تللي", f: "tlúlee" }], + [{ p: "تللیو", f: "tlúliyo" }, { p: "تللو", f: "tlúlo" }], + ], + fem: [ + [{ p: "تللې", f: "tlúle" }], + [{ p: "تللې", f: "tlúle" }], + [{ p: "تللو", f: "tlúlo" }], + ], + }, + short: { + masc: [ + [{ p: "تلی", f: "túley" }], + [{ p: "تلي", f: "túlee" }], + [{ p: "تلیو", f: "túliyo" }, { p: "تلو", f: "túlo" }], + ], + fem: [ + [{ p: "تلې", f: "túle" }], + [{ p: "تلې", f: "túle" }], + [{ p: "تلو", f: "túlo" }], + ], + } + }, + present: { + masc: [ + [{ p: "تلونکی", f: "tlóonkey" }], + [{ p: "تلونکي", f: "tlóonkee" }], + [{ p: "تلونکیو", f: "tlóonkiyo" }, { p: "تلونکو", f: "kedóonko" }], + ], + fem: [ + [{ p: "تلونکې", f: "tlóonke" }], + [{ p: "تلونکې", f: "tlóonke" }], + [{ p: "تلونکو", f: "tlóonko" }], + ], + }, + }, + perfect: { + halfPerfect: { + short: [ + [[{p: "تلی", f: "túley"}], [{p: "تلي", f: "túlee"}]], + [[{p: "تلې", f: "túle"}], [{p: "تلې", f: "túle"}]], + [[{p: "تلی", f: "túley"}], [{p: "تلي", f: "túlee"}]], + [[{p: "تلې", f: "túle"}], [{p: "تلې", f: "túle"}]], + [[{p: "تلی", f: "túley"}], [{p: "تلي", f: "túlee"}]], + [[{p: "تلې", f: "túle"}], [{p: "تلې", f: "túle"}]], + ], + long: [ + [[{p: "تللی", f: "tlúley"}], [{p: "تللي", f: "tlúlee"}]], + [[{p: "تللې", f: "tlúle"}], [{p: "تللې", f: "tlúle"}]], + [[{p: "تللی", f: "tlúley"}], [{p: "تللي", f: "tlúlee"}]], + [[{p: "تللې", f: "tlúle"}], [{p: "تللې", f: "tlúle"}]], + [[{p: "تللی", f: "tlúley"}], [{p: "تللي", f: "tlúlee"}]], + [[{p: "تللې", f: "tlúle"}], [{p: "تللې", f: "tlúle"}]], + ], + }, + past: { + short: [ + [[{p: "تلی وم", f: "túley wum"}], [{p: "تلي وو", f: "túlee woo"}]], + [[{p: "تلې وم", f: "túle wum"}], [{p: "تلې وو", f: "túle woo"}]], + [[{p: "تلی وې", f: "túley we"}], [{p: "تلي وئ", f: "túlee weyy"}]], + [[{p: "تلې وې", f: "túle we"}], [{p: "تلې وئ", f: "túle weyy"}]], + [[{p: "تلی و", f: "túley wo"}], [{p: "تلي وو", f: "túlee woo"}]], + [[{p: "تلې وه", f: "túle wa"}], [{p: "تلې وې", f: "túle we"}]], + ], + long: [ + [[{p: "تللی وم", f: "tlúley wum"}], [{p: "تللي وو", f: "tlúlee woo"}]], + [[{p: "تللې وم", f: "tlúle wum"}], [{p: "تللې وو", f: "tlúle woo"}]], + [[{p: "تللی وې", f: "tlúley we"}], [{p: "تللي وئ", f: "tlúlee weyy"}]], + [[{p: "تللې وې", f: "tlúle we"}], [{p: "تللې وئ", f: "tlúle weyy"}]], + [[{p: "تللی و", f: "tlúley wo"}], [{p: "تللي وو", f: "tlúlee woo"}]], + [[{p: "تللې وه", f: "tlúle wa"}], [{p: "تللې وې", f: "tlúle we"}]], + ], + }, + present: { + short: [ + [[{p: "تلی یم", f: "túley yum"}], [{p: "تلي یو", f: "túlee yoo"}]], + [[{p: "تلې یم", f: "túle yum"}], [{p: "تلې یو", f: "túle yoo"}]], + [[{p: "تلی یې", f: "túley ye"}], [{p: "تلي یئ", f: "túlee yeyy"}]], + [[{p: "تلې یې", f: "túle ye"}], [{p: "تلې یئ", f: "túle yeyy"}]], + [[{p: "تلی دی", f: "túley dey"}], [{p: "تلي دي", f: "túlee dee"}]], + [[{p: "تلې ده", f: "túle da"}], [{p: "تلې دي", f: "túle dee"}]], + ], + long: [ + [[{p: "تللی یم", f: "tlúley yum"}], [{p: "تللي یو", f: "tlúlee yoo"}]], + [[{p: "تللې یم", f: "tlúle yum"}], [{p: "تللې یو", f: "tlúle yoo"}]], + [[{p: "تللی یې", f: "tlúley ye"}], [{p: "تللي یئ", f: "tlúlee yeyy"}]], + [[{p: "تللې یې", f: "tlúle ye"}], [{p: "تللې یئ", f: "tlúle yeyy"}]], + [[{p: "تللی دی", f: "tlúley dey"}], [{p: "تللي دي", f: "tlúlee dee"}]], + [[{p: "تللې ده", f: "tlúle da"}], [{p: "تللې دي", f: "tlúle dee"}]], + ], + }, + subjunctive: { + short: [ + [[{p: "تلی یم", f: "túley yum"}], [{p: "تلي یو", f: "túlee yoo"}]], + [[{p: "تلې یم", f: "túle yum"}], [{p: "تلې یو", f: "túle yoo"}]], + [[{p: "تلی یې", f: "túley ye"}], [{p: "تلي یئ", f: "túlee yeyy"}]], + [[{p: "تلې یې", f: "túle ye"}], [{p: "تلې یئ", f: "túle yeyy"}]], + [[{p: "تلی وي", f: "túley wee"}], [{p: "تلي وي", f: "túlee wee"}]], + [[{p: "تلې وي", f: "túle wee"}], [{p: "تلې وي", f: "túle wee"}]], + ], + long: [ + [[{p: "تللی یم", f: "tlúley yum"}], [{p: "تللي یو", f: "tlúlee yoo"}]], + [[{p: "تللې یم", f: "tlúle yum"}], [{p: "تللې یو", f: "tlúle yoo"}]], + [[{p: "تللی یې", f: "tlúley ye"}], [{p: "تللي یئ", f: "tlúlee yeyy"}]], + [[{p: "تللې یې", f: "tlúle ye"}], [{p: "تللې یئ", f: "tlúle yeyy"}]], + [[{p: "تللی وي", f: "tlúley wee"}], [{p: "تللي وي", f: "tlúlee wee"}]], + [[{p: "تللې وي", f: "tlúle wee"}], [{p: "تللې وي", f: "tlúle wee"}]], + ], + }, + future: { + short: [ + [[{p: "به تلی یم", f: "ba túley yum"}], [{p: "به تلي یو", f: "ba túlee yoo"}]], + [[{p: "به تلې یم", f: "ba túle yum"}], [{p: "به تلې یو", f: "ba túle yoo"}]], + [[{p: "به تلی یې", f: "ba túley ye"}], [{p: "به تلي یئ", f: "ba túlee yeyy"}]], + [[{p: "به تلې یې", f: "ba túle ye"}], [{p: "به تلې یئ", f: "ba túle yeyy"}]], + [[{p: "به تلی وي", f: "ba túley wee"}], [{p: "به تلي وي", f: "ba túlee wee"}]], + [[{p: "به تلې وي", f: "ba túle wee"}], [{p: "به تلې وي", f: "ba túle wee"}]], + ], + long: [ + [[{p: "به تللی یم", f: "ba tlúley yum"}], [{p: "به تللي یو", f: "ba tlúlee yoo"}]], + [[{p: "به تللې یم", f: "ba tlúle yum"}], [{p: "به تللې یو", f: "ba tlúle yoo"}]], + [[{p: "به تللی یې", f: "ba tlúley ye"}], [{p: "به تللي یئ", f: "ba tlúlee yeyy"}]], + [[{p: "به تللې یې", f: "ba tlúle ye"}], [{p: "به تللې یئ", f: "ba tlúle yeyy"}]], + [[{p: "به تللی وي", f: "ba tlúley wee"}], [{p: "به تللي وي", f: "ba tlúlee wee"}]], + [[{p: "به تللې وي", f: "ba tlúle wee"}], [{p: "به تللې وي", f: "ba tlúle wee"}]], + ], + }, + affirmational: { + short: [ + [[{p: "به تلی وم", f: "ba túley wum"}], [{p: "به تلي وو", f: "ba túlee woo"}]], + [[{p: "به تلې وم", f: "ba túle wum"}], [{p: "به تلې وو", f: "ba túle woo"}]], + [[{p: "به تلی وې", f: "ba túley we"}], [{p: "به تلي وئ", f: "ba túlee weyy"}]], + [[{p: "به تلې وې", f: "ba túle we"}], [{p: "به تلې وئ", f: "ba túle weyy"}]], + [[{p: "به تلی و", f: "ba túley wo"}], [{p: "به تلي وو", f: "ba túlee woo"}]], + [[{p: "به تلې وه", f: "ba túle wa"}], [{p: "به تلې وې", f: "ba túle we"}]], + ], + long: [ + [[{p: "به تللی وم", f: "ba tlúley wum"}], [{p: "به تللي وو", f: "ba tlúlee woo"}]], + [[{p: "به تللې وم", f: "ba tlúle wum"}], [{p: "به تللې وو", f: "ba tlúle woo"}]], + [[{p: "به تللی وې", f: "ba tlúley we"}], [{p: "به تللي وئ", f: "ba tlúlee weyy"}]], + [[{p: "به تللې وې", f: "ba tlúle we"}], [{p: "به تللې وئ", f: "ba tlúle weyy"}]], + [[{p: "به تللی و", f: "ba tlúley wo"}], [{p: "به تللي وو", f: "ba tlúlee woo"}]], + [[{p: "به تللې وه", f: "ba tlúle wa"}], [{p: "به تللې وې", f: "ba tlúle we"}]], + ], + }, + pastSubjunctiveHypothetical: { + short: [ + [[{p: "به تلی وای", f: "ba túley waay"}], [{p: "به تلي وای", f: "ba túlee waay"}]], + [[{p: "به تلې وای", f: "ba túle waay"}], [{p: "به تلې وای", f: "ba túle waay"}]], + [[{p: "به تلی وای", f: "ba túley waay"}], [{p: "به تلي وای", f: "ba túlee waay"}]], + [[{p: "به تلې وای", f: "ba túle waay"}], [{p: "به تلې وای", f: "ba túle waay"}]], + [[{p: "به تلی وای", f: "ba túley waay"}], [{p: "به تلي وای", f: "ba túlee waay"}]], + [[{p: "به تلې وای", f: "ba túle waay"}], [{p: "به تلې وای", f: "ba túle waay"}]], + ], + long: [ + [[{p: "به تللی وای", f: "ba tlúley waay"}], [{p: "به تللي وای", f: "ba tlúlee waay"}]], + [[{p: "به تللې وای", f: "ba tlúle waay"}], [{p: "به تللې وای", f: "ba tlúle waay"}]], + [[{p: "به تللی وای", f: "ba tlúley waay"}], [{p: "به تللي وای", f: "ba tlúlee waay"}]], + [[{p: "به تللې وای", f: "ba tlúle waay"}], [{p: "به تللې وای", f: "ba tlúle waay"}]], + [[{p: "به تللی وای", f: "ba tlúley waay"}], [{p: "به تللي وای", f: "ba tlúlee waay"}]], + [[{p: "به تللې وای", f: "ba tlúle waay"}], [{p: "به تللې وای", f: "ba tlúle waay"}]], + ], + }, + }, +}; + +export const stativeAux = { + transitive: kawulStat, + intransitive: kedulStat, +}; + +export const dynamicAux = { + transative: kawulDyn, + intransitive: kedulDyn, +}; + +export const warkawul: T.VerbConjugation = { + info: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "ورکول", f: "wărkawul" }, + short: { p: "ورکو", f: "wărkaw" }, + }, + perfective: { + long: { p: "ورکړل", f: "wărkRul" }, + short: { p: "ورکړ", f: "wărkR" }, + mini: { p: "ورک", f: "wărk" }, + }, + }, + stem: { + imperfective: { p: "ورکو", f: "wărkaw" }, + perfective: { + long: { p: "ورکړ", f: "wărkR" }, + short: { p: "ورک", f: "wărk" }, + }, + }, + participle: { + present: { p: "ورکوونکی", f: "wărkawóonkey" }, + past: { p: "ورکړی", f: "wărkúRey" }, + }, + }, + imperfective: { + nonImperative: [ + [[{p: "ورکوم", f: "wărkawum"}], [{p: "ورکوو", f: "wărkawoo"}]], + [[{p: "ورکوم", f: "wărkawum"}], [{p: "ورکوو", f: "wărkawoo"}]], + [[{p: "ورکوې", f: "wărkawe"}], [{p: "ورکوئ", f: "wărkaweyy"}]], + [[{p: "ورکوې", f: "wărkawe"}], [{p: "ورکوئ", f: "wărkaweyy"}]], + [[{p: "ورکوي", f: "wărkawee"}], [{p: "ورکوي", f: "wărkawee"}]], + [[{p: "ورکوي", f: "wărkawee"}], [{p: "ورکوي", f: "wărkawee"}]], + ], + future: [ + [[{p: "به ورکوم", f: "ba wărkawum"}], [{p: "به ورکوو", f: "ba wărkawoo"}]], + [[{p: "به ورکوم", f: "ba wărkawum"}], [{p: "به ورکوو", f: "ba wărkawoo"}]], + [[{p: "به ورکوې", f: "ba wărkawe"}], [{p: "به ورکوئ", f: "ba wărkaweyy"}]], + [[{p: "به ورکوې", f: "ba wărkawe"}], [{p: "به ورکوئ", f: "ba wărkaweyy"}]], + [[{p: "به ورکوي", f: "ba wărkawee"}], [{p: "به ورکوي", f: "ba wărkawee"}]], + [[{p: "به ورکوي", f: "ba wărkawee"}], [{p: "به ورکوي", f: "ba wărkawee"}]], + ], + imperative: [ + [[{ p: "ورکوه", f: "wărkawá" }], [{ p: "ورکوئ", f: "wărkawéyy" }]], + [[{ p: "ورکوه", f: "wărkawá" }], [{ p: "ورکوئ", f: "wărkawéyy" }]] + ], + past: { + short: [ + [[{p: "ورکوم", f: "wărkawum"}], [{p: "ورکوو", f: "wărkawoo"}]], + [[{p: "ورکوم", f: "wărkawum"}], [{p: "ورکوو", f: "wărkawoo"}]], + [[{p: "ورکوې", f: "wărkawe"}], [{p: "ورکوئ", f: "wărkaweyy"}]], + [[{p: "ورکوې", f: "wărkawe"}], [{p: "ورکوئ", f: "wărkaweyy"}]], + [[{p: "ورکاوه", f: "wărkaawu"}], [{p: "ورکول", f: "wărkawul"}]], + [[{p: "ورکوه", f: "wărkawa"}], [{p: "ورکوې", f: "wărkawe"}]], + ], + long: [ + [[{p: "ورکولم", f: "wărkawulum"}], [{p: "ورکولو", f: "wărkawuloo"}]], + [[{p: "ورکولم", f: "wărkawulum"}], [{p: "ورکولو", f: "wărkawuloo"}]], + [[{p: "ورکولې", f: "wărkawule"}], [{p: "ورکولئ", f: "wărkawuleyy"}]], + [[{p: "ورکولې", f: "wărkawule"}], [{p: "ورکولئ", f: "wărkawuleyy"}]], + [[{p: "ورکوله", f: "wărkawulu"}, {p: "ورکولو", f: "wărkawulo"}], [{p: "ورکول", f: "wărkawul"}]], + [[{p: "ورکوله", f: "wărkawula"}], [{p: "ورکولې", f: "wărkawule"}]], + ], + }, + modal: { + nonImperative: { + long: [ + [[{ p: "ورکولی شم", f: "wărkawúley shum" }], [{ p: "ورکولی شو", f: "wărkawúley shoo" }]], + [[{ p: "ورکولی شم", f: "wărkawúley shum" }], [{ p: "ورکولی شو", f: "wărkawúley shoo" }]], + [[{ p: "ورکولی شې", f: "wărkawúley she" }], [{ p: "ورکولی شئ", f: "wărkawúley sheyy" }]], + [[{ p: "ورکولی شې", f: "wărkawúley she" }], [{ p: "ورکولی شئ", f: "wărkawúley sheyy" }]], + [[{ p: "ورکولی شي", f: "wărkawúley shee" }], [{ p: "ورکولی شي", f: "wărkawúley shee" }]], + [[{ p: "ورکولی شي", f: "wărkawúley shee" }], [{ p: "ورکولی شي", f: "wărkawúley shee" }]], + ], + short: [ + [[{ p: "ورکوی شم", f: "wărkawéy shum" }], [{ p: "ورکوی شو", f: "wărkawéy shoo" }]], + [[{ p: "ورکوی شم", f: "wărkawéy shum" }], [{ p: "ورکوی شو", f: "wărkawéy shoo" }]], + [[{ p: "ورکوی شې", f: "wărkawéy she" }], [{ p: "ورکوی شئ", f: "wărkawéy sheyy" }]], + [[{ p: "ورکوی شې", f: "wărkawéy she" }], [{ p: "ورکوی شئ", f: "wărkawéy sheyy" }]], + [[{ p: "ورکوی شي", f: "wărkawéy shee" }], [{ p: "ورکوی شي", f: "wărkawéy shee" }]], + [[{ p: "ورکوی شي", f: "wărkawéy shee" }], [{ p: "ورکوی شي", f: "wărkawéy shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به ورکولی شم", f: "ba wărkawúley shum" }], [{ p: "به ورکولی شو", f: "ba wărkawúley shoo" }]], + [[{ p: "به ورکولی شم", f: "ba wărkawúley shum" }], [{ p: "به ورکولی شو", f: "ba wărkawúley shoo" }]], + [[{ p: "به ورکولی شې", f: "ba wărkawúley she" }], [{ p: "به ورکولی شئ", f: "ba wărkawúley sheyy" }]], + [[{ p: "به ورکولی شې", f: "ba wărkawúley she" }], [{ p: "به ورکولی شئ", f: "ba wărkawúley sheyy" }]], + [[{ p: "به ورکولی شي", f: "ba wărkawúley shee" }], [{ p: "به ورکولی شي", f: "ba wărkawúley shee" }]], + [[{ p: "به ورکولی شي", f: "ba wărkawúley shee" }], [{ p: "به ورکولی شي", f: "ba wărkawúley shee" }]], + ], + short: [ + [[{ p: "به ورکوی شم", f: "ba wărkawéy shum" }], [{ p: "به ورکوی شو", f: "ba wărkawéy shoo" }]], + [[{ p: "به ورکوی شم", f: "ba wărkawéy shum" }], [{ p: "به ورکوی شو", f: "ba wărkawéy shoo" }]], + [[{ p: "به ورکوی شې", f: "ba wărkawéy she" }], [{ p: "به ورکوی شئ", f: "ba wărkawéy sheyy" }]], + [[{ p: "به ورکوی شې", f: "ba wărkawéy she" }], [{ p: "به ورکوی شئ", f: "ba wărkawéy sheyy" }]], + [[{ p: "به ورکوی شي", f: "ba wărkawéy shee" }], [{ p: "به ورکوی شي", f: "ba wărkawéy shee" }]], + [[{ p: "به ورکوی شي", f: "ba wărkawéy shee" }], [{ p: "به ورکوی شي", f: "ba wărkawéy shee" }]], + ], + }, + past: { + long: [ + [[{ p: "ورکولی شوم", f: "wărkawúley shwum" }], [{ p: "ورکولی شو", f: "wărkawúley shoo" }]], + [[{ p: "ورکولی شوم", f: "wărkawúley shwum" }], [{ p: "ورکولی شو", f: "wărkawúley shoo" }]], + [[{ p: "ورکولی شوې", f: "wărkawúley shwe" }], [{ p: "ورکولی شوئ", f: "wărkawúley shweyy" }]], + [[{ p: "ورکولی شوې", f: "wărkawúley shwe" }], [{ p: "ورکولی شوئ", f: "wărkawúley shweyy" }]], + [[{ p: "ورکولی شو", f: "wărkawúley sho" }], [{ p: "ورکولی شول", f: "wărkawúley shwul" }, { p: "ورکولی شو", f: "wărkawúley shoo" }]], + [[{ p: "ورکولی شوه", f: "wărkawúley shwa" }], [{ p: "ورکولی شولې", f: "wărkawúley shwule" }, { p: "ورکولی شوې", f: "wărkawúley shwe" }]], + ], + short: [ + [[{ p: "ورکوی شوم", f: "wărkawéy shwum" }], [{ p: "ورکوی شو", f: "wărkawéy shoo" }]], + [[{ p: "ورکوی شوم", f: "wărkawéy shwum" }], [{ p: "ورکوی شو", f: "wărkawéy shoo" }]], + [[{ p: "ورکوی شوې", f: "wărkawéy shwe" }], [{ p: "ورکوی شوئ", f: "wărkawéy shweyy" }]], + [[{ p: "ورکوی شوې", f: "wărkawéy shwe" }], [{ p: "ورکوی شوئ", f: "wărkawéy shweyy" }]], + [[{ p: "ورکوی شو", f: "wărkawéy sho" }], [{ p: "ورکوی شول", f: "wărkawéy shwul" }, { p: "ورکوی شو", f: "wărkawéy shoo" }]], + [[{ p: "ورکوی شوه", f: "wărkawéy shwa" }], [{ p: "ورکوی شولې", f: "wărkawéy shwule" }, { p: "ورکوی شوې", f: "wărkawéy shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "ورکولی شوی", f: "wărkawúley shwey" }], [{ p: "ورکولی شوی", f: "wărkawúley shwey" }]], + [[{ p: "ورکولی شوی", f: "wărkawúley shwey" }], [{ p: "ورکولی شوی", f: "wărkawúley shwey" }]], + [[{ p: "ورکولی شوی", f: "wărkawúley shwey" }], [{ p: "ورکولی شوی", f: "wărkawúley shwey" }]], + [[{ p: "ورکولی شوی", f: "wărkawúley shwey" }], [{ p: "ورکولی شوی", f: "wărkawúley shwey" }]], + [[{ p: "ورکولی شوی", f: "wărkawúley shwey" }], [{ p: "ورکولی شوی", f: "wărkawúley shwey" }]], + [[{ p: "ورکولی شوی", f: "wărkawúley shwey" }], [{ p: "ورکولی شوی", f: "wărkawúley shwey" }]], + ], + short: [ + [[{ p: "ورکوی شوی", f: "wărkawéy shwey" }], [{ p: "ورکوی شوی", f: "wărkawéy shwey" }]], + [[{ p: "ورکوی شوی", f: "wărkawéy shwey" }], [{ p: "ورکوی شوی", f: "wărkawéy shwey" }]], + [[{ p: "ورکوی شوی", f: "wărkawéy shwey" }], [{ p: "ورکوی شوی", f: "wărkawéy shwey" }]], + [[{ p: "ورکوی شوی", f: "wărkawéy shwey" }], [{ p: "ورکوی شوی", f: "wărkawéy shwey" }]], + [[{ p: "ورکوی شوی", f: "wărkawéy shwey" }], [{ p: "ورکوی شوی", f: "wărkawéy shwey" }]], + [[{ p: "ورکوی شوی", f: "wărkawéy shwey" }], [{ p: "ورکوی شوی", f: "wărkawéy shwey" }]], + ], + }, + }, + }, + perfective: { + nonImperative: { + long: [ + [[{p: "ورکړم", f: "wărkRum"}], [{p: "ورکړو", f: "wărkRoo"}]], + [[{p: "ورکړم", f: "wărkRum"}], [{p: "ورکړو", f: "wărkRoo"}]], + [[{p: "ورکړې", f: "wărkRe"}], [{p: "ورکړئ", f: "wărkReyy"}]], + [[{p: "ورکړې", f: "wărkRe"}], [{p: "ورکړئ", f: "wărkReyy"}]], + [[{p: "ورکړي", f: "wărkRee"}], [{p: "ورکړي", f: "wărkRee"}]], + [[{p: "ورکړي", f: "wărkRee"}], [{p: "ورکړي", f: "wărkRee"}]], + ], + short: [ + [[{p: "ورکم", f: "wărkum"}], [{p: "ورکو", f: "wărkoo"}]], + [[{p: "ورکم", f: "wărkum"}], [{p: "ورکو", f: "wărkoo"}]], + [[{p: "ورکې", f: "wărke"}], [{p: "ورکئ", f: "wărkeyy"}]], + [[{p: "ورکې", f: "wărke"}], [{p: "ورکئ", f: "wărkeyy"}]], + [[{p: "ورکي", f: "wărkee"}], [{p: "ورکي", f: "wărkee"}]], + [[{p: "ورکي", f: "wărkee"}], [{p: "ورکي", f: "wărkee"}]], + ], + }, + future: { + long: [ + [[{p: "به ورکړم", f: "ba wărkRum"}], [{p: "به ورکړو", f: "ba wărkRoo"}]], + [[{p: "به ورکړم", f: "ba wărkRum"}], [{p: "به ورکړو", f: "ba wărkRoo"}]], + [[{p: "به ورکړې", f: "ba wărkRe"}], [{p: "به ورکړئ", f: "ba wărkReyy"}]], + [[{p: "به ورکړې", f: "ba wărkRe"}], [{p: "به ورکړئ", f: "ba wărkReyy"}]], + [[{p: "به ورکړي", f: "ba wărkRee"}], [{p: "به ورکړي", f: "ba wărkRee"}]], + [[{p: "به ورکړي", f: "ba wărkRee"}], [{p: "به ورکړي", f: "ba wărkRee"}]], + ], + short: [ + [[{p: "به ورکم", f: "ba wărkum"}], [{p: "به ورکو", f: "ba wărkoo"}]], + [[{p: "به ورکم", f: "ba wărkum"}], [{p: "به ورکو", f: "ba wărkoo"}]], + [[{p: "به ورکې", f: "ba wărke"}], [{p: "به ورکئ", f: "ba wărkeyy"}]], + [[{p: "به ورکې", f: "ba wărke"}], [{p: "به ورکئ", f: "ba wărkeyy"}]], + [[{p: "به ورکي", f: "ba wărkee"}], [{p: "به ورکي", f: "ba wărkee"}]], + [[{p: "به ورکي", f: "ba wărkee"}], [{p: "به ورکي", f: "ba wărkee"}]], + ], + }, + imperative: { + long: [ + [[{ p: "ورکړه", f: "wărkRa" }], [{ p: "ورکړئ", f: "wărkReyy" }]], + [[{ p: "ورکړه", f: "wărkRa" }], [{ p: "ورکړئ", f: "wărkReyy" }]] + ], + short: [ + [[{ p: "ورکه", f: "wărka" }], [{ p: "ورکئ", f: "wărkeyy" }]], + [[{ p: "ورکه", f: "wărka" }], [{ p: "ورکئ", f: "wărkeyy" }]], + ], + }, + past: { + mini: [ + [[{p: "ورکم", f: "wărkum"}], [{p: "ورکو", f: "wărkoo"}]], + [[{p: "ورکم", f: "wărkum"}], [{p: "ورکو", f: "wărkoo"}]], + [[{p: "ورکې", f: "wărke"}], [{p: "ورکئ", f: "wărkeyy"}]], + [[{p: "ورکې", f: "wărke"}], [{p: "ورکئ", f: "wărkeyy"}]], + [[{p: "ورکه", f: "wărku"}, {p: "ورکو", f: "wărko"}], [{p: "ورکړل", f: "wărkRul"}, { p: "ورکو", f: "wărkoo" }]], + [[{p: "ورکه", f: "wărka"}], [{p: "ورکې", f: "wărke"}]], + ], + short: [ + [[{p: "ورکړم", f: "wărkRum"}], [{p: "ورکړو", f: "wărkRoo"}]], + [[{p: "ورکړم", f: "wărkRum"}], [{p: "ورکړو", f: "wărkRoo"}]], + [[{p: "ورکړې", f: "wărkRe"}], [{p: "ورکړئ", f: "wărkReyy"}]], + [[{p: "ورکړې", f: "wărkRe"}], [{p: "ورکړئ", f: "wărkReyy"}]], + [[{p: "ورکړه", f: "wărkRu"}, {p: "ورکړو", f: "wărkRo"}, {p: "ورکړ", f: "wărkuR"}], [{p: "ورکړل", f: "wărkRul"}, {p: "ورکړو", f: "wărkRoo" }]], + [[{p: "ورکړه", f: "wărkRa"}], [{p: "ورکړې", f: "wărkRe"}]], + ], + long: [ + [[{p: "ورکړلم", f: "wărkRulum"}], [{p: "ورکړلو", f: "wărkRuloo"}]], + [[{p: "ورکړلم", f: "wărkRulum"}], [{p: "ورکړلو", f: "wărkRuloo"}]], + [[{p: "ورکړلې", f: "wărkRule"}], [{p: "ورکړلئ", f: "wărkRuleyy"}]], + [[{p: "ورکړلې", f: "wărkRule"}], [{p: "ورکړلئ", f: "wărkRuleyy"}]], + [[{p: "ورکړله", f: "wărkRulu"}, {p: "ورکړلو", f: "wărkRulo"}], [{p: "ورکړل", f: "wărkRul"}, {p: "ورکړلو", f: "wărkRuloo"}]], + [[{p: "ورکړله", f: "wărkRula"}], [{p: "ورکړلې", f: "wărkRule"}]], + ], + }, + modal: { + nonImperative: { + long: [ + [[{ p: "ورکړلی شم", f: "wărkRúley shum" }], [{ p: "ورکړلی شو", f: "wărkRúley shoo" }]], + [[{ p: "ورکړلی شم", f: "wărkRúley shum" }], [{ p: "ورکړلی شو", f: "wărkRúley shoo" }]], + [[{ p: "ورکړلی شې", f: "wărkRúley she" }], [{ p: "ورکړلی شئ", f: "wărkRúley sheyy" }]], + [[{ p: "ورکړلی شې", f: "wărkRúley she" }], [{ p: "ورکړلی شئ", f: "wărkRúley sheyy" }]], + [[{ p: "ورکړلی شي", f: "wărkRúley shee" }], [{ p: "ورکړلی شي", f: "wărkRúley shee" }]], + [[{ p: "ورکړلی شي", f: "wărkRúley shee" }], [{ p: "ورکړلی شي", f: "wărkRúley shee" }]], + ], + short: [ + [[{ p: "ورکړی شم", f: "wărkRéy shum" }], [{ p: "ورکړی شو", f: "wărkRéy shoo" }]], + [[{ p: "ورکړی شم", f: "wărkRéy shum" }], [{ p: "ورکړی شو", f: "wărkRéy shoo" }]], + [[{ p: "ورکړی شې", f: "wărkRéy she" }], [{ p: "ورکړی شئ", f: "wărkRéy sheyy" }]], + [[{ p: "ورکړی شې", f: "wărkRéy she" }], [{ p: "ورکړی شئ", f: "wărkRéy sheyy" }]], + [[{ p: "ورکړی شي", f: "wărkRéy shee" }], [{ p: "ورکړی شي", f: "wărkRéy shee" }]], + [[{ p: "ورکړی شي", f: "wărkRéy shee" }], [{ p: "ورکړی شي", f: "wărkRéy shee" }]], + ], + }, + future: { + long: [ + [[{ p: "به ورکړلی شم", f: "ba wărkRúley shum" }], [{ p: "به ورکړلی شو", f: "ba wărkRúley shoo" }]], + [[{ p: "به ورکړلی شم", f: "ba wărkRúley shum" }], [{ p: "به ورکړلی شو", f: "ba wărkRúley shoo" }]], + [[{ p: "به ورکړلی شې", f: "ba wărkRúley she" }], [{ p: "به ورکړلی شئ", f: "ba wărkRúley sheyy" }]], + [[{ p: "به ورکړلی شې", f: "ba wărkRúley she" }], [{ p: "به ورکړلی شئ", f: "ba wărkRúley sheyy" }]], + [[{ p: "به ورکړلی شي", f: "ba wărkRúley shee" }], [{ p: "به ورکړلی شي", f: "ba wărkRúley shee" }]], + [[{ p: "به ورکړلی شي", f: "ba wărkRúley shee" }], [{ p: "به ورکړلی شي", f: "ba wărkRúley shee" }]], + ], + short: [ + [[{ p: "به ورکړی شم", f: "ba wărkRéy shum" }], [{ p: "به ورکړی شو", f: "ba wărkRéy shoo" }]], + [[{ p: "به ورکړی شم", f: "ba wărkRéy shum" }], [{ p: "به ورکړی شو", f: "ba wărkRéy shoo" }]], + [[{ p: "به ورکړی شې", f: "ba wărkRéy she" }], [{ p: "به ورکړی شئ", f: "ba wărkRéy sheyy" }]], + [[{ p: "به ورکړی شې", f: "ba wărkRéy she" }], [{ p: "به ورکړی شئ", f: "ba wărkRéy sheyy" }]], + [[{ p: "به ورکړی شي", f: "ba wărkRéy shee" }], [{ p: "به ورکړی شي", f: "ba wărkRéy shee" }]], + [[{ p: "به ورکړی شي", f: "ba wărkRéy shee" }], [{ p: "به ورکړی شي", f: "ba wărkRéy shee" }]], + ], + }, + past: { + long: [ + [[{ p: "ورکړلی شوم", f: "wărkRúley shwum" }], [{ p: "ورکړلی شو", f: "wărkRúley shoo" }]], + [[{ p: "ورکړلی شوم", f: "wărkRúley shwum" }], [{ p: "ورکړلی شو", f: "wărkRúley shoo" }]], + [[{ p: "ورکړلی شوې", f: "wărkRúley shwe" }], [{ p: "ورکړلی شوئ", f: "wărkRúley shweyy" }]], + [[{ p: "ورکړلی شوې", f: "wărkRúley shwe" }], [{ p: "ورکړلی شوئ", f: "wărkRúley shweyy" }]], + [[{ p: "ورکړلی شو", f: "wărkRúley sho" }], [{ p: "ورکړلی شول", f: "wărkRúley shwul" }, { p: "ورکړلی شو", f: "wărkRúley shoo" }]], + [[{ p: "ورکړلی شوه", f: "wărkRúley shwa" }], [{ p: "ورکړلی شولې", f: "wărkRúley shwule" }, { p: "ورکړلی شوې", f: "wărkRúley shwe" }]], + ], + short: [ + [[{ p: "ورکړی شوم", f: "wărkRéy shwum" }], [{ p: "ورکړی شو", f: "wărkRéy shoo" }]], + [[{ p: "ورکړی شوم", f: "wărkRéy shwum" }], [{ p: "ورکړی شو", f: "wărkRéy shoo" }]], + [[{ p: "ورکړی شوې", f: "wărkRéy shwe" }], [{ p: "ورکړی شوئ", f: "wărkRéy shweyy" }]], + [[{ p: "ورکړی شوې", f: "wărkRéy shwe" }], [{ p: "ورکړی شوئ", f: "wărkRéy shweyy" }]], + [[{ p: "ورکړی شو", f: "wărkRéy sho" }], [{ p: "ورکړی شول", f: "wărkRéy shwul" }, { p: "ورکړی شو", f: "wărkRéy shoo" }]], + [[{ p: "ورکړی شوه", f: "wărkRéy shwa" }], [{ p: "ورکړی شولې", f: "wărkRéy shwule" }, { p: "ورکړی شوې", f: "wărkRéy shwe" }]], + ], + }, + hypotheticalPast: { + long: [ + [[{ p: "ورکړلی شوی", f: "wărkRúley shwey" }], [{ p: "ورکړلی شوی", f: "wărkRúley shwey" }]], + [[{ p: "ورکړلی شوی", f: "wărkRúley shwey" }], [{ p: "ورکړلی شوی", f: "wărkRúley shwey" }]], + [[{ p: "ورکړلی شوی", f: "wărkRúley shwey" }], [{ p: "ورکړلی شوی", f: "wărkRúley shwey" }]], + [[{ p: "ورکړلی شوی", f: "wărkRúley shwey" }], [{ p: "ورکړلی شوی", f: "wărkRúley shwey" }]], + [[{ p: "ورکړلی شوی", f: "wărkRúley shwey" }], [{ p: "ورکړلی شوی", f: "wărkRúley shwey" }]], + [[{ p: "ورکړلی شوی", f: "wărkRúley shwey" }], [{ p: "ورکړلی شوی", f: "wărkRúley shwey" }]], + ], + short: [ + [[{ p: "ورکړی شوی", f: "wărkRéy shwey" }], [{ p: "ورکړی شوی", f: "wărkRéy shwey" }]], + [[{ p: "ورکړی شوی", f: "wărkRéy shwey" }], [{ p: "ورکړی شوی", f: "wărkRéy shwey" }]], + [[{ p: "ورکړی شوی", f: "wărkRéy shwey" }], [{ p: "ورکړی شوی", f: "wărkRéy shwey" }]], + [[{ p: "ورکړی شوی", f: "wărkRéy shwey" }], [{ p: "ورکړی شوی", f: "wărkRéy shwey" }]], + [[{ p: "ورکړی شوی", f: "wărkRéy shwey" }], [{ p: "ورکړی شوی", f: "wărkRéy shwey" }]], + [[{ p: "ورکړی شوی", f: "wărkRéy shwey" }], [{ p: "ورکړی شوی", f: "wărkRéy shwey" }]], + ], + }, + }, + }, + hypothetical: { + short: [ + [[{ p: "ورکوی", f: "wărkawéy" }], [{ p: "ورکوی", f: "wărkawéy" }]], + [[{ p: "ورکوی", f: "wărkawéy" }], [{ p: "ورکوی", f: "wărkawéy" }]], + [[{ p: "ورکوی", f: "wărkawéy" }], [{ p: "ورکوی", f: "wărkawéy" }]], + [[{ p: "ورکوی", f: "wărkawéy" }], [{ p: "ورکوی", f: "wărkawéy" }]], + [[{ p: "ورکوی", f: "wărkawéy" }], [{ p: "ورکوی", f: "wărkawéy" }]], + [[{ p: "ورکوی", f: "wărkawéy" }], [{ p: "ورکوی", f: "wărkawéy" }]], + ], + long: [ + [[{ p: "ورکولی", f: "wărkawúley" }], [{ p: "ورکولی", f: "wărkawúley" }]], + [[{ p: "ورکولی", f: "wărkawúley" }], [{ p: "ورکولی", f: "wărkawúley" }]], + [[{ p: "ورکولی", f: "wărkawúley" }], [{ p: "ورکولی", f: "wărkawúley" }]], + [[{ p: "ورکولی", f: "wărkawúley" }], [{ p: "ورکولی", f: "wărkawúley" }]], + [[{ p: "ورکولی", f: "wărkawúley" }], [{ p: "ورکولی", f: "wărkawúley" }]], + [[{ p: "ورکولی", f: "wărkawúley" }], [{ p: "ورکولی", f: "wărkawúley" }]], + ], + }, + participle: { + past: { + masc: [ + [{ p: "ورکړی", f: "wărkúRey" }], + [{ p: "ورکړي", f: "wărkúRee" }], + [{ p: "ورکړیو", f: "wărkúRiyo" }, { p: "ورکړو", f: "wărkúRo" }], + ], + fem: [ + [{ p: "ورکړې", f: "wărkúRe" }], + [{ p: "ورکړې", f: "wărkúRe" }], + [{ p: "ورکړو", f: "wărkúRo" }], + ], + }, + present: { + masc: [ + [{ p: "ورکوونکی", f: "wărkawóonkey" }], + [{ p: "ورکوونکي", f: "wărkawóonkee" }], + [{ p: "ورکوونکیو", f: "wărkawóonkiyo" }, { p: "ورکوونکو", f: "wărkedóonko" }], + ], + fem: [ + [{ p: "ورکوونکې", f: "wărkawóonke" }], + [{ p: "ورکوونکې", f: "wărkawóonke" }], + [{ p: "ورکوونکو", f: "wărkawóonko" }], + ], + }, + }, + perfect: { + halfPerfect: [ + [[{p: "ورکړی", f: "wărkúRey"}], [{p: "ورکړي", f: "wărkúRee"}]], + [[{p: "ورکړې", f: "wărkúRe"}], [{p: "ورکړې", f: "wărkúRe"}]], + [[{p: "ورکړی", f: "wărkúRey"}], [{p: "ورکړي", f: "wărkúRee"}]], + [[{p: "ورکړې", f: "wărkúRe"}], [{p: "ورکړې", f: "wărkúRe"}]], + [[{p: "ورکړی", f: "wărkúRey"}], [{p: "ورکړي", f: "wărkúRee"}]], + [[{p: "ورکړې", f: "wărkúRe"}], [{p: "ورکړې", f: "wărkúRe"}]], + ], + past: [ + [[{p: "ورکړی وم", f: "wărkúRey wum"}], [{p: "ورکړي وو", f: "wărkúRee woo"}]], + [[{p: "ورکړې وم", f: "wărkúRe wum"}], [{p: "ورکړې وو", f: "wărkúRe woo"}]], + [[{p: "ورکړی وې", f: "wărkúRey we"}], [{p: "ورکړي وئ", f: "wărkúRee weyy"}]], + [[{p: "ورکړې وې", f: "wărkúRe we"}], [{p: "ورکړې وئ", f: "wărkúRe weyy"}]], + [[{p: "ورکړی و", f: "wărkúRey wo"}], [{p: "ورکړي وو", f: "wărkúRee woo"}]], + [[{p: "ورکړې وه", f: "wărkúRe wa"}], [{p: "ورکړې وې", f: "wărkúRe we"}]], + ], + present: [ + [[{p: "ورکړی یم", f: "wărkúRey yum"}], [{p: "ورکړي یو", f: "wărkúRee yoo"}]], + [[{p: "ورکړې یم", f: "wărkúRe yum"}], [{p: "ورکړې یو", f: "wărkúRe yoo"}]], + [[{p: "ورکړی یې", f: "wărkúRey ye"}], [{p: "ورکړي یئ", f: "wărkúRee yeyy"}]], + [[{p: "ورکړې یې", f: "wărkúRe ye"}], [{p: "ورکړې یئ", f: "wărkúRe yeyy"}]], + [[{p: "ورکړی دی", f: "wărkúRey dey"}], [{p: "ورکړي دي", f: "wărkúRee dee"}]], + [[{p: "ورکړې ده", f: "wărkúRe da"}], [{p: "ورکړې دي", f: "wărkúRe dee"}]], + ], + subjunctive: [ + [[{p: "ورکړی یم", f: "wărkúRey yum"}], [{p: "ورکړي یو", f: "wărkúRee yoo"}]], + [[{p: "ورکړې یم", f: "wărkúRe yum"}], [{p: "ورکړې یو", f: "wărkúRe yoo"}]], + [[{p: "ورکړی یې", f: "wărkúRey ye"}], [{p: "ورکړي یئ", f: "wărkúRee yeyy"}]], + [[{p: "ورکړې یې", f: "wărkúRe ye"}], [{p: "ورکړې یئ", f: "wărkúRe yeyy"}]], + [[{p: "ورکړی وي", f: "wărkúRey wee"}], [{p: "ورکړي وي", f: "wărkúRee wee"}]], + [[{p: "ورکړې وي", f: "wărkúRe wee"}], [{p: "ورکړې وي", f: "wărkúRe wee"}]], + ], + future: [ + [[{p: "به ورکړی یم", f: "ba wărkúRey yum"}], [{p: "به ورکړي یو", f: "ba wărkúRee yoo"}]], + [[{p: "به ورکړې یم", f: "ba wărkúRe yum"}], [{p: "به ورکړې یو", f: "ba wărkúRe yoo"}]], + [[{p: "به ورکړی یې", f: "ba wărkúRey ye"}], [{p: "به ورکړي یئ", f: "ba wărkúRee yeyy"}]], + [[{p: "به ورکړې یې", f: "ba wărkúRe ye"}], [{p: "به ورکړې یئ", f: "ba wărkúRe yeyy"}]], + [[{p: "به ورکړی وي", f: "ba wărkúRey wee"}], [{p: "به ورکړي وي", f: "ba wărkúRee wee"}]], + [[{p: "به ورکړې وي", f: "ba wărkúRe wee"}], [{p: "به ورکړې وي", f: "ba wărkúRe wee"}]], + ], + affirmational: [ + [[{p: "به ورکړی وم", f: "ba wărkúRey wum"}], [{p: "به ورکړي وو", f: "ba wărkúRee woo"}]], + [[{p: "به ورکړې وم", f: "ba wărkúRe wum"}], [{p: "به ورکړې وو", f: "ba wărkúRe woo"}]], + [[{p: "به ورکړی وې", f: "ba wărkúRey we"}], [{p: "به ورکړي وئ", f: "ba wărkúRee weyy"}]], + [[{p: "به ورکړې وې", f: "ba wărkúRe we"}], [{p: "به ورکړې وئ", f: "ba wărkúRe weyy"}]], + [[{p: "به ورکړی و", f: "ba wărkúRey wo"}], [{p: "به ورکړي وو", f: "ba wărkúRee woo"}]], + [[{p: "به ورکړې وه", f: "ba wărkúRe wa"}], [{p: "به ورکړې وې", f: "ba wărkúRe we"}]], + ], + pastSubjunctiveHypothetical: [ + [[{p: "ورکړی وای", f: "ba wărkúRey"}], [{p: "به ورکړي", f: "ba wărkúRee"}]], + [[{p: "ورکړې وای", f: "ba wărkúRe"}], [{p: "به ورکړې", f: "ba wărkúRe"}]], + [[{p: "ورکړی وای", f: "ba wărkúRey"}], [{p: "به ورکړي", f: "ba wărkúRee"}]], + [[{p: "ورکړې وای", f: "ba wărkúRe"}], [{p: "به ورکړې", f: "ba wărkúRe"}]], + [[{p: "ورکړی وای", f: "ba wărkúRey"}], [{p: "به ورکړي", f: "ba wărkúRee"}]], + [[{p: "ورکړې وای", f: "ba wărkúRe"}], [{p: "به ورکړې", f: "ba wărkúRe"}]], + ], + }, + // passive: { + // imperfective: { + // nonImperative: [ + // [{p: "ورکول کېږم", f: "wărkawul keGum"}, {p: "ورکول کېږو", f: "wărkawul keGoo"}], + // [{p: "ورکول کېږې", f: "wărkawul keGe"}, {p: "ورکول کېږئ", f: "wărkawul keGeyy"}], + // [{p: "ورکول کېږي", f: "wărkawul keGee"}, {p: "ورکول کېږي", f: "wărkawul keGee"}], + // ], + // future: [ + // [{p: "به ورکول کېږم", f: "ba wărkawul keGum"}, {p: "به ورکول کېږو", f: "ba wărkawul keGoo"}], + // [{p: "به ورکول کېږې", f: "ba wărkawul keGe"}, {p: "به ورکول کېږئ", f: "ba wărkawul keGeyy"}], + // [{p: "به ورکول کېږي", f: "ba wărkawul keGee"}, {p: "به ورکول کېږي", f: "ba wărkawul keGee"}], + // ], + // past: { + // short: [ + // [[{p: "ورکول کېدم", f: "wărkawul kedum"}], [{p: "ورکول کېدو", f: "wărkawul kedoo"}]], + // [[{p: "ورکول کېدم", f: "wărkawul kedum"}], [{p: "ورکول کېدو", f: "wărkawul kedoo"}]], + // [[{p: "ورکول کېدې", f: "wărkawul kede"}], [{p: "ورکول کېدئ", f: "wărkawul kedeyy"}]], + // [[{p: "ورکول کېدې", f: "wărkawul kede"}], [{p: "ورکول کېدئ", f: "wărkawul kedeyy"}]], + // [[{p: "ورکول کېده", f: "wărkawul kedu"}, {p: "ورکول کېدو", f: "wărkawul kedo"}], [{p: "ورکول کېدل", f: "wărkawul kedul"}]], + // [[{p: "ورکول کېده", f: "wărkawul keda"}], [{p: "ورکول کېدې", f: "wărkawul kede"}]], + // ], + // long: [ + // [[{p: "ورکول کېدلم", f: "wărkawul kedulum"}], [{p: "ورکول کېدلو", f: "wărkawul keduloo"}]], + // [[{p: "ورکول کېدلم", f: "wărkawul kedulum"}], [{p: "ورکول کېدلو", f: "wărkawul keduloo"}]], + // [[{p: "ورکول کېدلې", f: "wărkawul kedule"}], [{p: "ورکول کېدلئ", f: "wărkawul keduleyy"}]], + // [[{p: "ورکول کېدلې", f: "wărkawul kedule"}], [{p: "ورکول کېدلئ", f: "wărkawul keduleyy"}]], + // [[{p: "ورکول کېدله", f: "wărkawul kedulu"}, {p: "ورکول کېدلو", f: "wărkawul kedulo"}], [{p: "ورکول کېدل", f: "wărkawul kedul"}]], + // [[{p: "ورکول کېدله", f: "wărkawul kedula"}], [{p: "ورکول کېدلې", f: "wărkawul kedule"}]], + // ], + // }, + // }, + // perfective: { + // nonImperative: { + // short: [ + // [{p: "ورکړلی کېږم", f: "wărkRuley keGum"}, {p: "ورکړلی کېږو", f: "wărkRuley keGoo"}], + // [{p: "ورکړلی کېږې", f: "wărkRuley keGe"}, {p: "ورکړلی کېږئ", f: "wărkRuley keGeyy"}], + // [{p: "ورکړلی کېږي", f: "wărkRuley keGee"}, {p: "ورکړلی کېږي", f: "wărkRuley keGee"}], + // ], + // long: [ + // [{p: "ورکړی کېږم", f: "wărkRey keGum"}, {p: "ورکړی کېږو", f: "wărkRey keGoo"}], + // [{p: "ورکړی کېږې", f: "wărkRey keGe"}, {p: "ورکړی کېږئ", f: "wărkRey keGeyy"}], + // [{p: "ورکړی کېږي", f: "wărkRey keGee"}, {p: "ورکړی کېږي", f: "wărkRey keGee"}], + // ], + // }, + // future: { + // short: [ + // [{p: "به ورکړلی کېږم", f: "ba wărkRuley keGum"}, {p: "به ورکړلی کېږو", f: "ba wărkRuley keGoo"}], + // [{p: "به ورکړلی کېږې", f: "ba wărkRuley keGe"}, {p: "به ورکړلی کېږئ", f: "ba wărkRuley keGeyy"}], + // [{p: "به ورکړلی کېږي", f: "ba wărkRuley keGee"}, {p: "به ورکړلی کېږي", f: "ba wărkRuley keGee"}], + // ], + // long: [ + // [{p: "به ورکړی کېږم", f: "ba wărkRey keGum"}, {p: "به ورکړی کېږو", f: "ba wărkRey keGoo"}], + // [{p: "به ورکړی کېږې", f: "ba wărkRey keGe"}, {p: "به ورکړی کېږئ", f: "ba wărkRey keGeyy"}], + // [{p: "به ورکړی کېږي", f: "ba wărkRey keGee"}, {p: "به ورکړی کېږي", f: "ba wărkRey keGee"}], + // ], + // }, + // past: { + // short: [ + // [[{p: "ورکړی شوم", f: "wărkRey shwum"}], [{p: "ورکړی شو", f: "wărkRey shoo"}]], + // [[{p: "ورکړی شوم", f: "wărkRey shwum"}], [{p: "ورکړی شو", f: "wărkRey shoo"}]], + // [[{p: "ورکړی شوې", f: "wărkRey shwe"}], [{p: "ورکړی شوئ", f: "wărkRey shweyy"}]], + // [[{p: "ورکړی شوې", f: "wărkRey shwe"}], [{p: "ورکړی شوئ", f: "wărkRey shweyy"}]], + // [[{p: "ورکړی شو", f: "wărkRey sho"}], [{p: "ورکړی شو", f: "wărkRey shoo"}, {p: "ورکړی شول", f: "wărkRey shwul"}]], + // [[{p: "ورکړی شوه", f: "wărkRey shwa"}], [{p: "ورکړی شوې", f: "wărkRey shwe"}]], + // ], + // long: [ + // [[{p: "ورکړلی شوم", f: "wărkRúley shwum"}], [{p: "ورکړلی شو", f: "wărkRúley shoo"}]], + // [[{p: "ورکړلی شوم", f: "wărkRúley shwum"}], [{p: "ورکړلی شو", f: "wărkRúley shoo"}]], + // [[{p: "ورکړلی شوې", f: "wărkRúley shwe"}], [{p: "ورکړلی شوئ", f: "wărkRúley shweyy"}]], + // [[{p: "ورکړلی شوې", f: "wărkRúley shwe"}], [{p: "ورکړلی شوئ", f: "wărkRúley shweyy"}]], + // [[{p: "ورکړلی شو", f: "wărkRúley sho"}], [{p: "ورکړلی شو", f: "wărkRúley shoo"}, {p: "ورکړلی شول", f: "wărkRúley shwul"}]], + // [[{p: "ورکړلی شوه", f: "wărkRúley shwa"}], [{p: "ورکړلی شوې", f: "wărkRúley shwe"}]], + // ], + // }, + // }, + // perfect: { + // halfPerfect: { + // short: [ + // [[{p: "ورکړی شوی", f: "wărkRéy shuwey"}], [{p: "ورکړی شوي", f: "wărkRéy shuwee"}]], + // [[{p: "ورکړی شوې", f: "wărkRéy shuwe"}], [{p: "ورکړی شوې", f: "wărkRéy shuwe"}]], + // [[{p: "ورکړی شوی", f: "wărkRéy shuwey"}], [{p: "ورکړی شوي", f: "wărkRéy shuwee"}]], + // [[{p: "ورکړی شوې", f: "wărkRéy shuwe"}], [{p: "ورکړی شوې", f: "wărkRéy shuwe"}]], + // [[{p: "ورکړی شوی", f: "wărkRéy shuwey"}], [{p: "ورکړی شوي", f: "wărkRéy shuwee"}]], + // [[{p: "ورکړی شوې", f: "wărkRéy shuwe"}], [{p: "ورکړی شوې", f: "wărkRéy shuwe"}]], + // ], + // long: [ + // [[{p: "ورکړلی شوی", f: "wărkRúley shuwey"}], [{p: "ورکړلی شوي", f: "wărkRúley shuwee"}]], + // [[{p: "ورکړلی شوې", f: "wărkRúley shuwe"}], [{p: "ورکړلی شوې", f: "wărkRúley shuwe"}]], + // [[{p: "ورکړلی شوی", f: "wărkRúley shuwey"}], [{p: "ورکړلی شوي", f: "wărkRúley shuwee"}]], + // [[{p: "ورکړلی شوې", f: "wărkRúley shuwe"}], [{p: "ورکړلی شوې", f: "wărkRúley shuwe"}]], + // [[{p: "ورکړلی شوی", f: "wărkRúley shuwey"}], [{p: "ورکړلی شوي", f: "wărkRúley shuwee"}]], + // [[{p: "ورکړلی شوې", f: "wărkRúley shuwe"}], [{p: "ورکړلی شوې", f: "wărkRúley shuwe"}]], + // ], + // }, + // past: { + // short: [ + // [[{p: "ورکړی شوی وم", f: "wărkRéy shuwey wum"}], [{p: "ورکړی شوي وو", f: "wărkRéy shuwee woo"}]], + // [[{p: "ورکړی شوې وم", f: "wărkRéy shuwe wum"}], [{p: "ورکړی شوې وو", f: "wărkRéy shuwe woo"}]], + // [[{p: "ورکړی شوی وې", f: "wărkRéy shuwey we"}], [{p: "ورکړی شوي وئ", f: "wărkRéy shuwee weyy"}]], + // [[{p: "ورکړی شوې وې", f: "wărkRéy shuwe we"}], [{p: "ورکړی شوې وئ", f: "wărkRéy shuwe weyy"}]], + // [[{p: "ورکړی شوی و", f: "wărkRéy shuwey wo"}], [{p: "ورکړی شوي وو", f: "wărkRéy shuwee woo"}]], + // [[{p: "ورکړی شوې وه", f: "wărkRéy shuwe wa"}], [{p: "ورکړی شوې وې", f: "wărkRéy shuwe we"}]], + // ], + // long: [ + // [[{p: "ورکړلی شوی وم", f: "wărkRúley shuwey wum"}], [{p: "ورکړلی شوي وو", f: "wărkRúley shuwee woo"}]], + // [[{p: "ورکړلی شوې وم", f: "wărkRúley shuwe wum"}], [{p: "ورکړلی شوې وو", f: "wărkRúley shuwe woo"}]], + // [[{p: "ورکړلی شوی وې", f: "wărkRúley shuwey we"}], [{p: "ورکړلی شوي وئ", f: "wărkRúley shuwee weyy"}]], + // [[{p: "ورکړلی شوې وې", f: "wărkRúley shuwe we"}], [{p: "ورکړلی شوې وئ", f: "wărkRúley shuwe weyy"}]], + // [[{p: "ورکړلی شوی و", f: "wărkRúley shuwey wo"}], [{p: "ورکړلی شوي وو", f: "wărkRúley shuwee woo"}]], + // [[{p: "ورکړلی شوې وه", f: "wărkRúley shuwe wa"}], [{p: "ورکړلی شوې وې", f: "wărkRúley shuwe we"}]], + // ], + // }, + // present: { + // short: [ + // [[{p: "ورکړی شوی یم", f: "wărkRéy shuwey yum"}], [{p: "ورکړی شوي یو", f: "wărkRéy shuwee yoo"}]], + // [[{p: "ورکړی شوې یم", f: "wărkRéy shuwe yum"}], [{p: "ورکړی شوې یو", f: "wărkRéy shuwe yoo"}]], + // [[{p: "ورکړی شوی یې", f: "wărkRéy shuwey ye"}], [{p: "ورکړی شوي یئ", f: "wărkRéy shuwee yeyy"}]], + // [[{p: "ورکړی شوې یې", f: "wărkRéy shuwe ye"}], [{p: "ورکړی شوې یئ", f: "wărkRéy shuwe yeyy"}]], + // [[{p: "ورکړی شوی دی", f: "wărkRéy shuwey dey"}], [{p: "ورکړی شوي دي", f: "wărkRéy shuwee dee"}]], + // [[{p: "ورکړی شوې ده", f: "wărkRéy shuwe da"}], [{p: "ورکړی شوې دي", f: "wărkRéy shuwe dee"}]], + // ], + // long: [ + // [[{p: "ورکړلی شوی یم", f: "wărkRúley shuwey yum"}], [{p: "ورکړلی شوي یو", f: "wărkRúley shuwee yoo"}]], + // [[{p: "ورکړلی شوې یم", f: "wărkRúley shuwe yum"}], [{p: "ورکړلی شوې یو", f: "wărkRúley shuwe yoo"}]], + // [[{p: "ورکړلی شوی یې", f: "wărkRúley shuwey ye"}], [{p: "ورکړلی شوي یئ", f: "wărkRúley shuwee yeyy"}]], + // [[{p: "ورکړلی شوې یې", f: "wărkRúley shuwe ye"}], [{p: "ورکړلی شوې یئ", f: "wărkRúley shuwe yeyy"}]], + // [[{p: "ورکړلی شوی دی", f: "wărkRúley shuwey dey"}], [{p: "ورکړلی شوي دي", f: "wărkRúley shuwee dee"}]], + // [[{p: "ورکړلی شوې ده", f: "wărkRúley shuwe da"}], [{p: "ورکړلی شوې دي", f: "wărkRúley shuwe dee"}]], + // ], + // }, + // future: { + // short: [ + // [[{p: "به ورکړی شوی یم", f: "ba wărkRéy shuwey yum"}], [{p: "به ورکړی شوي یو", f: "ba wărkRéy shuwee yoo"}]], + // [[{p: "به ورکړی شوې یم", f: "ba wărkRéy shuwe yum"}], [{p: "به ورکړی شوې یو", f: "ba wărkRéy shuwe yoo"}]], + // [[{p: "به ورکړی شوی یې", f: "ba wărkRéy shuwey ye"}], [{p: "به ورکړی شوي یئ", f: "ba wărkRéy shuwee yeyy"}]], + // [[{p: "به ورکړی شوې یې", f: "ba wărkRéy shuwe ye"}], [{p: "به ورکړی شوې یئ", f: "ba wărkRéy shuwe yeyy"}]], + // [[{p: "به ورکړی شوی وي", f: "ba wărkRéy shuwey wee"}], [{p: "به ورکړی شوي وي", f: "ba wărkRéy shuwee wee"}]], + // [[{p: "به ورکړی شوې وي", f: "ba wărkRéy shuwe wee"}], [{p: "به ورکړی شوې وي", f: "ba wărkRéy shuwe wee"}]], + // ], + // long: [ + // [[{p: "به ورکړلی شوی یم", f: "ba wărkRúley shuwey yum"}], [{p: "به ورکړلی شوي یو", f: "ba wărkRúley shuwee yoo"}]], + // [[{p: "به ورکړلی شوې یم", f: "ba wărkRúley shuwe yum"}], [{p: "به ورکړلی شوې یو", f: "ba wărkRúley shuwe yoo"}]], + // [[{p: "به ورکړلی شوی یې", f: "ba wărkRúley shuwey ye"}], [{p: "به ورکړلی شوي یئ", f: "ba wărkRúley shuwee yeyy"}]], + // [[{p: "به ورکړلی شوې یې", f: "ba wărkRúley shuwe ye"}], [{p: "به ورکړلی شوې یئ", f: "ba wărkRúley shuwe yeyy"}]], + // [[{p: "به ورکړلی شوی وي", f: "ba wărkRúley shuwey wee"}], [{p: "به ورکړلی شوي وي", f: "ba wărkRúley shuwee wee"}]], + // [[{p: "به ورکړلی شوې وي", f: "ba wărkRúley shuwe wee"}], [{p: "به ورکړلی شوې وي", f: "ba wărkRúley shuwe wee"}]], + // ], + // }, + // affirmational: { + // short: [ + // [[{p: "به ورکړی شوی وم", f: "ba wărkRéy shuwey wum"}], [{p: "به ورکړی شوي وو", f: "ba wărkRéy shuwee woo"}]], + // [[{p: "به ورکړی شوې وم", f: "ba wărkRéy shuwe wum"}], [{p: "به ورکړی شوې وو", f: "ba wărkRéy shuwe woo"}]], + // [[{p: "به ورکړی شوی وې", f: "ba wărkRéy shuwey we"}], [{p: "به ورکړی شوي وئ", f: "ba wărkRéy shuwee weyy"}]], + // [[{p: "به ورکړی شوې وې", f: "ba wărkRéy shuwe we"}], [{p: "به ورکړی شوې وئ", f: "ba wărkRéy shuwe weyy"}]], + // [[{p: "به ورکړی شوی و", f: "ba wărkRéy shuwey wo"}], [{p: "به ورکړی شوي وو", f: "ba wărkRéy shuwee woo"}]], + // [[{p: "به ورکړی شوې وه", f: "ba wărkRéy shuwe wa"}], [{p: "به ورکړی شوې وې", f: "ba wărkRéy shuwe we"}]], + // ], + // long: [ + // [[{p: "به ورکړلی شوی وم", f: "ba wărkRúley shuwey wum"}], [{p: "به ورکړلی شوي وو", f: "ba wărkRúley shuwee woo"}]], + // [[{p: "به ورکړلی شوې وم", f: "ba wărkRúley shuwe wum"}], [{p: "به ورکړلی شوې وو", f: "ba wărkRúley shuwe woo"}]], + // [[{p: "به ورکړلی شوی وې", f: "ba wărkRúley shuwey we"}], [{p: "به ورکړلی شوي وئ", f: "ba wărkRúley shuwee weyy"}]], + // [[{p: "به ورکړلی شوې وې", f: "ba wărkRúley shuwe we"}], [{p: "به ورکړلی شوې وئ", f: "ba wărkRúley shuwe weyy"}]], + // [[{p: "به ورکړلی شوی و", f: "ba wărkRúley shuwey wo"}], [{p: "به ورکړلی شوي وو", f: "ba wărkRúley shuwee woo"}]], + // [[{p: "به ورکړلی شوې وه", f: "ba wărkRúley shuwe wa"}], [{p: "به ورکړلی شوې وې", f: "ba wărkRúley shuwe we"}]], + // ], + // }, + // pastSubjunctiveHypothetical: { + // short: [ + // [[{p: "ورکړی شوی وای", f: "ba wărkRéy shuwey"}], [{p: "به ورکړی شوي", f: "ba wărkRéy shuwee"}]], + // [[{p: "ورکړی شوې وای", f: "ba wărkRéy shuwe"}], [{p: "به ورکړی شوې", f: "ba wărkRéy shuwe"}]], + // [[{p: "ورکړی شوی وای", f: "ba wărkRéy shuwey"}], [{p: "به ورکړی شوي", f: "ba wărkRéy shuwee"}]], + // [[{p: "ورکړی شوې وای", f: "ba wărkRéy shuwe"}], [{p: "به ورکړی شوې", f: "ba wărkRéy shuwe"}]], + // [[{p: "ورکړی شوی وای", f: "ba wărkRéy shuwey"}], [{p: "به ورکړی شوي", f: "ba wărkRéy shuwee"}]], + // [[{p: "ورکړی شوې وای", f: "ba wărkRéy shuwe"}], [{p: "به ورکړی شوې", f: "ba wărkRéy shuwe"}]], + // ], + // long: [ + // [[{p: "ورکړلی شوی وای", f: "ba wărkRúley shuwey"}], [{p: "به ورکړلی شوي", f: "ba wărkRúley shuwee"}]], + // [[{p: "ورکړلی شوې وای", f: "ba wărkRúley shuwe"}], [{p: "به ورکړلی شوې", f: "ba wărkRúley shuwe"}]], + // [[{p: "ورکړلی شوی وای", f: "ba wărkRúley shuwey"}], [{p: "به ورکړلی شوي", f: "ba wărkRúley shuwee"}]], + // [[{p: "ورکړلی شوې وای", f: "ba wărkRúley shuwe"}], [{p: "به ورکړلی شوې", f: "ba wărkRúley shuwe"}]], + // [[{p: "ورکړلی شوی وای", f: "ba wărkRúley shuwey"}], [{p: "به ورکړلی شوي", f: "ba wărkRúley shuwee"}]], + // [[{p: "ورکړلی شوې وای", f: "ba wărkRúley shuwe"}], [{p: "به ورکړلی شوې", f: "ba wărkRúley shuwe"}]], + // ], + // }, + // }, + // }, +}; + +export function checkForIrregularConjugation(entry: T.DictionaryEntry): T.VerbConjugation | null { + if (entry.p === "تلل" && entry.f === "tlul") { + return tlul; + } + if (entry.p === "ورکول" && entry.f.includes("wărkawul")) { + return warkawul; + } + if (entry.p === "کول" && entry.e.includes("to do")) { + return kawulDyn; + } + if (entry.p === "کول" && entry.e.includes("to make")) { + return kawulStat; + } + if (entry.p === "کېدل" && entry.e.includes("to become")) { + return kedulStat; + } + if (entry.p === "کېدل" && entry.e.includes("to happen")) { + return kedulDyn; + } + if (entry.p === "ورکول") { + return warkawul; + } + return null; +} diff --git a/src/lib/misc-helpers.ts b/src/lib/misc-helpers.ts new file mode 100644 index 0000000..25c39b4 --- /dev/null +++ b/src/lib/misc-helpers.ts @@ -0,0 +1,202 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import * as T from "../types"; + +// just for type safety +export function noPersInfs(s: T.OptionalPersonInflections>): T.LengthOptions; +export function noPersInfs(s: T.FullForm): T.SingleOrLengthOpts; +export function noPersInfs(s: + T.OptionalPersonInflections> | T.FullForm +): T.SingleOrLengthOpts | T.LengthOptions { + if ("mascSing" in s) { + // this path shouldn't be used, just for type safety + return s.mascSing; + } + return s; +} + +export function pickPersInf(s: T.OptionalPersonInflections, persInf: T.PersonInflectionsField): T { + if ("mascSing" in s) { + return s[persInf]; + } + return s; +} + +// export function pickPersInf( +// s: T.OptionalPersonInflections>, +// persInf: T.PersonInflectionsField, +// ): T.LengthOptions; +// export function pickPersInf( +// s: T.FullForm, +// persInf: T.PersonInflectionsField, +// ): T.SingleOrLengthOpts; +// export function pickPersInf( +// s: T.FullForm, +// persInf: T.PersonInflectionsField, +// ): T.SingleOrLengthOpts; +// export function pickPersInf( +// s: T.SplitInfo, +// persInf: T.PersonInflectionsField, +// ): T.SingleOrLengthOpts<[T.PsString, T.PsString]>; +// export function pickPersInf( +// s: T.OptionalPersonInflections> | T.FullForm | T.FullForm | T.SplitInfo, +// persInf: T.PersonInflectionsField, +// ): T.SingleOrLengthOpts | T.LengthOptions | T.SingleOrLengthOpts | T.SingleOrLengthOpts<[T.PsString, T.PsString]> { +// if ("mascSing" in s) { +// return s[persInf]; +// } +// return s; +// } + +export function hasPersInfs(info: T.NonComboVerbInfo): boolean { + return ( + "mascSing" in info.root.perfective || + "mascSing" in info.stem.perfective || + "mascSing" in info.participle.present || + "mascSing" in info.participle.past + ); +} + +export function chooseParticipleInflection( + pPartInfs: T.SingleOrLengthOpts | T.SingleOrLengthOpts, + person: T.Person, +): T.SingleOrLengthOpts { + if ("long" in pPartInfs) { + return { + short: chooseParticipleInflection(pPartInfs.short, person) as T.PsString, + long: chooseParticipleInflection(pPartInfs.long, person) as T.PsString, + }; + } + if ("masc" in pPartInfs) { + const gender = personGender(person); + const infNum = personIsPlural(person) ? 1 : 0; + return pPartInfs[gender][infNum][0]; + } + return pPartInfs; // already just one thing +} + +export function getPersonNumber(gender: "masc" | "fem", number: "singular" | "plural"): T.Person { + const base = gender === "masc" ? 4 : 5; + return base + (number === "singular" ? 0 : 6); +} + +export function getPersonInflectionsKey(person: T.Person): T.PersonInflectionsField { + return `${personGender(person)}${personIsPlural(person) ? "Plur" : "Sing"}` as T.PersonInflectionsField; +} + +export function spaceInForm(form: T.FullForm): boolean { + if ("mascSing" in form) { + return spaceInForm(form.mascSing); + } + if ("long" in form) { + return spaceInForm(form.long); + } + return form.p.includes(" "); +} + +export function getPersonFromVerbForm(form: T.SingleOrLengthOpts, person: T.Person): T.SentenceForm { + if ("long" in form) { + return { + long: getPersonFromVerbForm(form.long, person) as T.ArrayOneOrMore, + short: getPersonFromVerbForm(form.short, person) as T.ArrayOneOrMore, + ...form.mini ? { + mini: getPersonFromVerbForm(form.mini, person) as T.ArrayOneOrMore, + } : {}, + }; + } + const [row, col] = getBlockRowCol(person); + return form[row][col]; +} + +export function getBlockRowCol(person: T.Person): [0 | 1 | 2 | 3 | 4 | 5, 0 | 1] { + const plural = personIsPlural(person) + const row = (plural ? (person - 6) : person) as 0 | 1 | 2 | 3 | 4 | 5; + const col = plural ? 1 : 0; + return [row, col]; +} + +export function getAuxTransitivity(trans: T.Transitivity): "transitive" | "intransitive" { + return trans === "intransitive" ? "intransitive" : "transitive"; +} + +export function personGender(person: T.Person): "masc" | "fem" { + return person % 2 === 0 ? "masc" : "fem"; +} + +export function personIsPlural(person: T.Person): boolean { + return person > 5; +} + +export function getEnglishPersonInfo(person: T.Person): string { + const p = [0,1,6,7].includes(person) + ? "1st pers" + : [2,3,8,9].includes(person) + ? "2nd pers" + : "3rd pers"; + const a = personIsPlural(person) ? "plur" : "sing"; + const g = personGender(person); + return `${p}. ${a}. ${g}.`; +} + +export function randomNumber(minInclusive: number, maxExclusive: number): number { + return Math.floor(Math.random() * (maxExclusive - minInclusive) + minInclusive); +} + +/** + * Sees if a possiblePerson (for subject/object) is possible, given the other person + * + * @param possiblePerson + * @param existingPerson + */ +export function personIsAllowed(possiblePerson: T.Person, existingPerson: T.Person): boolean { + const isFirstPerson = (p: T.Person) => [0, 1, 6, 7].includes(p); + const isSecondPerson = (p: T.Person) => [2, 3, 8, 9].includes(p); + // can't have both subject and object be 1st person + if (isFirstPerson(possiblePerson) && isFirstPerson(existingPerson)) { + return false; + } + // can't have both subject and object be 2nd person + if (isSecondPerson(possiblePerson) && isSecondPerson(existingPerson)) { + return false; + } + // otherwise it's ok + return true; +} + +/** + * Picks a random person while assuring that the other person is not in conflict + * + * @param other + */ +export function randomPerson(other: T.Person): T.Person { + let newPerson: T.Person; + do { + newPerson = randomNumber(0, 12); + } while(!personIsAllowed(newPerson, other)); + return newPerson; +} + +export function incrementPerson(p: T.Person): T.Person { + return (p + 1) % 12; +} + +export function isSentenceForm(f: any): boolean { + if ("long" in f) { + return isSentenceForm(f.long); + } + return Array.isArray(f) && "p" in f[0]; +} + +// not being used +// export function isImperativeBlock(f: any): boolean { +// function isPersonLine(g: any): boolean { +// return Array.isArray(g) && Array.isArray(g[0]) && "p" in g[0][0]; +// } +// return Array.isArray(f) && f.length === 2 && isPersonLine(f[0]); +// } \ No newline at end of file diff --git a/src/lib/p-text-helpers.test.ts b/src/lib/p-text-helpers.test.ts new file mode 100644 index 0000000..71ac6f2 --- /dev/null +++ b/src/lib/p-text-helpers.test.ts @@ -0,0 +1,978 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + concatPsString, + firstPhonetics, + makePsString, + removeEndingL, + yulEndingInfinitive, + mapVerbBlock, + allMascFirstInflection, + addToForm, + unisexInfToObjectMatrix, + complementInflects, + concatInflections, + psStringEquals, + removeRetroflexR, +} from "./p-text-helpers"; +import * as T from "../types"; +import { + pastEndings +} from "./grammar-units"; + +test(`concatPsString should work`, () => { + const input = concatPsString( + { p: "لیکل", f: "leekul" }, + { p: "ی", f: "ey" }, + " ", + { p: "دی", f: "dey" }, + ); + expect(input).toEqual({ p: "لیکلی دی", f: "leekuley dey" }); + // test with length options added + const inputWLength = concatPsString( + { p: "خفه", f: "khufa" }, + " ", + { + short: { p: "کړو", f: "kRo" }, + long: { p: "کړلو", f: "kRulo" }, + }, + ); + expect(inputWLength).toEqual({ + short: { p: "خفه کړو", f: "khufa kRo" }, + long: { p: "خفه کړلو", f: "khufa kRulo" }, + }); + // even with minin + const inputWMini = concatPsString( + { p: "خفه", f: "khufa" }, + " ", + { + short: { p: "کړی", f: "kRey" }, + long: { p: "کړلی", f: "kRuley" }, + }, + " ", + { + mini: { p: "کو", f: "ko" }, + short: { p: "کړو", f: "kRo" }, + long: { p: "کړلو", f: "kRulo" }, + }, + ); + expect(inputWMini).toEqual({ + mini: { p: "خفه کړی کو", f: "khufa kRey ko" }, + short: { p: "خفه کړی کړو", f: "khufa kRey kRo" }, + long: { p: "خفه کړلی کړلو", f: "khufa kRuley kRulo" }, + }); + // also with personInflections + const inputWPersInfs = concatPsString( + { + mascSing: { p: "پوخ", f: "pokh" }, + mascPlur: { p: "پاخه", f: "paakhu" }, + femSing: { p: "پخه", f: "pakha" }, + femPlur: { p: "پخې", f: "pakhe" }, + }, + " ", + { + short: { p: "ک", f: "k" }, + long: { p: "کړ", f: "kR" }, + }, + ); + expect(inputWPersInfs).toEqual({ + mascSing: { + short: { p: "پوخ ک", f: "pokh k" }, + long: { p: "پوخ کړ", f: "pokh kR" }, + }, + mascPlur: { + short: { p: "پاخه ک", f: "paakhu k" }, + long: { p: "پاخه کړ", f: "paakhu kR" }, + }, + femSing: { + short: { p: "پخه ک", f: "pakha k" }, + long: { p: "پخه کړ", f: "pakha kR" }, + }, + femPlur: { + short: { p: "پخې ک", f: "pakhe k" }, + long: { p: "پخې کړ", f: "pakhe kR" }, + }, + }); +}); + +test(`addToForm should work`, () => { + const block: T.VerbBlock = [ + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + [[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]], + [[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]], + ]; + const result = addToForm([{ p: "خفه", f: "khufa" }, " "], block); + expect(result).toEqual([ + [[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]], + [[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]], + [[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]], + [[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]], + [[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]], + [[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]], + ]); + const result2 = addToForm([{ + short: { p: "کړی", f: "kRey" }, + long: { p: "کړلی", f: "kRuley" }, + }, " "], block); + expect(result2).toEqual({ + short: [ + [[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]], + [[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]], + [[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]], + [[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]], + [[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]], + [[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]], + ], + long: [ + [[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]], + [[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]], + [[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]], + [[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]], + [[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]], + [[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]], + ], + }); + const result3 = addToForm([ + { + masc: [ + [{ p: "زوړ", f: "zoR" }], + [{ p: "زاړه", f: "zaaRu" }], + [{ p: "زړو", f: "zaRo" }], + ], + fem: [ + [{ p: "زړه", f: "zaRa" }], + [{ p: "زړې", f: "zaRe" }], + [{ p: "زړو", f: "zaRo" }], + ], + }, + " ", + [ + { p: "کړل", f: "kRul" }, + { + short: { p: "کړی", f: "kRey" }, + long: { p: "کړلی", f: "kRuley" }, + }, + ], + " ", + ], block); + const expected3 = { + long: [ + [ + [{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}], + [{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}] + ], + [ + [{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}], + [{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}], + ], + [ + [{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}], + [{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}] + ], + [ + [{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}], + [{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}], + ], + [ + [{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}], + [{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}] + ], + [ + [{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}], + [{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}], + ], + ], + short: [ + [ + [{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}], + [{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}] + ], + [ + [{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}], + [{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}], + ], + [ + [{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}], + [{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}] + ], + [ + [{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}], + [{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}], + ], + [ + [{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}], + [{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}] + ], + [ + [{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}], + [{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}], + ], + ], + }; + expect(result3).toEqual(expected3); + // check with imperative + const impFormIntrans: T.ImperativeForm = [ + [[{p: "شه", f: "sha"}], [{p: "شئ", f: "sheyy"}]], + [[{p: "شه", f: "sha"}], [{p: "شئ", f: "sheyy"}]], + ]; + const impFormTrans: T.ImperativeForm = [ + [[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]], + ]; + const impFormTransOpts: T.ImperativeForm = { + short: [ + [[{p: "که", f: "ka"}], [{p: "کئ", f: "keyy"}]], + [[{p: "که", f: "ka"}], [{p: "کئ", f: "keyy"}]], + ], + long: [ + [[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]], + ], + } + const unisexComp: T.UnisexInflections = { + masc: [ + [{ p: "زوړ", f: "zoR" }], + [{ p: "زاړه", f: "zaaRu" }], + [{ p: "زړو", f: "zaRo" }], + ], + fem: [ + [{ p: "زړه", f: "zaRa" }], + [{ p: "زړې", f: "zaRe" }], + [{ p: "زړو", f: "zaRo" }], + ], + }; + const objectMatrix: T.OptionalPersonInflections = { + mascSing: { p: "زوړ", f: "zoR" }, + mascPlur: { p: "زاړه", f: "zaaRu" }, + femSing: { p: "زړه", f: "zaRa" }, + femPlur: { p: "زړې", f: "zaRe" }, + }; + expect(addToForm([unisexComp, " "], impFormIntrans)).toEqual([ + [[{p: "زوړ شه", f: "zoR sha"}], [{p: "زاړه شئ", f: "zaaRu sheyy"}]], + [[{p: "زړه شه", f: "zaRa sha"}], [{p: "زړې شئ", f: "zaRe sheyy"}]], + ]); + expect(addToForm([objectMatrix, " "], impFormTrans)).toEqual({ + mascSing: [ + [[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]], + [[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]], + ], + mascPlur: [ + [[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]], + [[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]], + ], + femSing: [ + [[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]], + [[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]], + ], + femPlur: [ + [[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]], + [[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]], + ], + }); + expect(addToForm([objectMatrix, " "], impFormTransOpts)).toEqual({ + mascSing: { + short: [ + [[{p: "زوړ که", f: "zoR ka"}], [{p: "زوړ کئ", f: "zoR keyy"}]], + [[{p: "زوړ که", f: "zoR ka"}], [{p: "زوړ کئ", f: "zoR keyy"}]], + ], + long: [ + [[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]], + [[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]], + ], + }, + mascPlur: { + short: [ + [[{p: "زاړه که", f: "zaaRu ka"}], [{p: "زاړه کئ", f: "zaaRu keyy"}]], + [[{p: "زاړه که", f: "zaaRu ka"}], [{p: "زاړه کئ", f: "zaaRu keyy"}]], + ], + long: [ + [[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]], + [[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]], + ], + }, + femSing: { + short: [ + [[{p: "زړه که", f: "zaRa ka"}], [{p: "زړه کئ", f: "zaRa keyy"}]], + [[{p: "زړه که", f: "zaRa ka"}], [{p: "زړه کئ", f: "zaRa keyy"}]], + ], + long: [ + [[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]], + [[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]], + ], + }, + femPlur: { + short: [ + [[{p: "زړې که", f: "zaRe ka"}], [{p: "زړې کئ", f: "zaRe keyy"}]], + [[{p: "زړې که", f: "zaRe ka"}], [{p: "زړې کئ", f: "zaRe keyy"}]], + ], + long: [ + [[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]], + [[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]], + ], + }, + }); + const matrixBase: T.VerbForm = { + mascSing: [ + [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]], + [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]], + [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]], + [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]], + [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], + [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], + ], + mascPlur: [ + [[{p: "ستړي ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]], + [[{p: "ستړي ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]], + [[{p: "ستړي ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]], + [[{p: "ستړي ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]], + [[{p: "ستړي ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], + [[{p: "ستړي ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], + ], + femSing: [ + [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], + [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], + [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], + [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], + [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], + [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], + ], + femPlur: [ + [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], + [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], + [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], + [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], + [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], + [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], + ], + }; + expect(addToForm([objectMatrix, " ", { p: "به", f: "ba" }, " "], matrixBase)).toEqual({ + mascSing: [ + [[{p: "زوړ به ستړی کوم", f: "zoR ba stuRey kawum"}], [{p: "زوړ به ستړی کوو", f: "zoR ba stuRey kawoo"}]], + [[{p: "زوړ به ستړی کوم", f: "zoR ba stuRey kawum"}], [{p: "زوړ به ستړی کوو", f: "zoR ba stuRey kawoo"}]], + [[{p: "زوړ به ستړی کوې", f: "zoR ba stuRey kawe"}], [{p: "زوړ به ستړی کوئ", f: "zoR ba stuRey kaweyy"}]], + [[{p: "زوړ به ستړی کوې", f: "zoR ba stuRey kawe"}], [{p: "زوړ به ستړی کوئ", f: "zoR ba stuRey kaweyy"}]], + [[{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}], [{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}]], + [[{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}], [{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}]], + ], + mascPlur: [ + [[{p: "زاړه به ستړي ستړي کوم", f: "zaaRu ba stuRee kawum"}], [{p: "زاړه به ستړي کوو", f: "zaaRu ba stuRee kawoo"}]], + [[{p: "زاړه به ستړي ستړي کوم", f: "zaaRu ba stuRee kawum"}], [{p: "زاړه به ستړي کوو", f: "zaaRu ba stuRee kawoo"}]], + [[{p: "زاړه به ستړي ستړي کوې", f: "zaaRu ba stuRee kawe"}], [{p: "زاړه به ستړي کوئ", f: "zaaRu ba stuRee kaweyy"}]], + [[{p: "زاړه به ستړي ستړي کوې", f: "zaaRu ba stuRee kawe"}], [{p: "زاړه به ستړي کوئ", f: "zaaRu ba stuRee kaweyy"}]], + [[{p: "زاړه به ستړي ستړي کوي", f: "zaaRu ba stuRee kawee"}], [{p: "زاړه به ستړي کوي", f: "zaaRu ba stuRee kawee"}]], + [[{p: "زاړه به ستړي ستړي کوي", f: "zaaRu ba stuRee kawee"}], [{p: "زاړه به ستړي کوي", f: "zaaRu ba stuRee kawee"}]], + ], + femSing: [ + [[{p: "زړه به ستړې کوم", f: "zaRa ba stuRe kawum"}], [{p: "زړه به ستړې کوو", f: "zaRa ba stuRe kawoo"}]], + [[{p: "زړه به ستړې کوم", f: "zaRa ba stuRe kawum"}], [{p: "زړه به ستړې کوو", f: "zaRa ba stuRe kawoo"}]], + [[{p: "زړه به ستړې کوې", f: "zaRa ba stuRe kawe"}], [{p: "زړه به ستړې کوئ", f: "zaRa ba stuRe kaweyy"}]], + [[{p: "زړه به ستړې کوې", f: "zaRa ba stuRe kawe"}], [{p: "زړه به ستړې کوئ", f: "zaRa ba stuRe kaweyy"}]], + [[{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}], [{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}]], + [[{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}], [{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}]], + ], + femPlur: [ + [[{p: "زړې به ستړې کوم", f: "zaRe ba stuRe kawum"}], [{p: "زړې به ستړې کوو", f: "zaRe ba stuRe kawoo"}]], + [[{p: "زړې به ستړې کوم", f: "zaRe ba stuRe kawum"}], [{p: "زړې به ستړې کوو", f: "zaRe ba stuRe kawoo"}]], + [[{p: "زړې به ستړې کوې", f: "zaRe ba stuRe kawe"}], [{p: "زړې به ستړې کوئ", f: "zaRe ba stuRe kaweyy"}]], + [[{p: "زړې به ستړې کوې", f: "zaRe ba stuRe kawe"}], [{p: "زړې به ستړې کوئ", f: "zaRe ba stuRe kaweyy"}]], + [[{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}], [{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}]], + [[{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}], [{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}]], + ], + }); + const kawulSimpPast: T.VerbForm = { + mini: [ + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "که", f: "ku"}, {p: "کو", f: "ko"}], [{p: "کړل", f: "kRul"}, { p: "کو", f: "koo" }]], + [[{p: "که", f: "ka"}], [{p: "کې", f: "ke"}]], + ], + short: [ + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړه", f: "kRu"}, {p: "کړو", f: "kRo"}, {p: "کړ", f: "kuR"}], [{p: "کړل", f: "kRul"}, {p: "کړو", f: "kRoo" }]], + [[{p: "کړه", f: "kRa"}], [{p: "کړې", f: "kRe"}]], + ], + long: [ + [[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]], + [[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]], + [[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]], + [[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]], + [[{p: "کړله", f: "kRulu"}, {p: "کړلو", f: "kRulo"}], [{p: "کړل", f: "kRul"}, {p: "کړلو", f: "kRuloo"}]], + [[{p: "کړله", f: "kRula"}], [{p: "کړلې", f: "kRule"}]], + ], + }; + expect(addToForm([{ p: "به", f: "ba" }, " "], kawulSimpPast)).toEqual({ + mini: [ + [[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]], + [[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]], + [[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]], + [[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]], + [[{p: "به که", f: "ba ku"}, {p: "به کو", f: "ba ko"}], [{p: "به کړل", f: "ba kRul"}, { p: "به کو", f: "ba koo" }]], + [[{p: "به که", f: "ba ka"}], [{p: "به کې", f: "ba ke"}]], + ], + short: [ + [[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]], + [[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]], + [[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]], + [[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]], + [[{p: "به کړه", f: "ba kRu"}, {p: "به کړو", f: "ba kRo"}, {p: "به کړ", f: "ba kuR"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړو", f: "ba kRoo" }]], + [[{p: "به کړه", f: "ba kRa"}], [{p: "به کړې", f: "ba kRe"}]], + ], + long: [ + [[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]], + [[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]], + [[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]], + ], + }); + expect(addToForm([{ + long: { p: "به", f: "ba" }, + short: { p: "ب", f: "b" }, + }, " "], kawulSimpPast)).toEqual({ + mini: [ + [[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]], + [[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]], + [[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]], + [[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]], + [[{p: "ب که", f: "b ku"}, {p: "ب کو", f: "b ko"}], [{p: "ب کړل", f: "b kRul"}, { p: "ب کو", f: "b koo" }]], + [[{p: "ب که", f: "b ka"}], [{p: "ب کې", f: "b ke"}]], + ], + short: [ + [[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]], + [[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]], + [[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]], + [[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]], + [[{p: "ب کړه", f: "b kRu"}, {p: "ب کړو", f: "b kRo"}, {p: "ب کړ", f: "b kuR"}], [{p: "ب کړل", f: "b kRul"}, {p: "ب کړو", f: "b kRoo" }]], + [[{p: "ب کړه", f: "b kRa"}], [{p: "ب کړې", f: "b kRe"}]], + ], + long: [ + [[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]], + [[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]], + [[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]], + ], + }); + expect(addToForm([[{ + long: { p: "به", f: "ba" }, + short: { p: "ب", f: "b" }, + }], " "], kawulSimpPast)).toEqual({ + mini: [ + [[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]], + [[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]], + [[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]], + [[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]], + [[{p: "ب که", f: "b ku"}, {p: "ب کو", f: "b ko"}], [{p: "ب کړل", f: "b kRul"}, { p: "ب کو", f: "b koo" }]], + [[{p: "ب که", f: "b ka"}], [{p: "ب کې", f: "b ke"}]], + ], + short: [ + [[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]], + [[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]], + [[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]], + [[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]], + [[{p: "ب کړه", f: "b kRu"}, {p: "ب کړو", f: "b kRo"}, {p: "ب کړ", f: "b kuR"}], [{p: "ب کړل", f: "b kRul"}, {p: "ب کړو", f: "b kRoo" }]], + [[{p: "ب کړه", f: "b kRa"}], [{p: "ب کړې", f: "b kRe"}]], + ], + long: [ + [[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]], + [[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]], + [[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]], + [[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]], + ], + }); + expect(addToForm([{ + short: { p: "لیک", f: "leek" }, + long: { p: "لیکل", f: "leekul" }, + }], pastEndings)).toEqual({ + short: [ + [[{ p: "لیکم", f: "leekum" }], [{ p: "لیکو", f: "leekoo" }]], + [[{ p: "لیکم", f: "leekum" }], [{ p: "لیکو", f: "leekoo" }]], + [[{ p: "لیکې", f: "leeke" }], [{ p: "لیکئ", f: "leekeyy" }]], + [[{ p: "لیکې", f: "leeke" }], [{ p: "لیکئ", f: "leekeyy" }]], + [[{ p: "لیکه", f: "leeku" }, { p: "لیکو", f: "leeko"}], [{ p: "لیکل", f: "leekul" }]], + [[{ p: "لیکه", f: "leeka"}], [{ p: "لیکې", f: "leeke" }]], + ], + long: [ + [[{ p: "لیکلم", f: "leekulum" }], [{ p: "لیکلو", f: "leekuloo" }]], + [[{ p: "لیکلم", f: "leekulum" }], [{ p: "لیکلو", f: "leekuloo" }]], + [[{ p: "لیکلې", f: "leekule" }], [{ p: "لیکلئ", f: "leekuleyy" }]], + [[{ p: "لیکلې", f: "leekule" }], [{ p: "لیکلئ", f: "leekuleyy" }]], + [[{ p: "لیکله", f: "leekulu" }, { p: "لیکلو", f: "leekulo"}], [{ p: "لیکل", f: "leekul"}]], + [[{ p: "لیکله", f: "leekula"}], [{ p: "لیکلې", f: "leekule" }]], + ], + }); + expect(addToForm([{ + long: { p: "تتت", f: "ttt" }, + short: { p: "تت", f: "tt" }, + mini: { p: "ت", f: "t" }, + }, " "], { + long: [ + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]], + [[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]], + [[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]], + ], + short: [ + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]], + [[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]], + [[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]], + ], + })).toEqual({ + long: [ + [[{p: "تتت کړم", f: "ttt kRum"}], [{p: "تتت کړو", f: "ttt kRoo"}]], + [[{p: "تتت کړم", f: "ttt kRum"}], [{p: "تتت کړو", f: "ttt kRoo"}]], + [[{p: "تتت کړې", f: "ttt kRe"}], [{p: "تتت کړئ", f: "ttt kReyy"}]], + [[{p: "تتت کړې", f: "ttt kRe"}], [{p: "تتت کړئ", f: "ttt kReyy"}]], + [[{p: "تتت کړي", f: "ttt kRee"}], [{p: "تتت کړي", f: "ttt kRee"}]], + [[{p: "تتت کړي", f: "ttt kRee"}], [{p: "تتت کړي", f: "ttt kRee"}]], + ], + short: [ + [[{p: "تت کم", f: "tt kum"}], [{p: "تت کو", f: "tt koo"}]], + [[{p: "تت کم", f: "tt kum"}], [{p: "تت کو", f: "tt koo"}]], + [[{p: "تت کې", f: "tt ke"}], [{p: "تت کئ", f: "tt keyy"}]], + [[{p: "تت کې", f: "tt ke"}], [{p: "تت کئ", f: "tt keyy"}]], + [[{p: "تت کي", f: "tt kee"}], [{p: "تت کي", f: "tt kee"}]], + [[{p: "تت کي", f: "tt kee"}], [{p: "تت کي", f: "tt kee"}]], + ], + mini: [ + [[{p: "ت کم", f: "t kum"}], [{p: "ت کو", f: "t koo"}]], + [[{p: "ت کم", f: "t kum"}], [{p: "ت کو", f: "t koo"}]], + [[{p: "ت کې", f: "t ke"}], [{p: "ت کئ", f: "t keyy"}]], + [[{p: "ت کې", f: "t ke"}], [{p: "ت کئ", f: "t keyy"}]], + [[{p: "ت کي", f: "t kee"}], [{p: "ت کي", f: "t kee"}]], + [[{p: "ت کي", f: "t kee"}], [{p: "ت کي", f: "t kee"}]], + ], + }); +}); + +test(`unisexInfToObjectMatrix`, () => { + expect(unisexInfToObjectMatrix({ + masc: [ + [{ p: "زوړ", f: "zoR" }], + [{ p: "زاړه", f: "zaaRu" }], + [{ p: "زړو", f: "zaRo" }], + ], + fem: [ + [{ p: "زړه", f: "zaRa" }], + [{ p: "زړې", f: "zaRe" }], + [{ p: "زړو", f: "zaRo" }], + ], + })).toEqual({ + mascSing: { p: "زوړ", f: "zoR" }, + mascPlur: { p: "زاړه", f: "zaaRu" }, + femSing: { p: "زړه", f: "zaRa" }, + femPlur: { p: "زړې", f: "zaRe" }, + }); +}); + +test(`complementInflects`, () => { + expect(complementInflects({ + masc: [ + [{ p: "زوړ", f: "zoR" }], + [{ p: "زاړه", f: "zaaRu" }], + [{ p: "زړو", f: "zaRo" }], + ], + fem: [ + [{ p: "زړه", f: "zaRa" }], + [{ p: "زړې", f: "zaRe" }], + [{ p: "زړو", f: "zaRo" }], + ], + })).toBe(true); + expect(complementInflects({ + masc: [ + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufao" }], + ], + fem: [ + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + ], + })).toBe(false); +}); + +test(`firstPhonetics should work`, () => { + expect(firstPhonetics("ist'imaal, istimaal")).toBe("ist'imaal"); + expect(firstPhonetics("kor")).toBe("kor"); +}); + +test(`makePsString should work`, () => { + expect(makePsString("کور", "kor")).toEqual({ p: "کور", f: "kor" }); +}); + +test(`removeEndingL should work`, () => { + expect(removeEndingL(makePsString("لیدل", "leedúl"))).toEqual( + makePsString("لید", "leed"), + ); + expect(removeEndingL(makePsString("لیدل", "leedul"))).toEqual( + makePsString("لید", "leed"), + ); + expect(removeEndingL(makePsString("پرېښود", "prexod"))).toEqual( + makePsString("پرېښود", "prexod"), + ); +}); + +test(`yulEndingInfinitive should work`, () => { + expect(yulEndingInfinitive({ p: "وایل", f: "waayul" })).toBe(true); + expect(yulEndingInfinitive({ p: "لیکل", f: "leekúl" })).toBe(false); +}); + +test(`mapVerbBlock should work`, () => { + expect( + mapVerbBlock( + (ps: T.PsString) => concatPsString({ p: "به", f: "ba" }, " ", ps), + [ + [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], + [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], + [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], + [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], + [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]], + [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]], + ], + ) + ).toEqual([ + [[{p: "به کېدم", f: "ba kedum"}], [{p: "به کېدو", f: "ba kedoo"}]], + [[{p: "به کېدم", f: "ba kedum"}], [{p: "به کېدو", f: "ba kedoo"}]], + [[{p: "به کېدې", f: "ba kede"}], [{p: "به کېدئ", f: "ba kedeyy"}]], + [[{p: "به کېدې", f: "ba kede"}], [{p: "به کېدئ", f: "ba kedeyy"}]], + [[{p: "به کېده", f: "ba kedu"}, {p: "به کېدو", f: "ba kedo"}], [{p: "به کېدل", f: "ba kedul"}]], + [[{p: "به کېده", f: "ba keda"}], [{p: "به کېدې", f: "ba kede"}]], + ]) +}) + +// test(`allThirdPersMascPlur should work`, () => { +// expect( +// allThirdPersMascPlur([ +// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], +// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], +// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], +// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], +// [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]] +// ]) +// ).toEqual([ +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// ]); +// expect( +// allThirdPersMascPlur({ +// short: [ +// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], +// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]], +// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], +// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]], +// [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]], +// ], +// long: [ +// [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]], +// [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]], +// [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]], +// [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]], +// [[{p: "کېدله", f: "kedulu"}, {p: "کېدلو", f: "kedulo"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدله", f: "kedula"}], [{p: "کېدلې", f: "kedule"}]], +// ], +// }) +// ).toEqual({ +// short: [ +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// ], +// long: [ +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]], +// ], +// }); +// const matrixBase: VerbForm = { +// mascSing: [ +// [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]], +// [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]], +// [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]], +// [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]], +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// ], +// mascPlur: [ +// [[{p: "ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]], +// [[{p: "ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]], +// [[{p: "ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]], +// [[{p: "ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]], +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// ], +// femSing: [ +// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], +// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], +// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], +// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// ], +// femPlur: [ +// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], +// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]], +// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], +// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// ], +// }; + +// // NOTE: This should never really be used, because this is only used of the past tense +// // versions on grammatically transitive verbs and the objectMatrixes are only used with +// // present forms of verbs, but testing to cover all type safety +// expect(allThirdPersMascPlur(matrixBase)).toEqual({ +// mascSing: [ +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]], +// ], +// mascPlur: [ +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]], +// ], +// femSing: [ +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// ], +// femPlur: [ +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]], +// ], +// }); +// }); + +test(`allMascFirstInflection should work`, () => { + expect( + allMascFirstInflection({ + masc: [ + [{p: "زوړ", f: "zoR"}], + [{p: "زاړه", f: "zaaRu"}], + [{p: "زړو", f: "zaRo"}], + ], + fem: [ + [{p: "زړه", f: "zaRa"}], + [{p: "زړې", f: "zaRe"}], + [{p: "زړو", f: "zaRo"}], + ], + }) + ).toEqual({ + masc: [ + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + ], + fem: [ + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + ], + }) + expect( + allMascFirstInflection({ + short: { + masc: [ + [{p: "زوړ", f: "zoR"}], + [{p: "زاړه", f: "zaaRu"}], + [{p: "زړو", f: "zaRo"}], + ], + fem: [ + [{p: "زړه", f: "zaRa"}], + [{p: "زړې", f: "zaRe"}], + [{p: "زړو", f: "zaRo"}], + ], + }, + long: { + masc: [ + [{p: "زووړ", f: "zoooR"}], + [{p: "زاااړه", f: "zaaaaRu"}], + [{p: "زړو", f: "zaRo"}], + ], + fem: [ + [{p: "زړه", f: "zaRa"}], + [{p: "زړې", f: "zaRe"}], + [{p: "زړو", f: "zaRo"}], + ], + } + }) + ).toEqual({ + short: { + masc: [ + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + ], + fem: [ + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + [{p: "زاړه", f: "zaaRu"}], + ], + }, + long: { + masc: [ + [{p: "زاااړه", f: "zaaaaRu"}], + [{p: "زاااړه", f: "zaaaaRu"}], + [{p: "زاااړه", f: "zaaaaRu"}], + ], + fem: [ + [{p: "زاااړه", f: "zaaaaRu"}], + [{p: "زاااړه", f: "zaaaaRu"}], + [{p: "زاااړه", f: "zaaaaRu"}], + ], + }, + }); +}); + +test('concat inflections', () => { + const unisexInfs: T.UnisexInflections = { + masc: [ + [{ p: "زوړ", f: "zoR" }], + [{ p: "زاړه", f: "zaaRu" }], + [{ p: "زړو", f: "zaRo" }], + ], + fem: [ + [{ p: "زړه", f: "zaRa" }], + [{ p: "زړې", f: "zaRe" }], + [{ p: "زړو", f: "zaRo" }], + ], + }; + const partInfs: T.UnisexInflections = { + masc: [ + [{p: "شوی", f: "shuwey"}], + [{p: "شوي", f: "shuwee"}], + [{p: "شویو", f: "shuwiyo" }, { p: "شوو", f: "shuwo" }], + ], + fem: [ + [{p: "شوې", f: "shuwe"}], + [{p: "شوې", f: "shuwe"}], + [{p: "شوو", f: "shuwo"}], + ], + }; + expect(concatInflections(unisexInfs, partInfs)).toEqual({ + masc: [ + [{p: "زوړ شوی", f: "zoR shuwey"}], + [{p: "زاړه شوي", f: "zaaRu shuwee"}], + [{p: "زړو شویو", f: "zaRo shuwiyo"}, {p: "زړو شوو", f: "zaRo shuwo"}], + ], + fem: [ + [{p: "زړه شوې", f: "zaRa shuwe"}], + [{p: "زړې شوې", f: "zaRe shuwe"}], + [{p: "زړو شوو", f: "zaRo shuwo"}], + ], + }); + // TODO: Should also work this way + // const unisexInfs2: UnisexInflections = { + // masc: [ + // [{ p: "زوړ", f: "zoR" }, { p: "تور", f: "tor"}], + // [{ p: "زاړه", f: "zaaRu" }], + // [{ p: "زړو", f: "zaRo" }], + // ], + // fem: [ + // [{ p: "زړه", f: "zaRa" }], + // [{ p: "زړې", f: "zaRe" }], + // [{ p: "زړو", f: "zaRo" }], + // ], + // }; + // const partInfs2: UnisexInflections = { + // masc: [ + // [{p: "شوی", f: "shuwey"}], + // [{p: "شوي", f: "shuwee"}], + // [{p: "شویو", f: "shuwiyo" }], + // ], + // fem: [ + // [{p: "شوې", f: "shuwe"}], + // [{p: "شوې", f: "shuwe"}], + // [{p: "شوو", f: "shuwo"}], + // ], + // }; + // expect(concatInflections(unisexInfs2, partInfs2)).toEqual({ + // masc: [ + // [{p: "زوړ شوی", f: "zoR shuwey"}, {p: "تور شوی", f: "tor shuwey"}], + // [{p: "زاړه شوي", f: "zaaRu shuwee"}], + // [{p: "زړو شویو", f: "zaRo shuwiyo"}], + // ], + // fem: [ + // [{p: "زړه شوې", f: "zaRa shuwe"}], + // [{p: "زړې شوې", f: "zaRe shuwe"}], + // [{p: "زړو شوو", f: "zaRo shuwo"}], + // ], + // }); + expect(concatInflections({ p: "خفه", f: "khufa" }, partInfs)).toEqual({ + masc: [ + [{p: "خفه شوی", f: "khufa shuwey"}], + [{p: "خفه شوي", f: "khufa shuwee"}], + [{p: "خفه شویو", f: "khufa shuwiyo"}, {p: "خفه شوو", f: "khufa shuwo"}], + ], + fem: [ + [{p: "خفه شوې", f: "khufa shuwe"}], + [{p: "خفه شوې", f: "khufa shuwe"}], + [{p: "خفه شوو", f: "khufa shuwo"}], + ], + }); +}); + +test("psStringEquals", () => { + expect( + psStringEquals({ p: "تور", f: "tor" }, { p: "تور", f: "tor" }) + ).toBe(true); + expect( + psStringEquals({ p: "بور", f: "bor" }, { p: "تور", f: "tor" }) + ).toBe(false); +}); + +test("removeRetroflexR", () => { + expect( + removeRetroflexR({ p: "وکړ", f: "óokR" }), + ).toEqual({ p: "وک", f: "óok" }); +}); \ No newline at end of file diff --git a/src/lib/p-text-helpers.ts b/src/lib/p-text-helpers.ts new file mode 100644 index 0000000..c3cf04c --- /dev/null +++ b/src/lib/p-text-helpers.ts @@ -0,0 +1,713 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + inflectRegularYeyUnisex, +} from "./pashto-inflector"; +import { baParticle } from "./grammar-units"; +import { + getBlockRowCol, + getPersonInflectionsKey, +} from "./misc-helpers"; +import * as T from "../types"; + +/** + * Concats sections of Pashto text with Pashto and Phonetics + * in PsString type, also accepts spaces as " " + * + * @param items + */ +export function concatPsString(...items: Array): T.PsString; +export function concatPsString(...items: Array | " " | "">): T.LengthOptions; +export function concatPsString(...items: Array | T.OptionalPersonInflections> | " " | "">): T.OptionalPersonInflections>; +export function concatPsString(...items: Array | " " | "">): T.FullForm; +export function concatPsString(...items: Array | T.FullForm | " " | "">): T.FullForm { + const hasPersonInflections = items.some((x) => ((typeof x !== "string") && ("mascSing" in x))); + if (hasPersonInflections) { + const forceInflection = ( + arr: Array | " " | "">, + inflection: T.PersonInflectionsField, + ): Array | " " | ""> => ( + arr.map((element) => (typeof element !== "string" && "mascSing" in element) + ? element[inflection] + : element + ) + ) + return { + mascSing: concatPsString(...forceInflection(items, "mascSing")), + mascPlur: concatPsString(...forceInflection(items, "mascPlur")), + femSing: concatPsString(...forceInflection(items, "femSing")), + femPlur: concatPsString(...forceInflection(items, "femPlur")), + }; + } + const itemsWOutPersInfs = items as ("" | " " | T.SingleOrLengthOpts)[]; + const hasLengthOptions = itemsWOutPersInfs.some((x) => (typeof x !== "string") && ("long" in x)); + if (hasLengthOptions) { + const forceLength = ( + arr: Array | " ">, + length: "long" | "short" | "mini", + ): Array => ( + arr.map((element) => (element !== " " && "long" in element) + ? element[length] || element.short + : element + ) + ); + const hasMini = itemsWOutPersInfs.some((x) => typeof x !== "string" && ("mini" in x)); + return { + ...hasMini ? { + mini: concatPsString(...forceLength(items as Array | " ">, "mini")), + } : {}, + short: concatPsString(...forceLength(items as Array | " ">, "short")), + long: concatPsString(...forceLength(items as Array | " ">, "long")), + }; + } + const itemsWOutLengthOptions = itemsWOutPersInfs as ("" | " " | T.PsString)[]; + const concatField = (k: T.PsStringField): string => ( + itemsWOutLengthOptions.map((item): string => { + if (item === " ") return " "; + if (item === "") return ""; + return item[k]; + }).join("") + ); + return { + p: concatField("p"), + f: concatField("f"), + }; +} + +export function psFunction(ps: T.PsString, func: (s: string) => string): T.PsString { + return makePsString( + func(ps.p), + func(ps.f), + ); +} + +export function psIncludes(ps: T.PsString, inc: T.PsString): boolean { + return ps.p.includes(inc.p) && ps.f.includes(inc.f); +} + +export function hasBaParticle(ps: T.PsString): boolean { + return psIncludes(ps, concatPsString(baParticle, " ")); +} + +export function psRemove(ps: T.PsString, remove: T.PsString): T.PsString { + return makePsString( + ps.p.replace(remove.p, ""), + ps.f.replace(remove.f, ""), + ); +} + +export function psInsertWord(ps: T.PsString, toInsert: T.PsString, pos: number): T.PsString { + const pWords = ps.p.split(" "); + const fWords = ps.f.split(" "); + const pIns = [...pWords.slice(0, pos), toInsert.p, ...pWords.slice(pos)]; + const fIns = [...fWords.slice(0, pos), toInsert.f, ...fWords.slice(pos)]; + return makePsString( + pIns.join(" "), + fIns.join(" "), + ); +} + +/** + * If a به - ba particle is present in a PsString form, ensure that it is placed in word pos + * If no به - ba is present, return as is + * + * @param ps + * @param pos + */ +export function ensureBaAt(ps: T.PsString, pos: number): T.PsString; +export function ensureBaAt(ps: T.SingleOrLengthOpts, pos: number): T.SingleOrLengthOpts; +export function ensureBaAt(ps: T.FullForm, pos: number): T.FullForm; +export function ensureBaAt(ps: T.FullForm, pos: number): T.FullForm { + if ("mascSing" in ps) { + return { + mascSing: ensureBaAt(ps.mascSing, pos), + mascPlur: ensureBaAt(ps.mascPlur, pos), + femSing: ensureBaAt(ps.femSing, pos), + femPlur: ensureBaAt(ps.femPlur, pos), + }; + } + if ("long" in ps) { + return { + long: ensureBaAt(ps.long, pos), + short: ensureBaAt(ps.short, pos), + ...ps.mini ? { + mini: ensureBaAt(ps.mini, pos), + } : {}, + }; + } + if (!psIncludes(ps, concatPsString(baParticle, " "))) { + return ps; + } + const baRemoved = psRemove(ps, concatPsString(baParticle, " ")); + const baInserted = psInsertWord(baRemoved, baParticle, pos); + return baInserted; +} + +/** + * Returns the first phonetics value in a comma-seperated list + * + * @param f - a phonetics string + */ +export function firstPhonetics(f: string): string { + return f.split(",")[0]; +} + +/** + * returs a PsString or DictionaryEntry ensuring only one phonetics variation + * + * @param ps + */ +export function removeFVariants(ps: T.PsString): T.PsString { + return { + ...ps, + f: firstPhonetics(ps.f), + }; +} + +/** + * Lets us know if all the forms of a verb block are the same + * + * @param block + */ +export function isAllOne (block: T.VerbBlock | T.ImperativeBlock): boolean { + return block.reduce((isTheSame, row, i, src) => ( + isTheSame && + psStringEquals(row[0][0], src[0][0][0]) && + psStringEquals(row[1][0], src[1][0][0]) + ), true) as unknown as boolean; +} + +/** + * Creates a Pashto string structure + * + * @param p - the Pashto text + * @param f - the phonetics text + */ +export function makePsString(p: string, f: string): T.PsString { + return { p, f }; +} + +/** + * Retuns a Pashto string with the ل - ul on the end removed + * + * @param s + */ +export function removeEndingL(s: T.PsString): T.PsString { + const lOnEnd = (): boolean => { + const lastPLetter = s.p.slice(-1); + const lastFLetters = s.f.slice(-2); + return lastPLetter === "ل" && ["ul", "úl"].includes(lastFLetters); + }; + if (!lOnEnd()) return s; + return { + p: s.p.substr(0, s.p.length-1), + f: s.f.substr(0, s.f.length-2), + }; +} + +function getMatchingInflection( + infs: T.UnisexInflections, + persNum: number, + singPlur: number, +): T.PsString { + return infs[persNum % 2 === 0 ? "masc" : "fem"][singPlur][0]; +} + +export function isVerbBlock(x: any) { + return ( + Array.isArray(x) && + (x.length === 6) && + "p" in x[0][0][0] + ); +} + + +type toAddToForm = Array<" " | T.SingleOrLengthOpts | T.SingleOrLengthOpts | T.SingleOrLengthOpts[] | T.OptionalPersonInflections | T.VerbBlock>; +type toAddToFormLengthChosen = Array<" " | T.PsString | T.UnisexInflections | T.PsString[] | T.OptionalPersonInflections | T.VerbBlock>; +export function addToForm( + toAdd: toAddToForm, + base: T.VerbForm, + disableLCheck?: boolean, +): T.VerbForm; +export function addToForm( + toAdd: toAddToForm, + base: T.ImperativeForm, + disableLCheck?: boolean, +): T.ImperativeForm; +export function addToForm( + toAdd: toAddToForm, + base: T.VerbForm | T.ImperativeForm, + disableLCheck?: boolean, +): T.VerbForm | T.ImperativeForm { + function startsWithBa(ps: T.PsString): boolean { + const start = makePsString( + ps.p.slice(0, 3), + ps.f.slice(0, 3), + ); + return psStringEquals( + start, + concatPsString(baParticle, " "), + ); + } + function removeBa(ps: T.PsString): T.PsString { + return makePsString( + ps.p.slice(3), + ps.f.slice(3), + ); + } + const toAddIncludesObjectMatrix = () => ( + toAdd.some((x) => x !== " " && "mascSing" in x) + ); + // TODO: Weird stuff with overloading throwing errors + function makeNonObjectMatrixForm( + base: T.VerbBlock | T.LengthOptions, + presObject?: "mascSing" | "mascPlur" | "femSing" | "femPlur", + ): T.SingleOrLengthOpts; + function makeNonObjectMatrixForm( + base: T.ImperativeBlock | T.LengthOptions | T.VerbBlock | T.LengthOptions, + presObject?: "mascSing" | "mascPlur" | "femSing" | "femPlur", + ): T.SingleOrLengthOpts; + function makeNonObjectMatrixForm( + base: T.SingleOrLengthOpts | T.SingleOrLengthOpts, + presObject?: "mascSing" | "mascPlur" | "femSing" | "femPlur", + ): T.SingleOrLengthOpts | T.SingleOrLengthOpts { + function makeLengthOption(length: "short" | "long" | "mini"): T.ImperativeBlock; + function makeLengthOption(length: "short" | "long" | "mini"): T.VerbBlock; + function makeLengthOption(length: "short" | "long" | "mini"): T.ImperativeForm | T.VerbBlock { + // If the base is long and there are also length options in toAdd, + // then make the short and long versions of the base as variations on each item + const multiplyEachVariationBy = toAdd.reduce((acc, cur) => ( + // make sure we don't make 6 variations when concating a verb block to a verb block! + (Array.isArray(cur) && !isVerbBlock(cur)) ? Math.max(acc, cur.length) : acc + ), 1) + const b = "long" in base + ? base[length] || base.short // in case mini does not exist + : base; + const addingLengthChosen: toAddToFormLengthChosen = toAdd.map((element) => { + if (element !== " " && "long" in element) { + return element[length] || element.short; + } + if (Array.isArray(element)) { + const arr = element as T.SingleOrLengthOpts[] | T.VerbBlock; + return arr.map((e: any) => "long" in e ? (e[length] || e.short) : e) + } + return element; + }); + const makeItem = (ps: T.PsString, persNum: number, singPlur: number, variation: number, verbBlock?: boolean): T.PsString => { + const add = addingLengthChosen.map((e) => { + if (e === " ") return e; + if (isVerbBlock(e)) { + const block = e as T.VerbBlock; + return block[persNum][singPlur][0]; + } + const f = e as T.UnisexInflections | T.PsString[] | T.OptionalPersonInflections; + if (Array.isArray(f)) { + return f[Math.min(variation, f.length-1)]; + } + if ("masc" in f) { + return getMatchingInflection(f, persNum as number, singPlur as number); + } + if ("mascSing" in f) { + return f[presObject || /* istanbul ignore next */ "mascSing"]; + } + return f; + }); + // avoid adding the redundant ل on past verb endings + // TODO: If there's a ba in front, remove it and put it on the front + return (length === "long") && verbBlock && (ps.p === "ل") && !disableLCheck + ? concatPsString(...add) + : startsWithBa(ps) + ? concatPsString(baParticle, " ", ...add, removeBa(ps)) + : concatPsString(...add, ps); + } + if (b.length === 6) { + return b.map((person, persNum) => ( + person.map((item, singPlur) => ( + // @ts-ignore + item.reduce((vars, ps) => { + const varIndexes = [...Array(multiplyEachVariationBy).keys()]; + return [ + ...vars, + ...varIndexes.map((varIndex) => ( + makeItem(ps, persNum, singPlur, varIndex, true) + )), + ]; + }, []) as unknown as T.ArrayOneOrMore + )) + )) as T.VerbBlock; + } + // TODO: CHECK IF THE IMPERATIVE BLOCKS WORK?? + return mapImperativeBlock((ps, persNumber, singPlur) => ( + makeItem(ps, persNumber as number, singPlur as number, 0) + ), b); + } + const useLengthOptions = ( + ("long" in base) || + toAdd.some((element) => ( + (element !== " " && "long" in element) + || + // @ts-ignore + (Array.isArray(element) && element.some((e) => "long" in e)) + )) + ); + if (useLengthOptions) { + // might be totally unneccessary... + const miniInToAdd = toAdd.some((x) => ( + x !== " " && "mini" in x + )); + return { + long: makeLengthOption("long"), + short: makeLengthOption("short"), + ...("mini" in base || miniInToAdd) ? { + mini: makeLengthOption("mini"), + } : {}, + }; + } + // there are no length options in any of the elements or base + return makeLengthOption("long"); + } + if (toAddIncludesObjectMatrix() && !("mascSing" in base)) { + return { + mascSing: makeNonObjectMatrixForm(base, "mascSing"), + mascPlur: makeNonObjectMatrixForm(base, "mascPlur"), + femSing: makeNonObjectMatrixForm(base, "femSing"), + femPlur: makeNonObjectMatrixForm(base, "femPlur"), + }; + } + if ("mascSing" in base) { + return { + // TODO: Is this really what we want to do? + // is there ever a case where we would want the object matrix of a compliment + // to line up with the object matrix of a base verb? + mascSing: makeNonObjectMatrixForm(base.mascSing, "mascSing"), + mascPlur: makeNonObjectMatrixForm(base.mascPlur, "mascPlur"), + femSing: makeNonObjectMatrixForm(base.femSing, "femSing"), + femPlur: makeNonObjectMatrixForm(base.femPlur, "femPlur"), + }; + } + return makeNonObjectMatrixForm(base); +} + +function mapImperativeBlock(f: (ps: T.PsString, i?: number, j?: number) => T.PsString, block: T.ImperativeBlock): T.ImperativeBlock { + return block.map((person, i) => ( + person.map((item, j) => ( + item.map((variation) => ( + f(variation, i, j) + )) + )) + )) as T.ImperativeBlock; +} + +export function mapVerbBlock(f: (ps: T.PsString, i?: number, j?: number) => T.PsString, block: T.VerbBlock): T.VerbBlock { + return block.map((person, i) => ( + person.map((item, j) => ( + item.map((variation) => ( + f(variation, i, j) + )) + )) + )) as T.VerbBlock; +} + +export function unisexInfToObjectMatrix(inf: T.UnisexInflections): T.OptionalPersonInflections { + return { + mascSing: inf.masc[0][0], + mascPlur: inf.masc[1][0], + femSing: inf.fem[0][0], + femPlur: inf.fem[1][0], + }; +} + +export function concatInflections( + comp: T.PsString | T.SingleOrLengthOpts, infs: T.SingleOrLengthOpts +): T.SingleOrLengthOpts { + const containsLengthOptions = "long" in infs || "long" in comp; + const ensureL = (x: T.SingleOrLengthOpts, length: "short" | "long"): T => ( + ("long" in x) ? x[length] : x + ); + if (containsLengthOptions) { + return { + short: concatInflections( + ensureL(comp, "short"), + ensureL(infs, "short"), + ) as T.UnisexInflections, + long: concatInflections( + ensureL(comp, "long"), + ensureL(infs, "long"), + ) as T.UnisexInflections, + }; + } + // now length options are removed + const complement = comp as T.PsString | T.UnisexInflections; + const infsOneL = infs as T.UnisexInflections; + const mapGender = (gender: "masc" | "fem") => ( + infsOneL[gender].map((inf: T.ArrayOneOrMore, i) => ( + inf.map((variation) => { + const c = ("masc" in complement) + ? complement[gender][i][0] + : complement; + return concatPsString(c, " ", variation) + }) + )) as T.ArrayFixed, 3> + ); + return { + masc: mapGender("masc"), + fem: mapGender("fem"), + }; +} + +/** + * Checks if a given infinitive ends in یل - yul such as وایل - waayul etc. + * + * @param s + */ +export function yulEndingInfinitive(s: T.PsString): boolean { + const pEnding = s.p.slice(-2); + const fEnding = s.f.slice(-3); + return ((pEnding === "یل") && (["yul", "yúl"].includes(fEnding))); +} + +export function psStringFromEntry(entry: T.DictionaryEntry): T.PsString { + return makePsString( + entry.p, + firstPhonetics(entry.f), + ); +} + +export function allOnePersonInflection(block: T.ImperativeForm, person: T.Person): T.SingleOrLengthOpts; +export function allOnePersonInflection(block: T.VerbForm, person: T.Person): T.SingleOrLengthOpts; +export function allOnePersonInflection(block: T.SingleOrLengthOpts, person: T.Person): T.SingleOrLengthOpts; +export function allOnePersonInflection( + block: T.VerbForm | T.ImperativeForm | T.SingleOrLengthOpts, person: T.Person +): T.SingleOrLengthOpts | T.SingleOrLengthOpts | T.SingleOrLengthOpts { + if ("mascSing" in block) { + const key = getPersonInflectionsKey(person); + return block[key]; + } + return block; +} + +export function choosePersInf(x: T.FullForm, persInf: T.PersonInflectionsField): T.SingleOrLengthOpts { + if ("mascSing" in x) { + return x[persInf]; + } + return x; +} + +export function allOnePersonVerbForm(block: T.VerbForm, person: T.Person): T.VerbForm { + if ("mascSing" in block) { + return { + mascSing: allOnePersonVerbForm(block.mascSing, person) as T.SingleOrLengthOpts, + mascPlur: allOnePersonVerbForm(block.mascPlur, person) as T.SingleOrLengthOpts, + femSing: allOnePersonVerbForm(block.femSing, person) as T.SingleOrLengthOpts, + femPlur: allOnePersonVerbForm(block.femPlur, person) as T.SingleOrLengthOpts, + }; + } + if ("long" in block) { + return { + long: allOnePersonVerbForm(block.long, person) as T.VerbBlock, + short: allOnePersonVerbForm(block.short, person) as T.VerbBlock, + ...block.mini ? { + mini: allOnePersonVerbForm(block.mini, person) as T.VerbBlock, + } : {}, + }; + } + const [row, col] = getBlockRowCol(person) + const p = block[row][col]; + return [ + [p, p], + [p, p], + [p, p], + [p, p], + [p, p], + [p, p], + ]; +} + +/** + * Returns a set of inflections that are all masculine plural + * (for conjugating the past participle of gramatically transitive verbs) + * + * @param inflections + */ +export function allMascFirstInflection(inflections: T.SingleOrLengthOpts): T.SingleOrLengthOpts { + if ("long" in inflections) { + return { + long: allMascFirstInflection(inflections.long) as T.UnisexInflections, + short: allMascFirstInflection(inflections.short) as T.UnisexInflections, + }; + } + const mp = inflections.masc[1]; + return { + masc: [ + mp, + mp, + mp, + ], + fem: [ + mp, + mp, + mp, + ], + }; +} + +export function complementInflects(inf: T.UnisexInflections): boolean { + return ( + (inf.masc[0][0].p !== inf.masc[2][0].p) + || + (inf.fem[0][0].p !== inf.fem[1][0].p) + || + (inf.masc[0][0].p !== inf.fem[0][0].p) + ); + // OR MORE THOROUGH? + // const fm = inf.masc[0][0]; + // return !( + // psStringEquals(inf.masc[1][0], fm) && + // psStringEquals(inf.masc[2][0], fm) && + // psStringEquals(inf.fem[1][0], fm) && + // psStringEquals(inf.fem[2][0], fm) + // ); +} + +export function psStringEquals(ps1: T.PsString, ps2: T.PsString): boolean { + return (ps1.p === ps2.p) && (ps1.f === ps2.f); +} + +export function removeRetroflexR(ps: T.PsString): T.PsString { + return { + p: ps.p.replace("ړ", ""), + f: ps.f.replace("R", ""), + }; +} + +export function inflectYey(ps: T.SingleOrLengthOpts): T.SingleOrLengthOpts { + if ("long" in ps) { + return { + long: inflectYey(ps.long) as T.UnisexInflections, + short: inflectYey(ps.short) as T.UnisexInflections, + } + } + return inflectRegularYeyUnisex(ps.p, ps.f); +} + +export function clamp(s: string, chars: number): string { + return `${s.slice(0, 20)}${s.length > 20 ? "..." : ""}`; +} + +export function addEnglish( + english: T.EnglishBlock | string, + ps: T.VerbBlock | T.ImperativeBlock | T.ArrayOneOrMore, +) { + if (Array.isArray(ps[0]) && ps.length === 6) { + return mapVerbBlock((psString, i, j) => ({ + ...psString, + // @ts-ignore + e: typeof english === "string" ? english : english[i][j], + }), ps as T.VerbBlock) + } + if (Array.isArray(ps[0]) && ps.length === 2) { + return mapImperativeBlock((psString, i, j) => ({ + ...psString, + // @ts-ignore + e: typeof english === "string" ? english : english[i][j], + }), ps as T.ImperativeBlock) + } + const line = ps as T.ArrayOneOrMore; + return line.map((psString) => ( + { ...psString, e: typeof english === "string" ? english : english[0][0] } + )); +} + +export function beginsWithDirectionalPronoun(ps: T.PsString): boolean { + const beginning = ps.p.slice(0, 2); + return ["را", "در", "ور"].includes(beginning); +} + +export function checkForOoPrefix(ps: T.PsString): boolean { + return ps.p[0] === "و" && ["oo", "óo"].includes(ps.f.slice(0, 2)); +} + +export function startsWithBa(ps: T.PsString): boolean { + return (ps.p.slice(0, 3) === "به " && ps.f.slice(0, 3) === "ba "); +} + +/** + * Removes a given head from a verb form, returning just the second half of the split + * It keeps به in front if there is a به at the beginning of the form + * + * @param head - the first part of a verb split + * @param ps - the whole verb form that needs the head removed + */ +export function removeHead(head: T.PsString, ps: T.PsString): T.PsString { + const hasBa = startsWithBa(ps); + const base = hasBa ? psRemove(ps, concatPsString(baParticle, " ")) : ps; + const chopped = { + p: base.p.slice(head.p.length), + f: base.f.slice(head.f.length), + }; + return hasBa + ? concatPsString(baParticle, " ", chopped) + : chopped; +} + +export function uniquePsStringArray(arr: T.PsString[]): T.PsString[] { + return [ + // @ts-ignore + ...new Set(arr.map((o) => JSON.stringify(o))), + ].map((string) => JSON.parse(string)) as T.PsString[]; +} + +export function splitOffLeapfrogWord(ps: T.PsString): [T.PsString, T.PsString] { + const pWords = ps.p.split(" "); + const fWords = ps.f.split(" "); + const beginning = makePsString( + pWords.slice(0, -1).join(" "), + fWords.slice(0, -1).join(" "), + ); + const end = makePsString( + pWords.slice(-1).join(" "), + fWords.slice(-1).join(" "), + ); + return [beginning, end]; +} + +export function removeObjComp(comp: T.PsString | undefined, ps: T.PsString): T.PsString { + if (!comp) { + return ps; + } + return makePsString( + ps.p.replace(comp.p + " ", ""), + ps.f.replace(comp.f + " ", ""), + ); +} + +export function psStringContains(ps: T.PsString, searchFor: T.PsString): boolean { + return ( + ps.p.includes(searchFor.p) + && + ps.f.includes(searchFor.f) + ); +} + +export function removeStartingTick(f: string): string { + if (f[0] === "`") { + return f.slice(1); + } + return f; +} + +export function ensureShortWurShwaShift(ps: T.PsString): T.PsString { + if (ps.p.slice(-2) === "وړ" && ps.f.slice(-2) === "wR") { + return { + p: ps.p, + f: ps.f.slice(0, -2) + "wuR", + }; + } + return ps; +} diff --git a/src/lib/pashto-consonants.ts b/src/lib/pashto-consonants.ts new file mode 100644 index 0000000..a290d07 --- /dev/null +++ b/src/lib/pashto-consonants.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +export const pashtoConsonants = ["ب", "پ", "ت", "ټ", "ث", "ج", "چ", "ح", "خ", "څ", "ځ", "د", "ډ", "ذ", "ر", "ړ", "ز", "ژ", "ږ", "س", "ش", "ښ", "ص", "ض", "ط", "ظ", "غ", "ف", "ق", "ک", "ګ", "گ", "ل", "ل", "م", "ن", "ڼ"]; diff --git a/src/lib/pashto-inflector.test.ts b/src/lib/pashto-inflector.test.ts new file mode 100644 index 0000000..8c68400 --- /dev/null +++ b/src/lib/pashto-inflector.test.ts @@ -0,0 +1,636 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +// TODO: See if there are animate feminine words ending in ي and test + +import { + inflectRegularYeyUnisex, + inflectWord, +} from "./pashto-inflector"; +import * as T from "../types"; + +const adjectives: Array<{ + in: T.DictionaryEntry, + out: T.Inflections | false, +}> = [ + // irregular adj. + { + in: { + ts: 1527815451, + p: "زوړ", + f: "zoR", + e: "old", + c: "adj. irreg.", + i: 6264, + infap: "زاړه", + infaf: "zaaRu", + infbp: "زړ", + infbf: "zaR", + }, + out: { + masc: [ + [{p: "زوړ", f: "zoR"}], + [{p: "زاړه", f: "zaaRu"}], + [{p: "زړو", f: "zaRo"}], + ], + fem: [ + [{p: "زړه", f: "zaRa"}], + [{p: "زړې", f: "zaRe"}], + [{p: "زړو", f: "zaRo"}], + ], + }, + }, + // regular adjective ending in ی + { + in: { + ts: 1527815306, + p: "ستړی", + f: "stúRey", + e: "tired", + c: "adj.", + i: 6564, + }, + out: { + masc: [ + [{p: "ستړی", f: "stúRey"}], + [{p: "ستړي", f: "stúRee"}], + [{p: "ستړیو", f: "stúRiyo"}, {p: "ستړو", f: "stúRo"}], + ], + fem: [ + [{p: "ستړې", f: "stúRe"}], + [{p: "ستړې", f: "stúRe"}], + [{p: "ستړو", f: "stúRo"}], + ], + }, + }, + // regular adjective ending in ی with stress on the end + { + in: { + ts: 1527813636, + p: "وروستی", + f: "wroostéy", + e: "last, latest, recent", + c: "adj.", + i: 12026, + }, + out: { + masc: [ + [{p: "وروستی", f: "wroostéy"}], + [{p: "وروستي", f: "wroostée"}], + [{p: "وروستیو", f: "wroostiyo"}, {p: "وروستو", f: "wroostó"}], + ], + fem: [ + [{p: "وروستۍ", f: "wroostúy"}], + [{p: "وروستۍ", f: "wroostúy"}], + [{p: "وروستیو", f: "wroostúyo"}, {p: "وروستو", f: "wroostó"}], + ], + }, + }, + // regular adjective ending in a consonant + { + in: { + ts: 1527813498, + p: "سپک", + f: "spuk", + e: "light; dishonorable, not respectable", + c: "adj.", + i: 6502, + }, + out: { + masc: [ + [{p: "سپک", f: "spuk"}], + [{p: "سپک", f: "spuk"}], + [{p: "سپکو", f: "spuko"}], + ], + fem: [ + [{p: "سپکه", f: "spuka"}], + [{p: "سپکې", f: "spuke"}], + [{p: "سپکو", f: "spuko"}], + ], + }, + }, + { + in: { + ts: 1527812862, + p: "لوی", + f: "looy", + e: "big, great, large", + c: "adj.", + i: 9945, + }, + out: { + masc: [ + [{p: "لوی", f: "looy"}], + [{p: "لوی", f: "looy"}], + [{p: "لویو", f: "looyo"}], + ], + fem: [ + [{p: "لویه", f: "looya"}], + [{p: "لویې", f: "looye"}], + [{p: "لویو", f: "looyo"}], + ], + }, + }, + { + in: { + ts: 1527811469, + p: "پوه", + f: "poh", + e: "understanding, having understood; intelligent, quick, wise, clever; expert", + c: "adj.", + i: 2430, + }, + out: { + masc: [ + [{p: "پوه", f: "poh"}], + [{p: "پوه", f: "poh"}], + [{p: "پوهو", f: "poho"}], + ], + fem: [ + [{p: "پوهه", f: "poha"}], + [{p: "پوهې", f: "pohe"}], + [{p: "پوهو", f: "poho"}], + ], + }, + }, + // adjective non-inflecting + { + in: { + ts: 1527812798, + p: "خفه", + f: "khufa", + e: "sad, upset, angry; choked, suffocated", + c: "adj.", + i: 4631, + }, + out: false, + }, + { + in: { + ts: 1527814727, + p: "اجباري", + f: "ijbaaree", + e: "compulsory, obligatory", + c: "adj.", + i: 167, + }, + out: false, + }, +]; + +const nouns: Array<{ + in: T.DictionaryEntry, + out: T.Inflections | false, +}> = [ + // ## UNISEX + // Unisex noun irregular + { + in: { + ts: 1527812908, + p: "مېلمه", + f: "melmá", + e: "guest", + c: "n. m. irreg. unisex", + i: 11244, + infap: "مېلمانه", + infaf: "melmaanu", + infbp: "مېلمن", + infbf: "melman", + }, + out: { + masc: [ + [{p: "مېلمه", f: "melmá"}], + [{p: "مېلمانه", f: "melmaanu"}], + [{p: "مېلمنو", f: "melmano"}], + ], + fem: [ + [{p: "مېلمنه", f: "melmana"}], + [{p: "مېلمنې", f: "melmane"}], + [{p: "مېلمنو", f: "melmano"}], + ], + }, + }, + // Unisex noun ending with ی + { + in: { + ts: 1527814159, + p: "ملګری", + f: "malgúrey", + e: "friend, companion", + c: "n. m. unisex", + i: 10943, + }, + out: { + masc: [ + [{p: "ملګری", f: "malgúrey"}], + [{p: "ملګري", f: "malgúree"}], + [{p: "ملګریو", f: "malgúriyo"}, {p: "ملګرو", f: "malgúro"}], + ], + fem: [ + [{p: "ملګرې", f: "malgúre"}], + [{p: "ملګرې", f: "malgúre"}], + [{p: "ملګرو", f: "malgúro"}], + ], + }, + }, + // Unisex noun ending on ی with emphasis on the end + { + in: { + ts: 1527816431, + p: "ترورزی", + f: "trorzéy", + e: "cousin (son of paternal aunt)", + c: "n. m. unisex", + i: 2900, + }, + out: { + masc: [ + [{p: "ترورزی", f: "trorzéy"}], + [{p: "ترورزي", f: "trorzée"}], + [{p: "ترورزیو", f: "trorziyo"}, {p: "ترورزو", f: "trorzó"}], + ], + fem: [ + [{p: "ترورزۍ", f: "trorzúy"}], + [{p: "ترورزۍ", f: "trorzúy"}], + [{p: "ترورزیو", f: "trorzúyo"}, {p: "ترورزو", f: "trorzó"}], + ], + }, + }, + // Unisex noun ending with a consanant + { + in: { + ts: 1527820043, + p: "چرګ", + f: "churg", + e: "rooster, cock; chicken, poultry", + c: "n. m. unisex", + i: 4101, + }, + out: { + masc: [ + [{p: "چرګ", f: "churg"}], + [{p: "چرګ", f: "churg"}], + [{p: "چرګو", f: "churgo"}], + ], + fem: [ + [{p: "چرګه", f: "churga"}], + [{p: "چرګې", f: "churge"}], + [{p: "چرګو", f: "churgo"}], + ], + }, + }, + // ## MASCULINE + // Masculine regular ending in ی + { + in: { + ts: 1527815251, + p: "سړی", + f: "saRey", + e: "man", + c: "n. m.", + i: 6750, + }, + out: { + masc: [ + [{p: "سړی", f: "saRey"}], + [{p: "سړي", f: "saRee"}], + [{p: "سړیو", f: "saRiyo"}, {p: "سړو", f: "saRo"}], + ], + }, + }, + // Masculine regular ending in ی with emphasis on end + { + in: { + ts: 1527818511, + p: "ترېلی", + f: "treléy", + e: "pool, reservoir", + c: "n. m.", + i: 2931, + }, + out: { + masc: [ + [{p: "ترېلی", f: "treléy"}], + [{p: "ترېلي", f: "trelée"}], + [{p: "ترېلیو", f: "treliyo"}, {p: "ترېلو", f: "trelo"}], + ], + }, + }, + // Masculine ending in tob + { + in: { + i: 11998, + ts: 1586760783536, + p: "مشرتوب", + f: "mushurtob", + e: "leadership, authority, presidency", + c: "n. m.", + }, + out: { + masc: [ + [{p: "مشرتوب", f: "mushurtob"}], + [{p: "مشرتابه", f: "mushurtaabu"}], + [{p: "مشرتبو", f: "mushurtabo"}], + ], + }, + }, + // Masculine irregular + { + in: { + ts: 1527813809, + p: "لمونځ", + f: "lamoondz", + e: "Muslim ritual prayers (namaz, salah, salat)", + c: "n. m. irreg.", + i: 9835, + infap: "لمانځه", + infaf: "lamaandzu", + infbp: "لمنځ", + infbf: "lamandz", + }, + out: { + masc: [ + [{p: "لمونځ", f: "lamoondz"}], + [{p: "لمانځه", f: "lamaandzu"}], + [{p: "لمنځو", f: "lamandzo"}], + ], + }, + }, + // Masculine non-inflecting + { + in: { + ts: 1527812817, + p: "کتاب", + f: "kitaab", + e: "book", + c: "n. m.", + i: 8640, + }, + out: false, + }, + // ## FEMININE + // Feminine regular ending in ه + { + in: { + ts: 1527812797, + p: "ښځه", + f: "xudza", + e: "woman, wife", + c: "n. f.", + i: 7444, + }, + out: { + fem: [ + [{p: "ښځه", f: "xudza"}], + [{p: "ښځې", f: "xudze"}], + [{p: "ښځو", f: "xudzo"}], + ], + }, + }, + { + in: { + ts: 1527821380, + p: "اره", + f: "ará", + e: "saw (the tool)", + c: "n. f.", + i: 365, + }, + out: { + fem: [ + [{p: "اره", f: "ará"}], + [{p: "ارې", f: "are"}], + [{p: "ارو", f: "aro"}], + ], + }, + }, + // Feminine regular ending in ع - a' + { + in: { + ts: 1527820693, + p: "مرجع", + f: "marja'", + e: "reference, authority, body, place to go (for help, shelter, etc.)", + c: "n. f.", + i: 10661, + app: "مراجع", + apf: "maraají’", + }, + out: { + fem: [ + [{p: "مرجع", f: "marja'"}], + [{p: "مرجعې", f: "marje"}], + [{p: "مرجعو", f: "marjo"}], + ], + }, + }, + { + in: { + ts: 1527820212, + p: "منبع", + f: "manbá", + e: "source, origin, resource, cause", + c: "n. f.", + i: 11201, + app: "منابع", + apf: "manaabí", + }, + out: { + fem: [ + [{p: "منبع", f: "manbá"}], + [{p: "منبعې", f: "manbe"}], + [{p: "منبعو", f: "manbo"}], + ], + }, + }, + // Feminine regular ending in ح - a + { + in: { + ts: 1527815506, + p: "ذبح", + f: "zabha", + e: "slaughter, killing, butchering", + c: "n. f.", + i: 5813, + }, + out: { + fem: [ + [{p: "ذبح", f: "zabha"}], + [{p: "ذبحې", f: "zabhe"}], + [{p: "ذبحو", f: "zabho"}], + ], + }, + }, + // Feminine inanimate regular with missing ه + { + in: { + ts: 1527814150, + p: "لار", + f: "laar", + e: "road, way, path", + c: "n. f.", + i: 9593, + }, + out: { + fem: [ + [{p: "لار", f: "laar"}], + [{p: "لارې", f: "laare"}], + [{p: "لارو", f: "laaro"}], + ], + }, + }, + // Feminine animate ending in a consonant + { + in: { + ts: 1527812928, + p: "مور", + f: "mor", + e: "mother, mom", + c: "n. f. anim.", + i: 11113, + }, + out: false, + }, + // Feminine regular inanimate ending in ي + { + in: { + ts: 1527811877, + p: "دوستي", + f: "dostee", + e: "friendship", + c: "n. f.", + i: 5503, + }, + out: { + fem: [ + [{p: "دوستي", f: "dostee"}], + [{p: "دوستۍ", f: "dostuy"}], + [{p: "دوستیو", f: "dostuyo"}], + ], + }, + }, + // Feminine regular ending in ۍ + { + in: { + ts: 1527814203, + p: "کرسۍ", + f: "kUrsuy", + e: "chair, seat, stool", + c: "n. f.", + i: 8718, + }, + out: { + fem: [ + [{p: "کرسۍ", f: "kUrsuy"}], + [{p: "کرسۍ", f: "kUrsuy"}], + [{p: "کرسیو", f: "kUrsuyo"}, { p: "کرسو", f: "kUrso"}], + ], + }, + }, + // Feminine regular ending in ا + { + in: { + ts: 1527812456, + p: "اړتیا", + f: "aRtiyaa, aRtyaa", + e: "need, necessity", + c: "n. f.", + i: 376, + }, + out: { + fem: [ + [{p: "اړتیا", f: "aRtiyaa"}], + [{p: "اړتیاوې", f: "aRtiyaawe"}], + [{p: "اړتیاوو", f: "aRtiyaawo"}], + ], + }, + }, + // Feminine regular ending in اع + { + in: { + ts: 1527821388, + p: "وداع", + f: "widáa'", + e: "farewell, goodbye", + c: "n. f.", + i: 12205, + }, + out: { + fem: [ + [{p: "وداع", f: "widáa'"}], + [{p: "وداعوې", f: "widáawe"}], + [{p: "وداعوو", f: "widáawo"}], + ], + }, + }, + // Word with no inflections + { + in: { + ts: 1527815402, + p: "وړ", + f: "waR", + e: "worthy of, deserving, -able", + c: "suff. / adj.", + i: 12045, + noInf: true, + }, + out: false, + }, +]; + +const others: T.DictionaryEntry[] = [ + { + ts: 1527812612, + p: "ګنډل", + f: "ganDul", + e: "to sew, mend, make, knit", + c: "v. trans.", + i: 9448, + }, + { + ts: 1527812457, + p: "اصلاً", + f: "aslan", + e: "actually", + c: "adv.", + i: 550, + }, +]; + +adjectives.forEach((word) => { + test(`${word.in.p} should inflect properly`, () => { + expect(inflectWord(word.in)).toEqual(word.out); + }); +}); + +nouns.forEach((word) => { + test(`${word.in.p} should inflect properly`, () => { + expect(inflectWord(word.in)).toEqual(word.out); + }); +}); + +others.forEach((word) => { + test(`${word.p} should return false`, () => { + expect(inflectWord(word)).toEqual(false); + }); +}); + +test(`inflectRegularYeyUnisex should work`, () => { + expect(inflectRegularYeyUnisex("لیدونکی", "leedóonkey")).toEqual({ + masc: [ + [{p: "لیدونکی", f: "leedóonkey" }], + [{p: "لیدونکي", f: "leedóonkee" }], + [{p: "لیدونکیو", f: "leedóonkiyo" }, {p: "لیدونکو", f: "leedóonko"}], + ], + fem: [ + [{p: "لیدونکې", f: "leedóonke" }], + [{p: "لیدونکې", f: "leedóonke" }], + [{p: "لیدونکو", f: "leedóonko"}], + ], + }); +}) diff --git a/src/lib/pashto-inflector.ts b/src/lib/pashto-inflector.ts new file mode 100644 index 0000000..7743960 --- /dev/null +++ b/src/lib/pashto-inflector.ts @@ -0,0 +1,315 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { pashtoConsonants } from "./pashto-consonants"; +import * as T from "../types"; + +const endingInSingleARegex = /[^a]'?’?[aá]'?’?$/; +const endingInHeyOrAynRegex = /[^ا][هع]$/; +const endingInAlefRegex = /اع?$/; + +export function inflectWord(word: T.DictionaryEntry): T.Inflections | false { + // If it's a noun/adj, inflect accordingly + // TODO: What about n. f. / adj. that end in ي ?? + if (word.noInf) { + return false; + } + if (word.c && (word.c.includes("adj.") || word.c.includes("unisex"))) { + return handleUnisexWord(word); + } + if (word.c && (word.c.includes("n. m."))) { + return handleMascNoun(word); + } + if (word.c && (word.c.includes("n. f."))) { + return handleFemNoun(word); + } + // It's not a noun/adj + return false; +} + +// LEVEL 2 FUNCTIONS +function handleUnisexWord(word: T.DictionaryEntry): T.Inflections | false { + // Get first of comma seperated phonetics entries + const f = word.f.split(",")[0].trim(); + // Get last letter of Pashto and last two letters of phonetics + // TODO: !!! Handle weird endings / symbols ' etc. + const pEnd = word.p.slice(-1); + if (word.infap && word.infaf && word.infbp && word.infbf) { + return inflectIrregularUnisex(word.p, f, [ + {p: word.infap, f: word.infaf}, + {p: word.infbp, f: word.infbf}, + ]); + } + if (pEnd === "ی" && f.slice(-2) === "ey") { + return inflectRegularYeyUnisex(word.p, f); + } + if (pEnd === "ی" && f.slice(-2) === "éy") { + return inflectEmphasizedYeyUnisex(word.p, f); + } + if ( + pashtoConsonants.includes(pEnd) || + word.p.slice(-2) === "وی" || + word.p.slice(-2) === "ای" || + (word.p.slice(-1) === "ه" && f.slice(-1) === "h") + ) { + return inflectConsonantEndingUnisex(word.p, f); + } + return false; +} + +function handleMascNoun(word: T.DictionaryEntry): T.Inflections | false { + // Get first of comma seperated phonetics entries + const f = word.f.split(",")[0].trim(); + // Get last letter of Pashto and last two letters of phonetics + // TODO: !!! Handle weird endings / symbols ' etc. + const pEnd = word.p.slice(-1); + const fEnd = f.slice(-2); + if (word.infap && word.infaf && word.infbp && word.infbf) { + return inflectIrregularMasc(word.p, f, [ + {p: word.infap, f: word.infaf}, + {p: word.infbp, f: word.infbf}, + ]); + } + const isTobEnding = (word.p.slice(-3) === "توب" && ["tób", "tob"].includes(f.slice(-3)) && word.p.length > 3); + if (isTobEnding) { + return inflectTobMasc(word.p, f); + } + if (pEnd === "ی" && fEnd === "ey") { + return inflectRegularYeyMasc(word.p, f); + } + if (pEnd === "ی" && fEnd === "éy") { + return inflectRegularEmphasizedYeyMasc(word.p, f); + } + return false; +} + +function handleFemNoun(word: T.DictionaryEntry): T.Inflections | false { + // Get first of comma seperated phonetics entries + const f = word.f.split(",")[0].trim(); + /* istanbul ignore next */ // will always have word.c at this point + const c = word.c || ""; + const animate = c.includes("anim."); + const pEnd = word.p.slice(-1); + + if (endingInHeyOrAynRegex.test(word.p) && endingInSingleARegex.test(f)) { + return inflectRegularAFem(word.p, f); + } + if (word.p.slice(-1) === "ح" && endingInSingleARegex.test(f)) { + return inflectRegularAWithHimPEnding(word.p, f); + } + if (pashtoConsonants.includes(pEnd) && !animate) { + return inflectRegularInanMissingAFem(word.p, f); + } + if (pEnd === "ي" && (!animate)) { + return inflectRegularInanEeFem(word.p, f); + } + if (pEnd === "ۍ") { + return inflectRegularUyFem(word.p, f); + } + if (endingInAlefRegex.test(word.p)) { + return inflectRegularAaFem(word.p, f); + } + return false; +} + +// LEVEL 3 FUNCTIONS +function inflectIrregularUnisex(p: string, f: string, inflections: Array<{p: string, f: string}>): T.Inflections { + return { + masc: [ + [{p, f}], + [{p: inflections[0].p, f: inflections[0].f}], + [{p: `${inflections[1].p}و`, f: `${inflections[1].f}o`}], + ], + fem: [ + [{p: `${inflections[1].p}ه`, f: `${inflections[1].f}a`}], + [{p: `${inflections[1].p}ې`, f: `${inflections[1].f}e`}], + [{p: `${inflections[1].p}و`, f: `${inflections[1].f}o`}], + ], + }; +} + +export function inflectRegularYeyUnisex(p: string, f: string): T.UnisexInflections { + const baseP = p.slice(0, -1); + const baseF = f.slice(0, -2); + return { + masc: [ + [{p, f}], + [{p: `${baseP}ي`, f: `${baseF}ee`}], + [ + {p: `${baseP}یو`, f: `${baseF}iyo`}, + {p: `${baseP}و`, f: `${baseF}o`}, + ], + ], + fem: [ + [{p: `${baseP}ې`, f: `${baseF}e`}], + [{p: `${baseP}ې`, f: `${baseF}e`}], + [{p: `${baseP}و`, f: `${baseF}o`}], + ], + }; +} + +function inflectEmphasizedYeyUnisex(p: string, f: string): T.UnisexInflections { + const baseP = p.slice(0, -1); + const baseF = f.slice(0, -2); + return { + masc: [ + [{p, f}], + [{p: `${baseP}ي`, f: `${baseF}ée`}], + [ + {p: `${baseP}یو`, f: `${baseF}iyo`}, + {p: `${baseP}و`, f: `${baseF}ó`}, + ], + ], + fem: [ + [{p: `${baseP}ۍ`, f: `${baseF}úy`}], + [{p: `${baseP}ۍ`, f: `${baseF}úy`}], + [ + { p: `${baseP}یو`, f: `${baseF}úyo` }, + { p: `${baseP}و`, f: `${baseF}ó`, }, + ], + ], + }; +} + +function inflectConsonantEndingUnisex(p: string, f: string): T.UnisexInflections { + return { + masc: [ + [{p, f}], + [{p, f}], + [{p: `${p}و`, f: `${f}o`}], + ], + fem: [ + [{p: `${p}ه`, f: `${f}a`}], + [{p: `${p}ې`, f: `${f}e`}], + [{p: `${p}و`, f: `${f}o`}], + ], + }; +} + +function inflectRegularYeyMasc(p: string, f: string): T.Inflections { + const baseP = p.slice(0, -1); + const baseF = f.slice(0, -2); + return { + masc: [ + [{p, f}], + [{p: `${baseP}ي`, f: `${baseF}ee`}], + [ + {p: `${baseP}یو`, f: `${baseF}iyo`}, + {p: `${baseP}و`, f: `${baseF}o`}, + ], + ], + }; +} + +function inflectTobMasc(p: string, f: string): T.Inflections { + const baseP = p.slice(0, -3); + const baseF = f.slice(0, -3); + return { + masc: [ + [{p, f}], + [{p: `${baseP}تابه`, f: `${baseF}taabu`}], + [{p: `${baseP}تبو`, f: `${baseF}tabo`}], + ], + }; +} + +function inflectRegularEmphasizedYeyMasc(p: string, f: string): T.Inflections { + const baseP = p.slice(0, -1); + const baseF = f.slice(0, -2); + return { + masc: [ + [{p, f}], + [{p: `${baseP}ي`, f: `${baseF}ée`}], + [ + {p: `${baseP}یو`, f: `${baseF}iyo`}, + {p: `${baseP}و`, f: `${baseF}o`}, + ], + ], + }; +} + +function inflectIrregularMasc(p: string, f: string, inflections: Array<{p: string, f: string}>): T.Inflections { + return { + masc: [ + [{p, f}], + [{p: inflections[0].p, f: inflections[0].f}], + [{p: `${inflections[1].p}و`, f: `${inflections[1].f}o`}], + ], + }; +} + +function inflectRegularAFem(p: string, f: string): T.Inflections { + const baseF = ["'", "’"].includes(f.slice(-1)) ? f.slice(0, -2) : f.slice(0, -1); + const baseP = p.slice(-1) === "ع" ? p : p.slice(0, -1); + return { + fem: [ + [{p, f}], + [{p: `${baseP}ې`, f: `${baseF}e`}], + [{p: `${baseP}و`, f: `${baseF}o`}], + ], + }; +} + +function inflectRegularAWithHimPEnding(p: string, f: string): T.Inflections { + const baseF = f.slice(0, -1); + return { + fem: [ + [{p, f}], + [{p: `${p}ې`, f: `${baseF}e`}], + [{p: `${p}و`, f: `${baseF}o`}], + ], + }; +} + +function inflectRegularInanMissingAFem(p: string, f: string): T.Inflections { + return { + fem: [ + [{p, f}], + [{p: `${p}ې`, f: `${f}e`}], + [{p: `${p}و`, f: `${f}o`}], + ], + }; +} + +function inflectRegularInanEeFem(p: string, f: string): T.Inflections { + const baseP = p.slice(0, -1); + const baseF = f.slice(0, -2); + return { + fem: [ + [{p, f}], + [{p: `${baseP}ۍ`, f: `${baseF}uy`}], + [{p: `${baseP}یو`, f: `${baseF}uyo`}], + ], + }; +} + +function inflectRegularUyFem(p: string, f: string): T.Inflections { + const baseP = p.slice(0, -1); + const baseF = f.slice(0, -2); + return { + fem: [ + [{p, f}], + [{p, f}], + [ + {p: `${baseP}یو`, f: `${baseF}uyo`}, + {p: `${baseP}و`, f: `${baseF}o`}, + ], + ], + }; +} + +function inflectRegularAaFem(p: string, f: string): T.Inflections { + const baseF = ["'", "’"].includes(f.slice(-1)) ? f.slice(0, -1) : f; + return { + fem: [ + [{p, f}], + [{p: `${p}وې`, f: `${baseF}we`}], + [{p: `${p}وو`, f: `${baseF}wo`}], + ], + }; +} diff --git a/src/lib/phonetics-to-diacritics.test.ts b/src/lib/phonetics-to-diacritics.test.ts new file mode 100644 index 0000000..b9d081f --- /dev/null +++ b/src/lib/phonetics-to-diacritics.test.ts @@ -0,0 +1,1130 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + phoneticsToDiacritics, + splitFIntoPhonemes, +} from "./phonetics-to-diacritics"; + +const zwarakey = "ٙ"; + +const phonemeSplits: Array<{ + in: string, + out: string[], +}> = [ + { + in: "kor", + out: ["k", "o", "r"], + }, + { + in: "raaghey", + out: ["r", "aa", "gh", "ey"], + }, + { + in: "hatsa", + out: ["h", "a", "ts", "a"], + }, + { + in: "ba", + out: ["b", "a"], + }, + { + in: "peydáa", + out: ["p", "ey", "d", "áa"], + }, + { + in: "be kaar", + out: ["b", "e", "k", "aa", "r"], + }, + { + in: "raadzeyy", + out: ["r", "aa", "dz", "eyy"], + }, + { + in: "badanuy ??", + out: ["b", "a", "d", "a", "n", "uy"], + }, + { + in: "tur ... pore", + out: ["t", "u", "r", "p", "o", "r", "e"], + }, + { + in: "daar-Ul-iqaama", + out: ["d", "aa", "r", "-Ul-", "i", "q", "aa", "m", "a"], + }, +]; + +phonemeSplits.forEach((s) => { + test(`${s.in} should split properly`, () => { + const result = splitFIntoPhonemes(s.in); + expect(result).toEqual(s.out); + }); +}); + +const toTest: Array<{ + in: { p: string, f: string }, + out: string | undefined, +}> = [ + { + in: { + p: "کور", + f: "kor", + }, + out: "کور", + }, + { + in: { + p: "کور", + f: "koor", + }, + out: "کُور", + }, + { + in: { + p: "تب", + f: "tib", + }, + out: "تِب", + }, + { + in: { + p: "تب", + f: "tab", + }, + out: "تَب", + }, + { + in: { + p: "تب", + f: "tUb", + }, + out: "تُب", + }, + { + in: { + p: "تب", + f: "tub", + }, + out: "تٙب", + }, + { + in: { + p: "تب", + f: "tb", + }, + out: "تْب", + }, + { + in: { + p: "تلب", + f: "tilab", + }, + out: "تِلَب", + }, + { + in: { + p: "تشناب", + f: "tashnaab", + }, + out: "تَشْناب", + }, + // broken phonetics will return undefined + { + in: { + p: "تشناب", + f: "peshnaab", + }, + out: undefined, + }, + // working with وs + { + in: { + p: "کول", + f: "kwal", + }, + out: "کْوَل", + }, + { + in: { + p: "تول", + f: "tool", + }, + out: "تُول", + }, + { + in: { + p: "مقبول", + f: "maqbool", + }, + out: "مَقْبُول", + }, + { + in: { + p: "کول", + f: "kawul", + }, + out: "کَو" + zwarakey + "ل", + }, + { + in: { + p: "کول", + f: "kiwul", + }, + out: "کِو" + zwarakey + "ل", + }, + { + in: { + p: "کول", + f: "kUwul", + }, + out: "کُو" + zwarakey + "ل", + }, + { + in: { + p: "کول", + f: "kuwul", + }, + out: "ک" + zwarakey + "و" + zwarakey + "ل", + }, + { + in: { + p: "کول", + f: "kawal", + }, + out: "کَوَل", + }, + { + in: { + p: "کول", + f: "kUwal", + }, + out: "کُوَل", + }, + { + in: { + p: "پشتګرد", + f: "pishtgird", + }, + out: "پِشْتْګِرْد", + }, + { + in: { + p: "سپین", + f: "speen", + }, + out: "سْپِین", + }, + { + in: { + p: "سپین", + f: "speyn", + }, + out: "سْپین", + }, + { + in: { + p: "پېش", + f: "pesh", + }, + out: "پېش", + }, + { + in: { + p: "پېش", + f: "peysh", + }, + out: undefined, + }, + { + in: { + p: "رغېدل", + f: "raghedul", + }, + out: "رَغېد" + zwarakey + "ل", + }, + { + in: { + p: "کارول", + f: "kaarawul", + }, + out: "کارَو" + zwarakey + "ل", + }, + { + in: { + p: "پېښېدل", + f: "pexedul", + }, + out: "پېښېد" + zwarakey + "ل", + }, + { + in: { + p: "مین", + f: "mayín", + }, + out: "مَیِن", + }, + { + in: { + p: "سړی", + f: "saRey", + }, + out: "سَړی", + }, + { + in: { + p: "سړي", + f: "saRee", + }, + out: "سَړي", + }, + { + in: { + p: "زه", + f: "zu", + }, + out: "زهٔ", + }, + { + in: { + p: "زه", + f: "za", + }, + out: "زه", + }, + { + in: { + p: "پېشنهاد", + f: "peshniháad", + }, + out: "پېشْنِهاد", + }, + { + in: { + p: "ایستل", + f: "eestul", + }, + out: "اِیسْت" + zwarakey + "ل", + }, + { + in: { + p: "ایستل", + f: "eystul", + }, + out: "ایسْت" + zwarakey + "ل", + }, + { + in: { + p: "اېسېدل", + f: "esedul", + }, + out: "اېسېد" + zwarakey + "ل", + }, + { + in: { + p: "اوسېدل", + f: "osedul", + }, + out: "اوسېد" + zwarakey + "ل", + }, + { + in: { + p: "اواز", + f: "awaaz", + }, + out: "اَواز", + }, + { + in: { + p: "اسلام", + f: "islaam", + }, + out: "اِسْلام", + }, + { + in: { + p: "واردول", + f: "waaridawul", + }, + out: "وارِدَو" + zwarakey + "ل", + }, + { + in: { + p: "غاړه", + f: "ghaaRa", + }, + out: "غاړه", + }, + { + in: { + p: "اوتر", + f: "awtár", + }, + out: "اَوْتَر", + }, + { + in: { + p: "اختیار", + f: "ikhtiyáar", + }, + out: "اِخْتِیار", + }, + { + in: { + p: "فریاد", + f: "faryáad", + }, + out: "فَرْیاد", + }, + { + in: { + p: "کارغه", + f: "kaarghu", + }, + out: "کارْغهٔ", + }, + { + in: { + p: "بې کار", + f: "be kaar", + }, + out: "بې کار", + }, + { + in: { + p: "بې کار", + f: "bekaar", + }, + out: "بې کار", + }, + { + in: { + p: "انبار", + f: "ambáar", + }, + out: "اَنْبار", + }, + { + in: { + p: "ارغون", + f: "arghóon", + }, + out: "اَرْغُون", + }, + { + in: { + p: "ارمټه", + f: "armaTa", + }, + out: "اَرْمَټه", + }, + { + in: { + p: "اروا پوه", + f: "arwaa poh", + }, + out: "اَرْوا پوهْ", + }, + { + in: { + p: "اسحاق", + f: "ishaaq", + }, + out: undefined, + }, + { + in: { + p: "اسحاق", + f: "is`haaq", + }, + out: "اِسْحاق", + }, + { + in: { + p: "سعات", + f: "saat", + }, + out: "سعات", + }, + { + in: { + p: "سعات", + f: "sa'aat", + }, + out: "سَعات", + }, + { + in: { + p: "استعمال", + f: "ist'imaal", + }, + out: "اِسْتعِمال", + }, + { + in: { + p: "استعمال", + f: "istimaal", + }, + out: "اِسْتعِمال", + }, + { + in: { + p: "اروایي", + f: "arwaayee", + }, + out: "اَرْوایي", + }, + { + in: { + p: "اریځ", + f: "Uryadz", + }, + out: "اُرْیَځ", + }, + { + in: { + p: "ازغن تار", + f: "azghun taar", + }, + out: "اَزْغ" + zwarakey + "ن" + " تار", + }, + { + in: { + p: "اره څکول", + f: "ara tskawul", + }, + out: "اَره څْکَو" + zwarakey + "ل", + }, + { + in: { + p: "اږیل", + f: "aGuyúl", + }, + out: "اَږ" + zwarakey + "ی" + zwarakey + "ل", + }, + { + in: { + p: "استازندوی", + f: "astaazandoy", + }, + out: "اَسْتازَنْدوی", + }, + // واخ being khaa in the middle of a word + { + in: { + p: "استخوان", + f: "UstUkháan", + }, + out: "اُسْتُخ(و)ان", + }, + { + in: { + p: "اسطلاع", + f: "istilaa", + }, + out: "اِسْطِلاع", + }, + { + in: { + p: "اسهال", + f: "is`háal", + }, + out: "اِسْهال", + }, + { + in: { + p: "اسهامي", + f: "as`haamee", + }, + out: "اَسْهامي", + }, + // avoid false double consonant + { + in: { + p: "ازل لیک", + f: "azalléek", + }, + out: "اَزَل لِیک", + }, + // bad ending test + { + in: { + p: "ماضی", + f: "maazee", + }, + out: undefined, + }, + // bad beginning test + { + in: { + p: "وسېدل", + f: "osedul", + }, + out: undefined, + }, + { + in: { + p: "يست", + f: "eest", + }, + out: undefined, + }, + { + in: { + p: "ست", + f: "ist", + }, + out: undefined, + }, + { + in: { + p: "haca", + f: "هځه", + }, + out: undefined, + }, + // tashdeed + { + in: { + p: "پته", + f: "patta", + }, + out: "پَتّه", + }, + { + in: { + p: "اعتصاب شکن", + f: "itisaabshikan", + }, + out: "اِعتِصاب شِکَن", + }, + // Arabic wasla + { + in: { + p: "بالکل", + f: "bilkUl", + }, + out: "بِٱلْکُل", + }, + // izafe + { + in: { + p: "ایصال ثواب", + f: "eesaal-i-sawaab", + }, + out: "اِیصالِ ثَواب", + }, + { + in: { + p: "با استعداد", + f: "baa isti'dáad", + }, + out: "با اِسْتِعداد", + }, + // starting with ع + { + in: { + p: "عزت", + f: "izzat", + }, + out: "عِزَّت", + }, + { + in: { + p: "عزت", + f: "i'zzat", + }, + out: "عِزَّت", + }, + // ئ in the middle + { + in: { + p: "برائت", + f: "baraa'at", + }, + out: "بَرائَت", + }, + { + in: { + p: "فائده", + f: "faaida", + }, + out: "فائِده", + }, + // starting with long aa + { + in: { + p: "آدم", + f: "aadam", + }, + out: "آدَم", + }, + { + in: { + p: "یدام", + f: "aadam", + }, + out: undefined, + }, { + in: { + p: "منع", + f: "mán'a", + }, + out: "مَنعَ", + }, + { + in: { + p: "منع", + f: "mana", + }, + out: "مَنعَ", + }, + { + in: { + p: "منابع", + f: "mUnaabí", + }, + out: "مُنابعِ", + }, + { + // TODO: Is this correct?? + in: { + p: "اسان", + f: "aasaan", + }, + out: "اسان", + }, + // ې followed by ی - y needs to be written as e`y to be distinguished from ey - ی + { + in: { + p: "پتېیل", + f: "pateyúl", + }, + out: undefined, + }, + { + in: { + p: "پتېیل", + f: "pate`yúl", + }, + out: "پَتېی" + zwarakey + "ل", + }, + { + in: { + p: "درېیم", + f: "dre`yum", + }, + out: "دْرېی" + zwarakey + "م", + }, + { + in: { + p: "تابع دار", + f: "taabidaar", + }, + out: "تابعِ دار", + }, + // handle circumpositions + { + in: { + p: "تر ... پورې", + f: "tur ... pore", + }, + out: "ت" + zwarakey + "ر ... پورې", + }, + // joiner و + { + in: { + p: "کار و بار", + f: "kaar-U-baar", + }, + out: "کار و بار", + }, + { + in: { + p: "کاروبار", + f: "kaar-U-baar", + }, + out: "کاروبار", + }, + { + in: { + p: "توقع", + f: "tawaqqÚ", + }, + out: "تَوَقّعُ", + }, + // special behaviour with د + { + in: { + p: "د", + f: "du", + }, + out: "د" + zwarakey, + }, + { + in: { + p: "د لاس", + f: "du laas", + }, + out: "د" + zwarakey + " لاس", + }, + { + in: { + p: "د ... په شان", + f: "du ... pu shaan", + }, + out: "د" + zwarakey + " ... پهٔ شان", + }, + { + in: { + p: "ذبح", + f: "zabha", + }, + out: "ذَبْحَ", + }, + { + in: { + p: "ذبح", + f: "zabha", + }, + out: "ذَبْحَ", + }, + { + in: { + p: "ذبح کول", + f: "zabha kawul", + }, + out: "ذَبْحَ کَو" + zwarakey + "ل", + }, + // require dagger alif on words ending with یٰ + { + in: { + p: "یحیی", + f: "yahyaa", + }, + out: undefined, + }, + { + in: { + p: "یحییٰ", + f: "yahyaa", + }, + out: "یَحْییٰ", + }, + { + in: { + p: "معنیٰ", + f: "ma'anaa", + }, + out: "مَعَنیٰ", + }, + // require fathatan on words ending in اً + { + in: { + p: "دقیقا", + f: "daqeeqan", + }, + out: undefined, + }, + { + in: { + p: "دقیقاً", + f: "daqeeqan", + }, + out: "دَقِیقاً", + }, + // words starting in عا + { + in: { + p: "عام", + f: "aam", + }, + out: "عام", + }, + { + in: { + p: "عام", + f: "'aam", + }, + out: "عام", + }, + { + in: { + p: "قتل عام", + f: "qatl-i-aam", + }, + out: "قَتْلِ عام", + }, + { + in: { + p: "طمع لرل", + f: "tama larul", + }, + out: "طَمعَ لَر" + zwarakey + "ل", + }, + // Ua ؤ + { + in: { + p: "مودب", + f: "mUaddab", + }, + out: "مؤدَّب", + }, + { + in: { + p: "لکۍ وال", + f: "lakuy waal", + }, + out: "لَکۍ وال", + }, + // shouldn't skip the ئ at the end + { + in: { + p: "شئ", + f: "sheyy", + }, + out: "شئ", + }, + // excetption for و - wo + { + in: { + p: "و", + f: "wo", + }, + out: "و", + }, + { + in: { + p: "سړی و", + f: "saRey wo", + }, + out: "سَړی و", + }, + { + in: { + p: "عید", + f: "eed", + }, + out: "عِید", + }, + // i ending can also be i + { + in: { + p: "سه", + f: "si", + }, + out: "سِه", + }, + { + in: { + p: "سه شنبه", + f: "sishamba", + }, + out: "سِه شَنْبه", + }, + { + in: { + p: "توجه", + f: "tawajÚ", + }, + out: "تَوَجُه", + }, + { + in: { + p: "توجه کول", + f: "tawajU kawul", + }, + out: "تَوَجُه کَو" + zwarakey + "ل", + }, + // With Arabic definate article -Ul- ال + { + in: { + p: "حق الاجاره", + f: "haq-Ul-ijaara", + }, + out: "حَق اُلاِجاره", + }, + { + in: { + p: "دار العلوم", + f: "daar-Ul-Ulóom", + }, + out: "دار اُلعُلُوم", + }, + // double consonants on end of words + { + in: { + p: "حق", + f: "haqq", + }, + out: "حَقّ", + }, + { + in: { + p: "حق پر", + f: "haqq par", + }, + out: "حَقّ پَر", + }, + // TODO: Allow ' in there + { + in: { + p: "راجع کېدل", + f: "raaji kedul", + }, + out: "راجعِ کېد" + zwarakey + "ل", + }, + { + in: { + p: "ربیع", + f: "rabee'", + }, + out: "رَبِیع", + }, + { + in: { + p: "سختسری", + f: "sakht sărey", + }, + out: "سَخْتْسَری", + }, + { + in: { + p: "معنیٰ", + f: "ma'naa", + }, + out: "مَعنیٰ", + }, + // issue with یٰ ending and then continuing to the next word + { + in: { + p: "معنیٰ دار", + f: "ma'naa daar", + }, + out: "مَعنیٰ دار", + }, + { + in: { + p: "اله", + f: "ilah", + }, + out: "اِلَهْ", + }, + // issue with words ending in عه going to the next word + { + in: { + p: "قطعه بازي", + f: "qit'a baazee", + }, + out: "قِطعه بازي", + }, + // أ in the middle of the word + { + in: { + p: "متأسف", + f: "mUta'assif", + }, + out: "مُتأسِّف", + }, + // words ending in ع a' on to the next word + { + in: { + p: "مربع", + f: "mUraba'", + }, + out: "مُرَبَع", + }, + { + in: { + p: "مربع جذر", + f: "mUraba' jazúr", + }, + out: "مُرَبَع جَذ" + zwarakey + "ر", + }, + { + in: { + p: "مسوول", + f: "mas'ool", + }, + out: "مَسوُول", // TODO: Is this best?? + }, + // allow for beginnings prefixed with ور در را + { + in: { + p: "وراوږد", + f: "wăr-ooGad", + }, + out: "وَراُوږَد", + }, + { + in: { + p: "دراوږد", + f: "dăr-ooGad", + }, + out: "دَراُوږَد", + }, + { + in: { + p: "رااوږد", + f: "raa-ooGad", + }, + out: "رااُوږَد", + }, + // allow for spaces at beginning of phonetics etc. + { + in: { + p: " سپین کړه", + f: " speen kRu", + }, + out: "سْپِین کْړهٔ", + }, + { + in: { + p: "اوب", + f: "ob", + }, + out: "اوب", + }, + // allow oo at start with و prefix + { + in: { + p: "وباسي", + f: "oobaasee", + }, + out: "وباسي", + }, + { + in: { + p: "وځم", + f: "oodzum", + }, + out: "وځ" + zwarakey + "م", + }, + { + in: { + p: "وځم", + f: "wUdzum", + }, + out: "وُځ" + zwarakey + "م", + }, +]; + +// TODO: قطع کول - qat'a kawul - failing +// TODO: فی الحال +// TODO: الله words + +toTest.forEach((t) => { + test(`${t.in.p} given phonetics ${t.in.f} should translate to ${t.out}`, () => { + const output = phoneticsToDiacritics(t.in.p, t.in.f); + expect(output).toBe(t.out); + }); +}); + +test("should forbid oo prefixes when the option is passed", () => { + const output = phoneticsToDiacritics("وځم", "oodzum", true); + expect(output).toBe(undefined); +}); diff --git a/src/lib/phonetics-to-diacritics.ts b/src/lib/phonetics-to-diacritics.ts new file mode 100644 index 0000000..b471844 --- /dev/null +++ b/src/lib/phonetics-to-diacritics.ts @@ -0,0 +1,493 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +const zwar = "َ"; +const zwarakey = "ٙ"; +const zer = "ِ"; +const pesh = "ُ"; +const sukun = "ْ"; +const hamzaAbove = "ٔ"; +const tashdeed = "ّ"; +const wasla = "ٱ"; +const daggerAlif = "ٰ"; +const fathahan = "ً"; + +// TODO: THESE OTHER TRIGRAPHS?? +const quadrigraphs = ["-Ul-"]; +const trigraphs = ["eyy", "éyy", "-i-", "-U-"]; // , "aay", "áay", "ooy", "óoy"]; +const digraphs = ["ắ", "aa", "áa", "ee", "ée", "ey", "éy", "oo", "óo", "kh", "gh", "ts", "dz", "jz", "ch", "sh"]; +const endingDigraphs = ["uy", "úy"]; +const willIgnore = ["?", " ", "`", ".", "…"]; + +export function splitFIntoPhonemes(f: string): string[] { + const result: string[] = []; + let index = 0; + while (index < f.length) { + const isLastTwoLetters = (index === f.length - 2 || f[index + 2] === " "); + const threeLetterChunk = f.slice(index, index + 3); + const fourLetterChunk = f.slice(index, index + 4); + if (quadrigraphs.includes(fourLetterChunk)) { + result.push(fourLetterChunk); + index += 4; + continue; + } + if (trigraphs.includes(threeLetterChunk)) { + result.push(threeLetterChunk); + index += 3; + continue; + } + const twoLetterChunk = f.slice(index, index + 2); + if ( + digraphs.includes(twoLetterChunk) || + (isLastTwoLetters && endingDigraphs.includes(twoLetterChunk)) + ) { + result.push(twoLetterChunk); + index += 2; + continue; + } + const singleLetter = f.slice(index, index + 1); + if (!willIgnore.includes(singleLetter)) { + result.push(singleLetter); + } + index++; + } + return result; +} + +const phonemeTable = [ + // consonants + { phoneme: "b", possibilities: ["ب"], consonant: true }, + { phoneme: "p", possibilities: ["پ"], consonant: true }, + { phoneme: "t", possibilities: ["ت", "ط"], consonant: true }, + { phoneme: "T", possibilities: ["ټ"], consonant: true }, + { phoneme: "s", possibilities: ["س", "ص", "ث"], consonant: true }, + { phoneme: "j", possibilities: ["ج"], consonant: true }, + { phoneme: "ch", possibilities: ["چ"], consonant: true }, + { phoneme: "kh", possibilities: ["خ"], consonant: true }, + { phoneme: "ts", possibilities: ["څ"], consonant: true }, + { phoneme: "dz", possibilities: ["ځ"], consonant: true }, + { phoneme: "d", possibilities: ["د"], consonant: true }, + { phoneme: "D", possibilities: ["ډ"], consonant: true }, + { phoneme: "r", possibilities: ["ر"], consonant: true }, + { phoneme: "R", possibilities: ["ړ"], consonant: true }, + { phoneme: "z", possibilities: ["ز", "ذ", "ظ", "ض"], consonant: true }, + { phoneme: "jz", possibilities: ["ژ"], consonant: true }, + { phoneme: "G", possibilities: ["ږ"], consonant: true }, + { phoneme: "sh", possibilities: ["ش"], consonant: true }, + { phoneme: "x", possibilities: ["ښ"], consonant: true }, + { phoneme: "gh", possibilities: ["غ"], consonant: true }, + { phoneme: "f", possibilities: ["ف"], consonant: true }, + { phoneme: "q", possibilities: ["ق"], consonant: true }, + { phoneme: "k", possibilities: ["ک"], consonant: true }, + { phoneme: "g", possibilities: ["ګ"], consonant: true }, + { phoneme: "l", possibilities: ["ل"], consonant: true }, + { phoneme: "m", possibilities: ["م"], consonant: true }, + { phoneme: "n", possibilities: ["ن"], consonant: true }, + { phoneme: "N", possibilities: ["ڼ"], consonant: true }, + { phoneme: "h", possibilities: ["ه", "ح"], consonant: true, takesSukunOnEnding: true }, + { phoneme: "w", possibilities: ["و"], consonant: true }, + { phoneme: "y", possibilities: ["ی"], consonant: true }, + + { phoneme: "'", possibilities: ["ع", "ئ"], consonant: true }, + { phoneme: "-i-", isIzafe: true }, + { phoneme: "-U-", possibilities: [" و ", "و"]}, + { phoneme: "-Ul-", possibilities: ["ال"]}, + + // vowels + { phoneme: "aa", possibilities: ["ا"], beginning: ["آ", "ا"], endingPossibilities: ["ا", "یٰ"], isLongA: true, canStartWithAynBefore: true }, + { phoneme: "áa", possibilities: ["ا"], beginning: ["آ", "ا"], endingPossibilities: ["ا", "یٰ"], isLongA: true, canStartWithAynBefore: true }, + { phoneme: "ee", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ي"], diacritic: zer, canStartWithAynBefore: true }, + { phoneme: "ée", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ي"], diacritic: zer, canStartWithAynBefore: true }, + { phoneme: "e", possibilities: ["ې"], addAlefOnBeginning: true }, + { phoneme: "é", possibilities: ["ې"], addAlefOnBeginning: true }, + { phoneme: "o", possibilities: ["و"], addAlefOnBeginning: true }, + { phoneme: "ó", possibilities: ["و"], addAlefOnBeginning: true }, + { phoneme: "oo", possibilities: ["و"], addAlefOnBeginning: true, alsoCanBePrefix: true, diacritic: pesh }, + { phoneme: "óo", possibilities: ["و"], addAlefOnBeginning: true, diacritic: pesh }, + { phoneme: "ey", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ی"]}, + { phoneme: "éy", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ی"]}, + { phoneme: "uy", possibilities: ["ۍ"], endingOnly: true }, + { phoneme: "úy", possibilities: ["ۍ"], endingOnly: true }, // THIS CAN ONLY COME AT THE END DEAL WITH THIS + { phoneme: "eyy", possibilities: ["ئ"], endingOnly: true }, + { phoneme: "éyy", possibilities: ["ئ"], endingOnly: true }, + + { phoneme: "a", diacritic: zwar, endingPossibilities: ["ه"], canComeAfterHeyEnding: true, canBeFirstPartOfFathahanEnding: true }, + { phoneme: "á", diacritic: zwar, endingPossibilities: ["ه"], canComeAfterHeyEnding: true, canBeFirstPartOfFathahanEnding: true }, + { phoneme: "ă", diacritic: zwar }, + { phoneme: "ắ", diacritic: zwar }, + { phoneme: "u", diacritic: zwarakey, endingPossibilities: ["ه"], hamzaOnEnd: true }, + { phoneme: "ú", diacritic: zwarakey, endingPossibilities: ["ه"], hamzaOnEnd: true }, + { phoneme: "i", diacritic: zer, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, canBeWasla: true, beginning: ["ا", "ع"] }, + { phoneme: "í", diacritic: zer, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, canBeWasla: true, beginning: ["ا", "ع"] }, + { phoneme: "U", diacritic: pesh, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, beginning: ["ا", "ع"] }, + { phoneme: "Ú", diacritic: pesh, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, beginning: ["ا", "ع"] }, +]; + +function isSpace(s: string): boolean { + return [" ", "\xa0"].includes(s); +} + +function isEndSpace(s: string): boolean { + return [" ", "\xa0", undefined].includes(s); +} + +interface IDiacriticsErrorMessage { + error: string; + phoneme: string; + i: number; +} + +function possibilityMatches(p: string, pIndex: number, possibilities: string[] | undefined): boolean { + /* istanbul ignore next */ + if (!possibilities) { + return false; + } + for (const possibility of possibilities) { + if (p.slice(pIndex, pIndex + possibility.length) === possibility) { + return true; + } + } + return false; +} + +function isPrefixedByDirectionalPronoun(i: number, phonemes: string[]): boolean { + const potentialPronounFourCharSlice = phonemes.slice(i - 4, i).join(""); + const potentialPronounThreeCharSlice = phonemes.slice(i - 3, i).join(""); + if (["wăr-", "war-", "dăr-", "dar-"].includes(potentialPronounFourCharSlice)) { + return true; + } + if (potentialPronounThreeCharSlice === "raa-") { + return true; + } + return false; +} + +export function phoneticsToDiacritics(ps: string, ph: string, forbidOoPrefixes: boolean = false): string | undefined { + const phonemes = splitFIntoPhonemes(ph.trim().split(",")[0]); + const p = ps.trim(); + let result = ""; + let pIndex = 0; + const errored: IDiacriticsErrorMessage[] = []; + let previousPhonemeWasAConsonant = false; + phonemes.forEach((phoneme, i) => { + // on its own, only used for seperating directional pronouns + if (phoneme === "-") { + return; + } + const phonemeInfo = phonemeTable.find((element) => element.phoneme === phoneme); + if (!phonemeInfo) { + errored.push({ error: "phoneme info not found", phoneme, i }); + return; + } + const isDoubleConsonant = ( + phonemeInfo.consonant && + phoneme === phonemes[i - 1] && + // TODO: is this thourough enough to allow double consonants on the ending of the previous word? + !(isSpace(p[pIndex - 1]) && phonemeInfo.possibilities.includes(p[pIndex])) // avoid false double consonant ie ازل لیک azalleek + ) ? true : false; + const isBeginning = !isDoubleConsonant && ((i === 0) || isSpace(p[pIndex - 1]) || (phonemes[i - 1] === "-Ul-") || isPrefixedByDirectionalPronoun(i, phonemes)); + const upcomingAEndingAfterHey = (p[pIndex] === "ح" && isSpace(p[pIndex + 1]) && ["a", "á"].includes(phonemes[i + 1])); + + // TODO: break this into a seperate function -- why can it sometimes be set to undefined? + const isEnding = (i === phonemes.length - 1) || (( + (phonemeInfo.possibilities && isSpace(p[pIndex + 1])) || + (!phonemeInfo.possibilities && isSpace(p[pIndex])) || + ( + (!phonemeInfo.possibilities && isSpace(p[pIndex + 1])) && + (possibilityMatches(p, pIndex, phonemeInfo.endingPossibilities) || (p[pIndex] === "ع" && phonemes[i + 1] !== "'")) + ) + ) && !upcomingAEndingAfterHey + && // makes sure the next letter isn't a double consonant like haqq <- + !( + phonemeInfo.consonant && phoneme === phonemes[i + 1] // && + // !(isSpace(p[pIndex + 1]) && phonemeInfo.possibilities.includes(p[pIndex])) + ) + ) || // can be the trailing double consanant on the end of a word + ( + phonemeInfo.consonant && phoneme === phonemes[i - 1] && + !(isEndSpace(p[pIndex - 1]) && phonemeInfo.possibilities.includes(p[pIndex])) + ) || // can be یٰ ending + ( + isEndSpace(p[pIndex + 2]) && (p.slice(pIndex, pIndex + 2) === "یٰ") + ); + + const isUofDu = phoneme === "u" && ( + p.slice(pIndex - 2, pIndex) === "د " || // د as previous word + (p[pIndex] === undefined && p[pIndex - 1] === "د") || // د as the whole thing + p.slice(pIndex - 6, pIndex) === "د ... " // ... د is as the previous word + ); + // TODO: Should p[pIndex - 1] also be in there ??? It messed up قطعه for instance + const isEndingAynVowel = isEnding && phonemeInfo.diacritic && [p[pIndex], p[pIndex - 1]].includes("ع") && p[pIndex] !== "ه"; + const isMiddle = !isBeginning && !isEnding; + const isSilentWaw = ( + p[pIndex] === "و" && + p[pIndex - 1] === "خ" && + p[pIndex + 1] === "ا" && + ["áa", "aa"].includes(phoneme) + ); + const isAnAEndingAfterHey = isEnding && p[pIndex - 1] === "ح" && phonemeInfo.canComeAfterHeyEnding; + if (isDoubleConsonant) { + pIndex--; + if (isSpace(p[pIndex])) { + pIndex--; + } + } + if (isDoubleConsonant && p[pIndex] === "ع") { + // ridiculously ugly hack to take care of the extra ع that gets added in words like توقع + result = result.slice(0, -1); + pIndex--; + } + if (isSilentWaw) { + result += "(و)"; + pIndex++; + } + // special check for Arabic wasla + if (p.slice(0, 3) === "بال" && phonemes[i - 1] === "b" && phonemeInfo.canBeWasla && phonemes[i + 1] === "l") { + result += phonemeInfo.diacritic + wasla; + pIndex++; + previousPhonemeWasAConsonant = false; + return; + } + // special check for fathahan ending + if (phonemeInfo.canBeFirstPartOfFathahanEnding && p.slice(pIndex, pIndex + 2) === "اً") { + result += "ا"; + pIndex++; + return; + } + if (isEnding && phoneme === "n" && p[pIndex] === fathahan) { + result += fathahan; + pIndex++; + return; + } + // special check for words starting with عا or عی + if (isBeginning && phonemeInfo.canStartWithAynBefore && p[pIndex] === "ع" && phonemeInfo.possibilities.includes(p[pIndex + 1])) { + result += "ع"; + result += phonemeInfo.diacritic ? phonemeInfo.diacritic : ""; + result += p[pIndex + 1]; + pIndex += 2; + return; + } + // special check for ؤ Ua + if (phoneme === "U" && phonemes[i + 1] === "a" && phonemes[i + 2] !== "a" && p[pIndex] === "و") { + result += "ؤ"; + pIndex++; + return; + } + if (phoneme === "a" && phonemes[i - 1] === "U" && phonemes[i + 1] !== "a" && result.slice(-2) === "ؤ") { + previousPhonemeWasAConsonant = false; + return; + } + // special check for و wo + if (isBeginning && phoneme === "w" && phonemes[i + 1] === "o" && p[pIndex] === "و" && isEndSpace(p[pIndex + 1])) { + result += "و"; + pIndex++; + return; + } + // TODO: isEndSpace here is redundant?? + if (isEnding && phoneme === "o" && phonemes[i - 1] === "w" && p[pIndex - 1] === "و" && isEndSpace(p[pIndex])) { + pIndex++; + return; + } + // special check for ال - -Ul- + if (phoneme === "-Ul-" && p.slice(pIndex, pIndex + 2) === "ال") { + result += "اُل"; + pIndex += 2; + return; + } + // special check for for أ in the middle of the word + if (!isBeginning && p[pIndex] === "أ" && phoneme === "a" && phonemes[i + 1] === "'" && phonemes[i + 2] === "a") { + result += "أ"; + pIndex++; + return; + } + if (p[pIndex - 1] === "أ" && phonemes[i - 1] === "a" && phoneme === "'" && phonemes[i + 1] === "a") { + return; + } + if (p[pIndex - 1] === "أ" && phonemes[i - 2] === "a" && phonemes[i - 1] === "'" && phoneme === "a") { + previousPhonemeWasAConsonant = false; + return; + } + // special check for وو 'oo + if (!isBeginning && p[pIndex] === "و" && p[pIndex + 1] === "و" && phoneme === "'" && phonemes[i + 1] === "oo") { + result += "وُو"; + pIndex += 2; + return; + } + if (p[pIndex - 2] === "و" && p[pIndex - 1] === "و" && phonemes[i - 1] === "'" && phoneme === "oo") { + previousPhonemeWasAConsonant = false; + return; + } + + const prevLetterWasBeginningAyn = (p[pIndex - 1] === "ع" && isEndSpace && phoneme === "'"); + // check if the phoneme lines up in the Pashto word + if (isBeginning && !isUofDu && phonemeInfo.addAlefOnBeginning) { + // TODO: Maybe a little bad because it doesn't loop through possibilities + if ((!phonemeInfo.alsoCanBePrefix || forbidOoPrefixes) && p.slice(pIndex, pIndex + 2) !== "ا" + phonemeInfo.possibilities[0]) { + errored.push({ error: "didn't start with an aleph", phoneme, i }); + return; + } + if (p[pIndex] === "ا") { + result += "ا"; // same as result += p[pIndex] + pIndex++; + } + } else if (isBeginning && phonemeInfo.beginning && phonemeInfo.isLongA) { + if (!phonemeInfo.beginning.includes(p[pIndex])) { + errored.push({ error: "improper beginning letter", phoneme, i }); + return; + } + result += p[pIndex]; + pIndex++; + return; + } else if ( + (isEnding && phonemeInfo.endingPossibilities) && + !isUofDu && + ( + !possibilityMatches(p, pIndex, phonemeInfo.endingPossibilities) && + !isEndingAynVowel && // allowing short vowels on the end of words ending with ع + !isAnAEndingAfterHey + ) + ) { + errored.push({ error: "bad ending", phoneme, i }); + return; + } else if ( + (isEnding && !phonemeInfo.endingPossibilities) && + phonemeInfo.possibilities && + !phonemeInfo.possibilities.includes(p[pIndex]) + ) { + // console.log(phoneme, p[pIndex]); + errored.push({ error: "bad ending 2", phoneme, i }); + return; + } else if ( + (phonemeInfo.possibilities && !isEnding) && + ( + !(phonemeInfo.possibilities.includes(p[pIndex])) && + !(p[pIndex] === "ن" && (p[pIndex + 1] === "ب" && phoneme === "m")) && // && // exception case with نب === mb + !prevLetterWasBeginningAyn // exception case with words starting with ع like i'zzat + ) + ) { + errored.push({ error: "improper coressponding letter in middle of word", phoneme, i }); + return; + } + // console.log(phoneme, pIndex, p[pIndex], isEnding); + // console.log(result); + // OK, it lines up with the Pashto word, we're good + // Now continue building the result string + // deal with starting with short vowels and alef + if (!isUofDu && isBeginning && !phonemeInfo.possibilities && !phonemeInfo.isIzafe) { + // TODO: WHY IS THIS HERE + if (!["ا", "ع"].includes(p[pIndex])) { + errored.push({ error: "bad beginning 2", phoneme, i }); + return; + } + result += p[pIndex]; + pIndex++; + } + // if the phoneme carries a diacritic insert it (before the letter if it's coming) + const isOoPrefix = (phonemeInfo.alsoCanBePrefix && isBeginning && (p[pIndex - 1] !== "ا")); + if (phonemeInfo.diacritic && !isEnding && !isOoPrefix) { + // using this hack to remove the space and put it after the zwarakey we're going to add after د + if (isUofDu && result.slice(-5) === " ... ") { + result = result.slice(0, -5) + zwarakey + " ... "; + } else if (isUofDu && result.slice(-1) === " ") { + result = result.slice(0, -1) + zwarakey + " "; + } else { + result += phonemeInfo.diacritic; + } + } + // TODO: The middle stuff might be unneccessary/unhelpful + const isACommaWithoutAyn = (phoneme === "'" && (p[pIndex] !== "ع" && !(isMiddle && p[pIndex] === "ئ"))); + // if the previous phoneme was a consonant insert a sukun + // console.log("Will I go into the adding thing?"); + if (!isBeginning && previousPhonemeWasAConsonant && phonemeInfo.consonant && phonemes[i - 1] !== "'" && p[pIndex] !== "ع") { + result += isDoubleConsonant ? tashdeed : sukun; + } + if (isEnding && isDoubleConsonant) { + // This is so ugly, extra space slipping in here + if (result.slice(-2) === " " + tashdeed) { + result = result.slice(0, -2) + tashdeed; + } + } + // if there's a pashto letter for the phoneme, insert it + if (!isEndingAynVowel && !isACommaWithoutAyn && (phonemeInfo.possibilities || isEnding)) { + // need the isSpace check to prevent weird behaviour with izafe + if (!isUofDu) { + if (isAnAEndingAfterHey) { + result += zwar; + if (p[pIndex] === " ") { + result += " "; + } + } else { + result += (isDoubleConsonant || isSpace(p[pIndex])) ? "" : p[pIndex]; + } + } + pIndex++; + } + if (isEnding) { + if (isUofDu) { + result += zwarakey; + } else if (phonemeInfo.hamzaOnEnd) { + result += hamzaAbove; + } else if (phonemeInfo.takesSukunOnEnding) { + result += sukun; + } else if (p[pIndex] === daggerAlif) { + result += daggerAlif; + } else if (isEndSpace(p[pIndex]) && p[pIndex - 1] === "ه" && phonemeInfo.takesDiacriticBeforeGurdaHeyEnding) { + result = result.slice(0, -1) + phonemeInfo.diacritic + "ه"; + } + } + if (isEnding && isEndingAynVowel) { + if (p[pIndex] === "ع") { + result += "ع"; + pIndex++; + } + result += phonemeInfo.diacritic; + if (p[pIndex] === " ") { + result += " "; + pIndex++; + } + return; + } + previousPhonemeWasAConsonant = (!isEnding && phonemeInfo.consonant) ? true : false; + // ignore the ع or ئ if there's not a ' in the phonetics + const nextPhonemeInfo = phonemeTable.find((element) => phonemes[i + 1] === element.phoneme); + if ( + ["ع", "ئ"].includes(p[pIndex]) && + ![phonemes[i + 1], phonemes[i + 2]].includes("'") && + !(nextPhonemeInfo && nextPhonemeInfo.diacritic && isEndSpace(p[pIndex + 1])) && // don't skip the ع on the end if there's another short letter coming after it + !(p[pIndex] === "ئ" && isEndSpace(p[pIndex + 1])) && // don't skip ئ on the end + !phonemeInfo.isIzafe + ) { + result += p[pIndex]; // add "ئ" or "ع"; + pIndex++; + } + // if we've arrived at the ellipses in the circumposition, skip over it + if (p.slice(pIndex, pIndex + 5) === " ... ") { + result += " ... "; + pIndex += 5; + return; + } + // if we've arrived at a space in the Pashto, move along before the next iteration + if (isSpace(p[pIndex]) && phonemes[i + 1] !== "-i-" && !upcomingAEndingAfterHey) { + result += " "; + pIndex++; + } + // need to move ahead one more with words eding in یٰ (because that's two characters) + if (p[pIndex] === daggerAlif && isSpace(p[pIndex + 1])) { + result += " "; + pIndex += 2; + } + if (phonemeInfo.isIzafe) { + result += zer + " "; + } + }); + if (errored.length) { + // console.log(errored); + return undefined; + } + return result; +} diff --git a/src/lib/standardize-pashto.test.ts b/src/lib/standardize-pashto.test.ts new file mode 100644 index 0000000..5810e54 --- /dev/null +++ b/src/lib/standardize-pashto.test.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { standardizePashto } from "./standardize-pashto"; + +const testPairs = [ + ["گوگل", "ګوګل"], + ["پك", "پک"], + ["ځير", "ځیر"], + ["چې یې راغی، ده ورمنډه کړه.", "چې یې راغی، ده ورمنډه کړه."], + ["سړی.", "سړی."], + ["زما پلار خو په جنت کښې دى.", "زما پلار خو په جنت کښې دی."], + ["حتیٰ", "حتیٰ"], + ["چېرته دى؟", "چېرته دی؟"], + ["آب", "آب"], + ["راکوي؛", "راکوي؛"], + ["راکوي!", "راکوي!"], + ["راکوي.", "راکوي."], +]; + +testPairs.forEach((pair) => { + test(`${pair[0]} should be converted to ${pair[1]}`, () => { + const result = standardizePashto(pair[0]); + expect(result).toBe(pair[1]); + }); +}); diff --git a/src/lib/standardize-pashto.ts b/src/lib/standardize-pashto.ts new file mode 100644 index 0000000..9d7bf50 --- /dev/null +++ b/src/lib/standardize-pashto.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +export function standardizePashto(input: string): string { + // Replace Arabic ى with Farsi ی + return input.replace(/\u0649/g, "\u06cc") + // Replace Arabic ك with ک + .replace(/\u0643/g, "\u06a9") + // Replace Farsi گ with ګ + .replace(/گ/g, "ګ") + // Replace ي in the middle of words with ی + .replace(/ي(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ی") + // Replace آ two character version with combined آ character + .replace(/آ/g, "آ"); +} diff --git a/src/lib/translate-phonetics-replacer.ts b/src/lib/translate-phonetics-replacer.ts new file mode 100644 index 0000000..e04616f --- /dev/null +++ b/src/lib/translate-phonetics-replacer.ts @@ -0,0 +1,354 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +interface IReplacerInfoItem { + char: string; + alalc: string | IDialects; + ipa: string | IDialects; +} + +interface IDialects { + standard: string; + peshawer: string; + southern: string; +} + +export const replacerInfo: IReplacerInfoItem[] = [ + { + char: "aa", + alalc: "ā", + ipa: "ɑ", + }, + { + char: "áa", + alalc: "ā́", + ipa: "ɑ́", + }, + { + char: "aay", + alalc: "āy", + ipa: "ɑj", // TODO: This should change for peshawer? + }, + { + char: "áay", + alalc: "ā́y", + ipa: "ɑ́j", + }, + { + char: "a", + alalc: "a", + ipa: "a", + }, + { + char: "ă", + alalc: "ạ", + ipa: "æ", + }, + { + char: "á", + alalc: "á", + ipa: "á", + }, + { + char: "u", + alalc: "ə", + ipa: "ə", + }, + { + char: "ú", + alalc: "ə­́", + ipa: "ə­́", + }, + { + char: "U", + alalc: "u", + ipa: "ú", + }, + { + char: "Ú", + alalc: "ú", + ipa: "ú", + }, + { + char: "o", + alalc: "o", + ipa: "o", + }, + { + char: "ó", + alalc: "ó", + ipa: "ó", + }, + { + char: "oo", + alalc: "ō", + ipa: "u:", + }, + { + char: "óo", + alalc: "ṓ", + ipa: "ú", + }, + { + char: "i", + alalc: "i", + ipa: "ɪ", + }, + { + char: "í", + alalc: "í", + ipa: "ɪ́", + }, + { + char: "ey", + alalc: "ay", + ipa: "ai", + }, + { + char: "éy", + alalc: "áy", + ipa: "ái", + }, + { + char: "ee", + alalc: "ī", + ipa: "i", + }, + { + char: "ée", + alalc: "ī́", + ipa: "í", + }, + { + char: "uy", + alalc: "əy", + ipa: "əj", + }, + { + char: "úy", + alalc: "ə́y", + ipa: "ə́j", + }, + { + char: "ooy", + alalc: "ōy", + ipa: "u:j", + }, + { + char: "eyy", + alalc: "ạy", + ipa: "əj", + }, + { + char: "e", + alalc: "e", + ipa: "e", + }, + { + char: "é", + alalc: "é", + ipa: "é", + }, + { + char: "w", + alalc: "w", + ipa: "w", + }, + { + char: "y", + alalc: "y", + ipa: "j", + }, + + { + char: "ts", + alalc: { + standard: "ṡ", + peshawer: "s", + southern: "ṡ", + }, + ipa: { + standard: "t͡s", + peshawer: "s", + southern: "t͡s", + }, + }, + { + char: "s", + alalc: "s", + ipa: "s", + }, + { + char: "dz", + alalc: { + standard: "dz", + peshawer: "z", + southern: "dz", + }, + ipa: { + standard: "d͡z", + peshawer: "z", + southern: "d͡z", + }, + }, + { + char: "z", + alalc: "z", + ipa: "z", + }, + { + char: "t", + alalc: "t", + ipa: "t̪", + }, + { + char: "T", + alalc: "ṭ", + ipa: "ʈ", + }, + { + char: "d", + alalc: "d", + ipa: "d̪", + }, + { + char: "D", + alalc: "ḍ", + ipa: "ɖ", + }, + { + char: "r", + alalc: "r", + ipa: "r", + }, + { + char: "R", + alalc: "ṛ", + ipa: "ɻ", + }, + { + char: "n", + alalc: "n", + ipa: "n", + }, + { + char: "N", + alalc: "ṇ", + ipa: "ɳ", + }, + { + char: "f", + alalc: "f", + ipa: "f", + }, + { + char: "b", + alalc: "b", + ipa: "b", + }, + { + char: "p", + alalc: "p", + ipa: "p", + }, + + { + char: "sh", + alalc: "sh", + ipa: "ʃ", + }, + { + char: "x", + alalc: { + standard: "k'h", + southern: "ṣh", + peshawer: "kh", + }, + ipa: { + standard: "ç", + southern: "ʂ", + peshawer: "x", + }, + }, + { + char: "kh", + alalc: "x", + ipa: "x", + }, + + { + char: "k", + alalc: "k", + ipa: "k", + }, + { + char: "q", + alalc: "q", + ipa: "q", + }, + + { + char: "jz", + alalc: "zh", + ipa: "ʒ", + }, + { + char: "G", + alalc: { + southern: "ẓh", + peshawer: "g", + standard: "ğ", + }, + ipa: { + standard: "ʝ", + southern: "ʐ", + peshawer: "g", + }, + }, + + { + char: "g", + alalc: "g", + ipa: "g", + }, + { + char: "gh", + alalc: "gh", + ipa: "ɣ", + }, + + { + char: "j", + alalc: "j", + ipa: "d͡ʒ", + }, + { + char: "ch", + alalc: "ch", + ipa: "t͡ʃ", + }, + + { + char: "l", + alalc: "l", + ipa: "l", + }, + { + char: "m", + alalc: "m", + ipa: "m", + }, + { + char: "h", + alalc: "h", + ipa: "h", + }, +]; + +// tslint:disable-next-line +export const replacerRegex = /aay|áay|aa|áa|a|á|U|Ú|u|ú|ooy|o{1,2}|óo|ó|ey|éy|e{1,2}|ée|é|uy|úy|i|í|w|y|q|g|ts|sh|s|dz|z|t|T|d|D|r|R|n|N|f|b|p|x|kh|q|k|gh|g|G|j|ch|l|l|m|h/g; diff --git a/src/lib/translate-phonetics.test.ts b/src/lib/translate-phonetics.test.ts new file mode 100644 index 0000000..6ebaec3 --- /dev/null +++ b/src/lib/translate-phonetics.test.ts @@ -0,0 +1,89 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + translatePhonetics, +} from "./translate-phonetics"; + +const dialects = ["southern", "standard", "peshawer"]; +const systems = ["ipa", "alalc"]; + +const translations = [ + { + original: "looT", + ipa: { + southern: "lu:ʈ", + standard: "lu:ʈ", + peshawer: "lu:ʈ", + }, + alalc: { + southern: "lōṭ", + standard: "lōṭ", + peshawer: "lōṭ", + }, + }, + { + original: "puxto", + ipa: { + southern: "pəʂt̪o", + standard: "pəçt̪o", + peshawer: "pəxt̪o", + }, + alalc: { + southern: "pəṣhto", + standard: "pək'hto", + peshawer: "pəkhto", + }, + }, + { + original: "luG", + ipa: { + southern: "ləʐ", + standard: "ləʝ", + peshawer: "ləg", + }, + alalc: { + southern: "ləẓh", + standard: "ləğ", + peshawer: "ləg", + }, + }, + { + original: "saRey", + ipa: { + southern: "saɻai", + standard: "saɻai", + peshawer: "saɻai", + }, + alalc: { + southern: "saṛay", + standard: "saṛay", + peshawer: "saṛay", + }, + }, +]; + +translations.forEach((t) => { + systems.forEach((system) => { + // check each dialect with given system + dialects.forEach((dialect) => { + test( + `${t.original} should be translated to ${t.ipa[dialect]} using ${system} with ${dialect} dialect`, + () => { + const translated = translatePhonetics(t.original, { + // @ts-ignore + system, + // @ts-ignore + dialect, + }); + expect(translated).toBe(t[system][dialect]); + }, + ); + }); + }); +}); diff --git a/src/lib/translate-phonetics.ts b/src/lib/translate-phonetics.ts new file mode 100644 index 0000000..a84a585 --- /dev/null +++ b/src/lib/translate-phonetics.ts @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + replacerInfo, + replacerRegex, +} from "./translate-phonetics-replacer"; + +export function translatePhonetics(input: string, options: { + system: "alalc" | "ipa"; + dialect: "standard" | "peshawer" | "southern"; + }): string { + const translated = input.replace(replacerRegex, (mtch): any => { + const r = replacerInfo.find((x) => x.char === mtch); + /* istanbul ignore next */ + if (!r) { + return; + } + const r2 = r[options.system]; + if (typeof r2 === "string") { + // no dialect options present + return r2; + } + // dialect options present, choose the appropriate one + return r2[options.dialect]; + }); + return translated; +} diff --git a/src/lib/validate-entry.test.ts b/src/lib/validate-entry.test.ts new file mode 100644 index 0000000..b267cd7 --- /dev/null +++ b/src/lib/validate-entry.test.ts @@ -0,0 +1,161 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { validateEntry } from "./validate-entry"; +import * as T from "../types"; + +const toTest: { + input: any, + output: T.DictionaryEntryError | { ok: true } | { checkComplement: true }, +}[] = [ + { + input: { ts: undefined }, + output: { + errors: ["missing ts", "missing i", "missing p", "missing f", "missing e"], + p: "", + f: "", + e: "", + erroneousFields: ["ts", "i", "p", "f", "e"], + ts: 0, + }, + }, + { + input: { ts: 123, p: "کور", e: "house" }, + output: { + errors: ["missing i", "missing f"], + p: "کور", + f: "", + ts: 123, + e: "house", + erroneousFields: ["i", "f"], + }, + }, + { + input: {"i":293,"ts":1527821299,"p":"اخطار","f":"ixtáar","e":"warning, reprimand, admonishment","c":"n. m."}, + output: { + errors: ["script and phonetics do not match for p and f"], + p: "اخطار", + f: "ixtáar", + e: "warning, reprimand, admonishment", + ts: 1527821299, + erroneousFields: ["p", "f"], + }, + }, + { + input: {"i":2433,"ts":1527815197,"p":"پښتون","f":"puxtoon","e":"Pashtun","c":"n. m. unisex / adj. irreg.","infap":"پښتانه","infaf":"puxtaanu","infbf":"puxtan"}, + output: { + errors: ["missing infbp"], + p: "پښتون", + f: "puxtoon", + e: "Pashtun", + ts: 1527815197, + erroneousFields: ["infbp"], + }, + }, + { + input: {"i":2433,"ts":1527815197,"p":"پښتون","f":"puxtoon","e":"Pashtun","c":"n. m. unisex / adj. irreg.","infap":"پښتانه","infaf":"puxtaanu","infbp":"پښتن"}, + output: { + errors: ["missing infbf"], + p: "پښتون", + f: "puxtoon", + e: "Pashtun", + ts: 1527815197, + erroneousFields: ["infbf"], + }, + }, + { + input: {"i":2433,"ts":1527815197,"p":"پښتون","f":"puxtoon","e":"Pashtun","c":"n. m. unisex / adj. irreg.","infap":"پښتانه","infaf":"puktaanu","infbp":"پښتن"}, + output: { + errors: ["script and phonetics do not match for infap and infaf", "missing infbf"], + p: "پښتون", + f: "puxtoon", + e: "Pashtun", + ts: 1527815197, + erroneousFields: ["infap", "infaf", "infbf"], + }, + }, + { + input: {"i":5000,"ts":1527819674,"p":"څملاستل","f":"tsumlaastúl","e":"to lie down","l":1596485996977,"separationAtP":2,"c":"v. intrans. seperable","psp":"څمل","psf":"tsaml","noOo":true}, + output: { + errors: ["missing separationAtF"], + p: "څملاستل", + f: "tsumlaastúl", + e: "to lie down", + ts: 1527819674, + erroneousFields: ["separationAtF"], + }, + }, + { + input: {"i":5000,"ts":1527819674,"p":"څملاستل","f":"sumlaastúl","e":"to lie down","l":1596485996977,"separationAtP":2,"c":"v. intrans. seperable","psp":"څمل","psf":"tsaml","noOo":true}, + output: { + errors: ["script and phonetics do not match for p and f", "missing separationAtF"], + p: "څملاستل", + f: "sumlaastúl", + e: "to lie down", + ts: 1527819674, + erroneousFields: ["p", "f", "separationAtF"], + }, + }, + { + input: {"i":5000,"ts":1527819674,"p":"څملاستل","f":"tsumlaastúl","e":"to lie down","l":1596485996977,"separationAtF":4,"c":"v. intrans. seperable","psp":"څمل","psf":"tsaml","noOo":true}, + output: { + errors: ["missing separationAtP"], + p: "څملاستل", + f: "tsumlaastúl", + e: "to lie down", + ts: 1527819674, + erroneousFields: ["separationAtP"], + }, + }, + { + input: {"i":2222,"ts":1571859113828,"p":"پخول","f":"pakhawul","e":"to cook, prepare, to cause to ripen, mature","c":"v. stat. comp. trans."}, + output: { + errors: ["missing complement for compound verb"], + p: "پخول", + f: "pakhawul", + e: "to cook, prepare, to cause to ripen, mature", + ts: 1571859113828, + erroneousFields: ["l"], + }, + }, + { + input: {"i":2222,"ts":1571859113828,"p":"پخول","f":"pakhawul","e":"to cook, prepare, to cause to ripen, mature","l":1574867531681,"c":"v. stat. comp. trans."}, + output: { + checkComplement: true, + }, + }, + { + input: {"i":2231,"ts":1527812013,"p":"پراخ","f":"praakh, paráakh","e":"wide, broad, spacious, vast","c":"adj."}, + output: { ok: true }, + }, + { + input: {"i":0,"ts":1527812013,"p":"پراخ","f":"praakh, paráakh","e":"wide, broad, spacious, vast","c":"adj."}, + output: { ok: true }, + }, + { + input: {"i":12,"ts":1575058859661,"p":"آبدار","f":"aawdáar","e":"watery, damp, humid, juicy","c":"adj."}, + output: { + errors: ["script and phonetics do not match for p and f"], + p: "آبدار", + f: "aawdáar", + e: "watery, damp, humid, juicy", + ts: 1575058859661, + erroneousFields: ["p", "f"], + }, + }, + { + input: {"i":12,"ts":1575058859661,"p":"آبدار","f":"aawdáar","e":"watery, damp, humid, juicy","c":"adj.","diacExcept":true}, + output: { ok: true }, + }, +]; + +test("validateEntry should work", () => { + toTest.forEach((t) => { + expect(validateEntry(t.input as T.DictionaryEntry)).toEqual(t.output); + }); +}); diff --git a/src/lib/validate-entry.ts b/src/lib/validate-entry.ts new file mode 100644 index 0000000..48ca953 --- /dev/null +++ b/src/lib/validate-entry.ts @@ -0,0 +1,100 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import * as T from "../types"; +import { + phoneticsToDiacritics, +} from "./phonetics-to-diacritics"; + +const textFieldPairs: [T.DictionaryEntryTextField, T.DictionaryEntryTextField][] = [ + ["p", "f"], + ["infap", "infaf"], + ["infbp", "infbf"], + ["app", "apf"], + ["ppp", "ppf"], + ["psp", "psf"], + ["ssp", "ssf"], + ["prp", "prf"], + ["pprtp", "pprtf"], + ["tppp", "tppf"], +]; + +const requiredFields: T.DictionaryEntryField[] = [ + "ts", "i", "p", "f", "e", +]; + +export function validateEntry(entry: T.DictionaryEntry): T.DictionaryEntryError | { + ok: true, +} | { + checkComplement: true, +} { + let errors: string[] = []; + const erroneousFields = new Set(); + requiredFields.forEach((field) => { + if (field !== "i" && !entry[field]) { + errors.push(`missing ${field}`); + erroneousFields.add(field); + } + if (field === "i" && typeof entry[field] !== "number") { + errors.push(`missing ${field}`); + erroneousFields.add(field); + } + }); + textFieldPairs.forEach((pair) => { + const pField = pair[0]; + const fField = pair[1]; + const p = entry[pField]; + const f = entry[fField]; + if (!requiredFields.includes(pair[0])) { + if (!p && !f) { + return; + } + if (!p && f) { + errors.push(`missing ${pField}`); + erroneousFields.add(pField); + return; + } + if (p && !f) { + errors.push(`missing ${fField}`); + erroneousFields.add(fField); + return; + } + } + if (p && f && (!phoneticsToDiacritics(p, f) && !entry.diacExcept)) { + errors.push(`script and phonetics do not match for ${pField} and ${fField}`); + erroneousFields.add(pField) + erroneousFields.add(fField); + } + }); + if ((entry.separationAtP && !entry.separationAtF)) { + errors.push("missing separationAtF"); + erroneousFields.add("separationAtF"); + } + if ((!entry.separationAtP && entry.separationAtF)) { + errors.push("missing separationAtP"); + erroneousFields.add("separationAtP"); + } + if (entry.c && entry.c.slice(0, 2) === "v." && entry.c.includes("comp.") && !entry.l) { + errors.push("missing complement for compound verb"); + erroneousFields.add("l"); + } + if (errors.length) { + return { + errors, + p: entry.p || "", + f: entry.f || "", + e: entry.e || "", + ts: entry.ts || 0, + erroneousFields: Array.from(erroneousFields), + }; + } + if (entry.c && entry.c.slice(0, 2) === "v." && entry.c.includes("comp.") && entry.l) { + return { checkComplement: true }; + } + return { ok: true }; +} diff --git a/src/lib/verb-conjugation.ts b/src/lib/verb-conjugation.ts new file mode 100644 index 0000000..a81cd13 --- /dev/null +++ b/src/lib/verb-conjugation.ts @@ -0,0 +1,632 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { getVerbInfo } from "./verb-info"; +import { + presentEndings, + pastEndings, + imperativeEndings, + baParticle, + equativeEndings, + emptyVerbBlock, + passiveStativeBridge, + aayTail, +} from "./grammar-units"; +import { + addToForm, + mapVerbBlock, + concatPsString, + allOnePersonVerbForm, + complementInflects, + concatInflections, + unisexInfToObjectMatrix, + inflectYey, + psStringFromEntry, + allOnePersonInflection, + psStringEquals, +} from "./p-text-helpers"; +import { + accentOnNFromEnd, +} from "./accent-helpers"; +import { pashtoConsonants } from "./pashto-consonants"; +import { + checkForIrregularConjugation, + stativeAux, +} from "./irregular-conjugations"; +import { + chooseParticipleInflection, + spaceInForm, + noPersInfs, +} from "./misc-helpers"; +import * as T from "../types"; + +const dummyEntry: T.DictionaryEntry = { i: 0, p: "", f: "", e: "", c: "", ts: 0 }; + +const getAayTail = (type: T.AayTail): T.PsString => ( + type === "ey" + ? { p: "ی", f: "ey" } + : { p: "ای", f: "aay" } +); + +export function conjugateVerb(entry: T.DictionaryEntry, aayTailType: T.AayTail, complement?: T.DictionaryEntry, verbInfo?: T.NonComboVerbInfo): T.VerbOutput { + const irregularConj = checkForIrregularConjugation(entry); + if (irregularConj) { + return irregularConj; + } + const info = verbInfo ? verbInfo : getVerbInfo(entry, complement); + if (info.type === "transitive or grammatically transitive simple") { + return { + info, + transitive: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.transitive) as T.VerbConjugation, + grammaticallyTransitive: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.grammaticallyTransitive) as T.VerbConjugation, + }; + } + + if (info.type === "dynamic or stative compound" || info.type === "dynamic or generative stative compound") { + return { + info, + stative: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.stative) as T.VerbConjugation, + dynamic: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.dynamic) as T.VerbConjugation, + }; + } + + if (info.type === "dynamic compound") { + return conjugateDynamicCompound(info, aayTailType); + } + + const nonComboInfo = info as T.NonComboVerbInfo; + + // TODO: Handle verbs like چيغه کول + const conjugation: T.VerbConjugation = { + info: nonComboInfo, + imperfective: makeAspectContent(nonComboInfo, "imperfective", aayTailType), + perfective: makeAspectContent(nonComboInfo, "perfective", aayTailType), + hypothetical: makeHypotheticalContent(nonComboInfo), + participle: makeParticipleContent(nonComboInfo), + perfect: makePerfectContent(nonComboInfo), + ..."singularForm" in info ? { + singularForm: conjugateVerb(entry, aayTailType, complement, info.singularForm) as T.VerbConjugation, + } : {}, + // if transitive include passive voice + ...info.transitivity !== "intransitive" ? { + // TODO: STATIVE COMPOUND VERSION OF THIS + passive: makePassiveContent(nonComboInfo), + } : {}, + }; + + return nonComboInfo.transitivity === "grammatically transitive" + ? enforceObject(conjugation, 10) + : nonComboInfo.type === "generative stative compound" + ? enforceObject(conjugation, nonComboInfo.objComplement.person) + : conjugation; +} + +function conjugateDynamicCompound(info: T.DynamicCompoundVerbInfo, aayTailType: "ey" | "aay"): T.VerbConjugation { + const willUseImperative = !( + info.type === "dynamic compound" + && info.transitivity === "intransitive" + && info.auxVerb.p === "کېدل" + ); + const auxConj = enforceObject( + conjugateVerb(info.auxVerb, aayTailType, info.auxVerbComplement) as T.VerbConjugation, + info.objComplement.person, + ); + const complement = info.objComplement.plural + ? info.objComplement.plural + : psStringFromEntry(info.objComplement.entry); + const makeAspectContent = (aspect: T.Aspect): T.AspectContent => { + const makeModalContent = (): T.ModalContent => { + const nonImperative = addToForm([complement, " "], auxConj[aspect].modal.nonImperative); + const future = addToForm([baParticle, " "], nonImperative); + const past = addToForm([complement, " "], auxConj[aspect].modal.past); + const hypotheticalPast = addToForm([complement, " "], auxConj[aspect].modal.hypotheticalPast); + return { + nonImperative, + future, + past, + hypotheticalPast, + }; + }; + const ac = auxConj[aspect]; + const nonImperative = addToForm([complement, " "], ac.nonImperative); + const future = addToForm([baParticle, " "], nonImperative); + const imperative = (ac.imperative && willUseImperative) + ? addToForm([complement, " "], ac.imperative) + : null; + const past = addToForm([complement, " "], auxConj[aspect].past); + const modal = makeModalContent(); + return { + nonImperative, + future, + ...imperative ? { + imperative, + } : {}, + past, + modal, + }; + } + const hypothetical = addToForm([complement, " "], auxConj.hypothetical); + const auxPPart = auxConj.participle.past; + const participle = { + present: concatInflections(complement, auxConj.participle.present), + past: ( + (("long" in auxPPart) && ("masc" in auxPPart.long)) || + ("masc" in auxPPart) + ) + // @ts-ignore + ? concatInflections(complement, auxPPart) + // @ts-ignore + : concatPsString(complement, " ", auxPPart) + } + const makePerfect = (pset: T.PerfectContent) => ({ + halfPerfect: addToForm([complement, " "], pset.halfPerfect), + past: addToForm([complement, " "], pset.past), + present: addToForm([complement, " "], pset.present), + subjunctive: addToForm([complement, " "], pset.subjunctive), + future: addToForm([complement, " "], pset.future), + affirmational: addToForm([complement, " "], pset.affirmational), + pastSubjunctiveHypothetical: addToForm([complement, " "], pset.pastSubjunctiveHypothetical), + }); + const makePassiveAspectContent = (aspect: T.Aspect, passive: T.PassiveContent): T.AspectContentPassive => { + const nonImperative = addToForm([complement, " "], passive[aspect].nonImperative); + const future = addToForm([baParticle, " "], nonImperative); + const past = addToForm([complement, " "], passive[aspect].past); + return { + nonImperative, + future, + past, + }; + } + return { + info, + imperfective: makeAspectContent("imperfective"), + perfective: makeAspectContent("perfective"), + hypothetical, + participle, + perfect: makePerfect(auxConj.perfect), + ...auxConj.passive ? { + passive: { + imperfective: makePassiveAspectContent("imperfective", auxConj.passive), + perfective: makePassiveAspectContent("perfective", auxConj.passive), + perfect: makePerfect(auxConj.passive.perfect), + }, + } : {}, + ...info.singularForm ? { + singularForm: conjugateDynamicCompound(info.singularForm, aayTailType) + } : {}, + ...info.intransitiveForm ? { + intransitiveForm: conjugateDynamicCompound(info.intransitiveForm, aayTailType) + } : {}, + }; +} + +function makeAspectContent(info: T.NonComboVerbInfo, aspect: T.Aspect, aayTailType: T.AayTail): T.AspectContent { + if ((info.type === "stative compound") && spaceInForm(info.root[aspect])) { + return makeStativeCompoundSeperatedAspectContent(info, aspect, aayTailType); + } + const stem = noPersInfs(info.stem[aspect]); + const root = noPersInfs(info.root[aspect]); + const nonImperative = addToForm([stem], presentEndings); + const future = addToForm([baParticle, " "], nonImperative); + const imperative = addToForm([stem], imperativeEndings); + const roughPast = addToForm([root], pastEndings) as T.LengthOptions; + // add accents and idiosyncratic third person sing masc forms + const past = finishSimpleVerbPast(info, aspect, roughPast); + return { + nonImperative, // stem + present endings + future, // به - ba + nonImperative + imperative, // stem + imperative endings + past, // root + past endings + modal: makeJoinedModalContent(info, aspect, aayTailType), + }; +} + +function makeJoinedModalContent(info: T.NonComboVerbInfo, aspectIn: T.Aspect, aayTailType: T.AayTail): T.ModalContent { + const aspect: T.Aspect = noPerfectiveModal(info) ? "imperfective" : aspectIn; + const aayTail = getAayTail(aayTailType); + const aux = stativeAux.intransitive.perfective; + const rAndT = info.yulEnding + ? concatPsString(noPersInfs(info.root[aspect]).long, aayTail) + : concatPsString(noPersInfs(info.root[aspect]), aayTail); + const rootAndTail = aspect === "imperfective" + ? accentImperfectiveModalRootAndTail(info, rAndT) + : rAndT; + + const nonImperative = addToForm([rootAndTail, " "], aux.nonImperative); + const future = addToForm([baParticle, " "], nonImperative); + const past = addToForm( + [rootAndTail, " "], + // @ts-ignore + aux.past.short, + ); + const hypotheticalPast = addToForm([rootAndTail, " ", { p: "شو", f: "shw" }, aayTail], emptyVerbBlock); + return { + nonImperative, // ROOT + aayTail + kedulStat subjunctive + future, // به - ba + modal nonImperative + past, // ROOT + aayTail + kedulStat simple past + hypotheticalPast, // ROOT + aayTail + sh + aayTail + }; +} + +function makeStativeCompoundSeperatedAspectContent(info: T.StativeCompoundVerbInfo, aspect: T.Aspect, aayTailType: T.AayTail): T.AspectContent { + const transitivity = getTransitivity(info); + const presentComplement = (transitivity === "transitive" && complementInflects(info.complement)) + ? unisexInfToObjectMatrix(info.complement) // transitive verb requires an object matrix for the complex + : info.complement; // intransitive verb doesn't require that because the complement matches the subject + + function makeTransitiveStativeModalContent() { + const aux = stativeAux[transitivity][aspect].modal; + const nonImperative = addToForm([presentComplement, " "], aux.nonImperative); + const future = addToForm([baParticle, " "], nonImperative); + const past = addToForm([info.complement, " "], aux.past); + const hypotheticalPast = addToForm([info.complement, " "], aux.hypotheticalPast); + return { + nonImperative, + future, + past, + hypotheticalPast, + }; + } + + const aux = stativeAux[transitivity][aspect]; + // CHECK, does this work with transitive and intransitive?? + const nonImperative = addToForm( + [presentComplement, " "], + stativeAux[transitivity][aspect].nonImperative, + ); + const future = addToForm([baParticle, " "], nonImperative); + const imperative = aux.imperative + ? addToForm([presentComplement, " "], aux.imperative) + : null; + const past = addToForm([info.complement, " "], aux.past); + return { + nonImperative, + future, + past, + ...imperative ? { + imperative, + } : {}, + modal: info.transitivity === "transitive" + ? makeTransitiveStativeModalContent() + : makeJoinedModalContent(info, "imperfective", aayTailType), + }; +} + +function makeHypotheticalContent(info: T.NonComboVerbInfo): T.VerbForm { + function makeStativeCompoundSepHypotheticalContent(info: T.StativeCompoundVerbInfo): T.VerbForm { + const transitivity = getTransitivity(info); + const aux = stativeAux[transitivity].hypothetical; + return addToForm([ + (transitivity === "transitive" && complementInflects(info.complement)) + ? unisexInfToObjectMatrix(info.complement) + : info.complement, + " ", + ], aux); + } + if (("complement" in info) && spaceInForm(info.root.imperfective)) { + return makeStativeCompoundSepHypotheticalContent(info as T.StativeCompoundVerbInfo); + } + const makeHypothetical = (root: T.OptionalPersonInflections>, length: "short" | "long"): T.PsString => { + if ("mascSing" in root) { + // BIG TODO: SHOULD THERE BE PERS INFS HERE?? IGNORING THEM NOW IF THEY EXIST + return makeHypothetical(root.mascSing, length) as T.PsString; + } + return accentOnNFromEnd( + concatPsString(root[length], aayTail), + (length === "long" ? 1 : 0) + (info.yulEnding ? 1 : 0), + ) + }; + const hyp = { + short: makeHypothetical(info.root.imperfective, "short"), + long: makeHypothetical(info.root.imperfective, "long"), + }; + return addToForm([hyp], emptyVerbBlock); +} + +function makeParticipleContent(info: T.NonComboVerbInfo): T.ParticipleContent { + const transitivity = getTransitivity(info); + const past = ("complement" in info) + ? concatInflections(info.complement, stativeAux[transitivity].participle.past as T.UnisexInflections) + : ("objComplement" in info) + ? concatInflections(info.objComplement.plural ? info.objComplement.plural : info.objComplement.entry, stativeAux[transitivity].participle.past as T.UnisexInflections) + : inflectYey(noPersInfs(info.participle.past)); + const present = ("complement" in info && spaceInForm(info.root.imperfective)) + ? concatInflections(info.complement, stativeAux[transitivity].participle.present as T.UnisexInflections) + : inflectYey(noPersInfs(info.participle.present)); + if ("objComplement" in info) { + console.log(info.objComplement, past); + } + return { + present, // PAST PARTICIPLE inflected + past, // PRESENT PARTICIPLE inflected + }; +} + +function makePerfectContent(info: T.NonComboVerbInfo): T.PerfectContent { + const transitivity = getTransitivity(info); + const pastPart: (" " | T.SingleOrLengthOpts | T.SingleOrLengthOpts)[] = + (info.type === "stative compound") + // for stative compounds + ? [info.complement, " ", stativeAux[transitivity].participle.past] + // for regular compounds + : [inflectYey(noPersInfs(info.participle.past))] + + const halfPerfect = addToForm([...pastPart], emptyVerbBlock); + const past = addToForm([...pastPart, " "], equativeEndings.past.short); + const present = addToForm([...pastPart, " "], equativeEndings.present); + const subjunctive = addToForm([...pastPart, " "], equativeEndings.subjunctive); + const future = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.subjunctive); + const affirmational = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.past.short); + const pastSubjunctiveHypothetical = addToForm([...pastPart, " "], equativeEndings.hypothetical); + return { + halfPerfect, // Past Participle + past, // Past Participle + Past Equative + present, // Past Participle + Present Equative + subjunctive, // Past Participle + Subjunctive Equative + future, // به - ba + Past Participle + Future/Subj Equative + affirmational, // به - ba + Past Participle + Past Equative + pastSubjunctiveHypothetical, // Past Participle + وای - waay + }; +} + +function makePassiveContent(info: T.NonComboVerbInfo): { + imperfective: T.AspectContentPassive // --╖ ASPECT = "imperfective" + perfective: T.AspectContentPassive // --╜ ASPECT = "perfective" + perfect: T.PerfectContent; +} { + function makePassiveAspectContent(aspect: T.Aspect): T.AspectContentPassive { + if ("complement" in info && spaceInForm(info.root[aspect])) { + // seperated stative compound verb + const bridge = aspect === "imperfective" + ? noPersInfs(stativeAux.transitive.info.root.imperfective).long + : passiveStativeBridge; + const nonImperative = addToForm( + [info.complement, " ", bridge, " "], + stativeAux.intransitive[aspect].nonImperative, + ); + const future = addToForm([baParticle, " "], nonImperative); + const past = addToForm( + [info.complement, " ", bridge, " "], + stativeAux.intransitive[aspect].past, + ); + return { + nonImperative, + future, + past, + }; + } + const root = noPersInfs(info.root[aspect]).long; + const aux = stativeAux.intransitive[aspect]; + const nonImperative = addToForm([root, " "], aux.nonImperative); + const future = addToForm([baParticle, " "], nonImperative); + const past = addToForm([root, " "], aux.past); + return { + nonImperative, // ROOT LONG + kedulStat[aspect].nonImperative + future, // به ba + ROOT LONG + this.nonImperative + past, // ROOT LONG + kedulStat[aspect].past + }; + } + const simpleVerbParticiple = { + past: concatPsString( + noPersInfs(info.root.imperfective).long, + " ", + stativeAux.intransitive.info.participle.past as T.PsString, + ), + present: { p: "ن ا", f: "n / a" }, + }; + const perfect = (info.type === "stative compound") + ? makePassivePerfectContent(info) + : makePerfectContent({ ...info, participle: simpleVerbParticiple }); + return { + imperfective: makePassiveAspectContent("imperfective"), + perfective: makePassiveAspectContent("perfective"), + perfect: perfect, + }; +} + +function makePassivePerfectContent(info: T.StativeCompoundVerbInfo): T.PerfectContent { + const pPart = stativeAux.intransitive.participle.past; + // will always be transitive + const halfPerfect = addToForm( + [info.complement, " ", passiveStativeBridge, " ", pPart], + emptyVerbBlock, + ); + const past = addToForm( + [info.complement, " ", passiveStativeBridge, " ", pPart, " "], + equativeEndings.past.short, + ); + const present = addToForm( + [info.complement, " ", passiveStativeBridge, " ", pPart, " "], + equativeEndings.present, + ); + const subjunctive = addToForm( + [info.complement, " ", passiveStativeBridge, " ", pPart, " "], + equativeEndings.subjunctive, + ); + const future = addToForm( + [baParticle, " ", info.complement, " ", passiveStativeBridge, " ", pPart, " "], + equativeEndings.subjunctive, + ); + const affirmational = addToForm( + [baParticle, " ", info.complement, " ", passiveStativeBridge, " ", pPart, " "], + equativeEndings.past.short, + ); + const pastSubjunctiveHypothetical = addToForm( + [info.complement, " ", passiveStativeBridge, " ", pPart, " "], + equativeEndings.hypothetical, + ); + return { + halfPerfect, + past, + present, + subjunctive, + future, + affirmational, + pastSubjunctiveHypothetical, + }; +} + +function enforceObject(conj: T.VerbConjugation, person: T.Person): T.VerbConjugation { + const modifyPastInAspect = (as: T.AspectContent): T.AspectContent => ({ + nonImperative: allOnePersonInflection(as.nonImperative, person), + future: allOnePersonInflection(as.future, person), + ...as.imperative ? { + imperative: allOnePersonInflection(as.imperative, person), + } : {}, + past: allOnePersonVerbForm(as.past, person), + modal: { + ...as.modal, + past: allOnePersonVerbForm(as.modal.past, person), + }, + }); + const modifyParticiple = (part: T.ParticipleContent): T.ParticipleContent => ({ + // TODO: What to do with this! + present: allOnePersonInflection(part.present, person), + past: chooseParticipleInflection(part.past, person), + }); + const modifyPerfect = (perf: T.PerfectContent): T.PerfectContent => ({ + halfPerfect: allOnePersonVerbForm(perf.halfPerfect, person), + past: allOnePersonVerbForm(perf.past, person), + present: allOnePersonVerbForm(perf.present, person), + subjunctive: allOnePersonInflection(perf.subjunctive, person), + future: allOnePersonVerbForm(perf.future, person), + affirmational: allOnePersonVerbForm(perf.affirmational, person), + pastSubjunctiveHypothetical: allOnePersonVerbForm(perf.pastSubjunctiveHypothetical, person), + }); + const modifyPassiveAspect = (as: T.AspectContentPassive): T.AspectContentPassive => ({ + nonImperative: allOnePersonVerbForm(as.nonImperative, person), + future: allOnePersonVerbForm(as.future, person), + past: allOnePersonVerbForm(as.past, person), + }); + return { + ...conj, + imperfective: modifyPastInAspect(conj.imperfective), + perfective: modifyPastInAspect(conj.perfective), + participle: modifyParticiple(conj.participle), + perfect: modifyPerfect(conj.perfect), + ...conj.passive ? { + passive: { + imperfective: modifyPassiveAspect(conj.passive.imperfective), + perfective: modifyPassiveAspect(conj.passive.perfective), + perfect: modifyPerfect(conj.passive.perfect), + } + } : {}, + }; +} + +// 2ND LEVER HELPERS + +function finishSimpleVerbPast( + info: T.NonComboVerbInfo, + aspect: T.Aspect, + roughPast: T.LengthOptions, +): T.VerbForm { + const applyAccent = (block: T.VerbBlock, form: "short" | "long"): T.VerbBlock => ( + mapVerbBlock((item: T.PsString, rowNum: number | undefined, colNum: number | undefined) => { + const nonRedundantLEnding = ( + (rowNum === 4 && colNum === 1) && + item.p.slice(-1) === "ل" && + ["ul", "úl"].includes(item.f.slice(-2)) + ) + const n = (((form === "short") || nonRedundantLEnding) ? 0 : 1) + (info.yulEnding ? 1 : 0); + return accentOnNFromEnd(item, n); + }, block) + ); + const short = ensureShort3rdPersMascSing(info, aspect, roughPast.short); + if (aspect === "imperfective") { + return { + short: applyAccent(short, "short"), + long: applyAccent(roughPast.long, "long"), + }; + } + // don't apply the accent on the perfective because the accent will + // already have been included in the perfective root + return { ...roughPast, short }; +} + +function ensureShort3rdPersMascSing( + info: T.NonComboVerbInfo, + aspect: T.Aspect, + block: T.VerbBlock, +): T.VerbBlock { + const replace3rdPersMascSing = ( + replacement: T.ArrayOneOrMore, + block: T.VerbBlock, + ): T.VerbBlock => ([ + ...block.slice(0, 4), + [replacement, block[4][1]], + block[5], + ] as T.VerbBlock); + const makeAawuForm = (root: T.PsString): T.PsString => { + const base = { + p: root.p.slice(0, -1), + f: root.f.slice(0, -2), + }; + return concatPsString(base, { p: "اوه", f: "aawu" }); + } + const infinitive = noPersInfs(info.root.imperfective).long; + const endsInAwul = ( + (["awul", "awúl"].includes(infinitive.f.slice(-4))) + && + (infinitive.p.slice(-2) === "ول") + ); + if (endsInAwul) { + const root = noPersInfs(info.root[aspect]).short; + return replace3rdPersMascSing([makeAawuForm(root)], block); + } + if (info.idiosyncraticThirdMascSing) { + const form = info.idiosyncraticThirdMascSing[aspect]; + // if it ends in a consonant, the special form will also have another + // variation ending with a ه - u + const endsInAConsonant = pashtoConsonants.includes(form.p.slice(-1)); + const replacement: T.ArrayOneOrMore = endsInAConsonant + ? [form, concatPsString(form, { p: "ه", f: "u" })] + : [form]; + return replace3rdPersMascSing(replacement, block); + } + // No need for any special third person masculine singular forms + return block; +} + +function accentImperfectiveModalRootAndTail( + info: T.NonComboVerbInfo, + rt: T.SingleOrLengthOpts, + length?: "long" | "short", +): T.SingleOrLengthOpts { + if ("long" in rt) { + return { + short: accentImperfectiveModalRootAndTail(info, rt.short, "short") as T.PsString, + long: accentImperfectiveModalRootAndTail(info, rt.long, "long") as T.PsString, + } + } + const n = info.yulEnding + ? 2 + : length === "short" + ? 0 + : 1; + return accentOnNFromEnd(rt, n); +} + +function getTransitivity(info: T.VerbInfo): "transitive" | "intransitive" { + return ("transitivity" in info && info.transitivity === "intransitive") + ? "intransitive" + : "transitive"; +} + +function noPerfectiveModal(info: T.NonComboVerbInfo): boolean { + if (!("mascSing" in info.root.imperfective)) { + const inf = info.root.imperfective.long; + return ( + inf.p === "راتلل" || + psStringEquals({ p: "تلل", f: "tlul" }, inf) || + inf.p === "درتلل" || + inf.p === "ورتلل" + ); + } + return false; +} diff --git a/src/lib/verb-info.test.ts b/src/lib/verb-info.test.ts new file mode 100644 index 0000000..d5b0d4f --- /dev/null +++ b/src/lib/verb-info.test.ts @@ -0,0 +1,2680 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + getVerbInfo, +} from "./verb-info"; + +const toTest = [ + // simple verbs + { + entry: {"i":10996,"ts":1527812856,"p":"لیکل","f":"leekul","e":"to write","c":"v. trans."}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { p: "ولیک", f: "óoleek" }, + imperfective: { p: "لیک", f: "leek" }, + perfectiveSplit: [{p: "و", f: "óo"}, {p: "لیک", f: "leek"}] + }, + root: { + perfective: { + long: { p: "ولیکل", f: "óoleekul" }, + short: { p: "ولیک", f: "óoleek" }, + }, + imperfective: { + long: { p: "لیکل", f: "leekúl" }, + short: { p: "لیک", f: "leek" }, + }, + perfectiveSplit: { + long: [{p: "و", f: "óo"}, { p: "لیکل", f: "leekul" }], + short: [{p: "و", f: "óo"}, { p: "لیک", f: "leek" }], + }, + }, + participle: { + past: { + p: "لیکلی", + f: "leekúley", + }, + present: { + p: "لیکونکی", + f: "leekóonkey", + }, + }, + }, + }, + { + entry: {"i":10243,"ts":1527812645,"p":"ګرځېدل","f":"gurdzedul","e":"to walk, wander, turn about; to become, to be","c":"v. intrans.","shortIntrans":true}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { + short: { p: "وګرځ", f: "óogurdz" }, + long: { p: "وګرځېږ", f: "óogurdzeG" }, + }, + imperfective: { + short: { p: "ګرځ", f: "gurdz" }, + long: { p: "ګرځېږ", f: "gurdzéG" }, + }, + perfectiveSplit: { + short: [{ p: "و", f: "óo" }, { p: "ګرځ", f: "gurdz" }], + long: [{ p: "و", f: "óo" }, { p: "ګرځېږ", f: "gurdzeG" }], + }, + }, + root: { + perfective: { + short: { p: "وګرځېد", f: "óogurdzed" }, + long: { p: "وګرځېدل", f: "óogurdzedul" }, + }, + imperfective: { + short: { p: "ګرځېد", f: "gurdzed" }, + long: { p: "ګرځېدل", f: "gurdzedúl" }, + }, + perfectiveSplit: { + short: [{ p: "و", f: "óo" },{ p: "ګرځېد", f: "gurdzed" }], + long: [{ p: "و", f: "óo" },{ p: "ګرځېدل", f: "gurdzedul" }], + }, + }, + participle: { + past: { + p: "ګرځېدلی", + f: "gurdzedúley", + }, + present: { + long: { + p: "ګرځېدونکی", + f: "gurdzedóonkey", + }, + short: { + p: "ګرځونکی", + f: "gurdzóonkey", + }, + }, + }, + }, + }, + { + entry: {"i":13664,"ts":1527823376,"p":"وتل","f":"watul","e":"to go out, exit, leave, emerge","c":"v. intrans. irreg.","psp":"وځ","psf":"oodz","tppp":"واته","tppf":"waatu"}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { p: "ووځ", f: "wÚoodz" }, + imperfective: { p: "وځ", f: "oodz" }, + perfectiveSplit: [{ p: "و", f: "wÚ" }, { p: "وځ", f: "oodz" }], + }, + root: { + perfective: { + short: { p: "ووت", f: "óowat" }, + long: { p: "ووتل", f: "óowatul" }, + }, + imperfective: { + short: { p: "وت", f: "wat" }, + long: { p: "وتل", f: "watúl" }, + }, + perfectiveSplit: { + short: [{ p: "و", f: "óo" },{ p: "وت", f: "wat" }], + long: [{ p: "و", f: "óo" },{ p: "وتل", f: "watul" }], + }, + }, + participle: { + past: { + long: { + p: "وتلی", + f: "watúley", + }, + short: { + p: "وتی", + f: "wátey", + }, + }, + present: { + long: { + p: "وتلونکی", + f: "watlóonkey", + }, + short: { + p: "وتونکی", + f: "watóonkey", + }, + }, + }, + idiosyncraticThirdMascSing: { + imperfective: { p: "واته", f: "waatu" }, + perfective: { p: "وواته", f: "óowaatu" }, + }, + }, + }, + { + entry: {"i":13801,"ts":1527816865,"p":"وړل","f":"oRúl, wRul, wuRúl","e":"to take, carry, bear, move (inanimate objects); to win, earn (subjunctive یوسي - yósee or ویسي - wéesee, simple past یو یې وړلو - yo ye wRulo)","separationAtP":2,"separationAtF":2,"c":"v. trans. irreg.","ssp":"یوس","ssf":"yos","prp":"یوړل","prf":"yóRul","noOo":true,"diacExcept":true}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + perfective: { + short: { p: "یوړ", f: "yóR" }, + long: { p: "یوړل", f: "yóRul" }, + }, + imperfective: { + short: { p: "وړ", f: "oR" }, + long: { p: "وړل", f: "oRúl" }, + }, + perfectiveSplit: { + short: [{p: "یو", f: "yó"}, {p: "ړ", f: "R" }], + long: [{p: "یو", f: "yó"}, {p: "ړل", f: "Rul" }], + }, + }, + stem: { + perfective: { + p: "یوس", + f: "yos", + }, + imperfective: { + p: "وړ", + f: "oR", + }, + perfectiveSplit: [{p: "یو", f: "yó"}, {p:"س", f: "s"}], + }, + participle: { + past: { + short: { + p: "وړی", + f: "óRey", + }, + long: { + p: "وړلی", + f: "oRúley", + }, + }, + present: { + p: "وړونکی", + f: "oRóonkey", + }, + }, + }, + }, + { + entry: {"i":13801,"ts":1527816865,"p":"وړل","f":"wRul, oRúl, wuRúl","e":"to take, carry, bear, move (inanimate objects); to win, earn (subjunctive یوسي - yósee or ویسي - wéesee, simple past یو یې وړلو - yo ye wRulo)","separationAtP":2,"separationAtF":2,"c":"v. trans. irreg.","ssp":"یوس","ssf":"yos","prp":"یوړل","prf":"yóRul","noOo":true,"diacExcept":true}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + perfective: { + short: { p: "یوړ", f: "yóR" }, + long: { p: "یوړل", f: "yóRul" }, + }, + imperfective: { + short: { p: "وړ", f: "wR" }, + long: { p: "وړل", f: "wRúl" }, + }, + perfectiveSplit: { + short: [{p: "یو", f: "yó"}, {p: "ړ", f: "R" }], + long: [{p: "یو", f: "yó"}, {p: "ړل", f: "Rul" }], + }, + }, + stem: { + perfective: { + p: "یوس", + f: "yos", + }, + imperfective: { + p: "وړ", + f: "wR", + }, + perfectiveSplit: [{p: "یو", f: "yó"}, {p:"س", f: "s"}], + }, + participle: { + past: { + short: { + p: "وړی", + f: "wúRey", + }, + long: { + p: "وړلی", + f: "wRúley", + }, + }, + present: { + p: "وړونکی", + f: "wuRóonkey", + }, + }, + }, + }, + { + entry: {"i":6503,"ts":1527815214,"p":"راوړل","f":"raawRúl","e":"to bring, deliver (inanimate objects)","separationAtP":2,"separationAtF":3,"c":"v. trans. irreg.","noOo":true}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + perfective: { + short: { p: "راوړ", f: "ráawR" }, + long: { p: "راوړل", f: "ráawRul" }, + }, + imperfective: { + short: { p: "راوړ", f: "raawR" }, + long: { p: "راوړل", f: "raawRúl" }, + }, + perfectiveSplit: { + short: [{p: "را", f: "ráa"}, {p: "وړ", f: "wR" }], + long: [{p: "را", f: "ráa"}, {p: "وړل", f: "wRul" }], + }, + }, + stem: { + perfective: { + p: "راوړ", + f: "ráawR", + }, + imperfective: { + p: "راوړ", + f: "raawR", + }, + perfectiveSplit: [{p: "را", f: "ráa"}, {p:"وړ", f: "wR"}], + }, + participle: { + past: { + short: { + p: "راوړی", + f: "raawúRey", + }, + long: { + p: "راوړلی", + f: "raawRúley", + }, + }, + present: { + p: "راوړونکی", + f: "raawRóonkey", + }, + }, + }, + }, + { + entry: {"i":5514,"ts":1527812790,"p":"خوړل","f":"khoRul","e":"to eat, to bite","c":"v. trans.","psp":"خور","psf":"khor","tppp":"خوړ","tppf":"khoR"}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + perfective: { + short: { p: "وخوړ", f: "óokhoR" }, + long: { p: "وخوړل", f: "óokhoRul" }, + }, + imperfective: { + short: { p: "خوړ", f: "khoR" }, + long: { p: "خوړل", f: "khoRúl" }, + }, + perfectiveSplit: { + short: [{ p: "و", f: "óo" },{ p: "خوړ", f: "khoR" }], + long: [{ p: "و", f: "óo" },{ p: "خوړل", f: "khoRul" }], + }, + }, + stem: { + perfective: { + p: "وخور", + f: "óokhor", + }, + perfectiveSplit: [{ p: "و", f: "óo"}, {p: "خور", f: "khor"}], + imperfective: { + p: "خور", + f: "khor", + }, + }, + participle: { + past: { + p: "خوړلی", + f: "khoRúley", + }, + present: { + p: "خوړونکی", + f: "khoRóonkey", + }, + }, + idiosyncraticThirdMascSing: { + imperfective: { p: "خوړ", f: "khoR" }, + perfective: { p: "وخوړ", f: "óokhoR" }, + }, + }, + }, + { + entry: {"i":1675,"ts":1527822381,"p":"بنګېدل","f":"bungedúl","e":"to buzz, hum, jingle; to snuffle, to speak nasally, or with a twang","c":"v. intrans."}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + short: { p: "بنګېد", f: "bunged" }, + long: { p: "بنګېدل", f: "bungedúl" }, + }, + perfective: { + short: { p: "وبنګېد", f: "óobunged" }, + long: { p: "وبنګېدل", f: "óobungedul" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" },{ p: "بنګېدل", f: "bungedul" }], + short: [{ p: "و", f: "óo" },{ p: "بنګېد", f: "bunged" }], + }, + }, + stem: { + imperfective: { + p: "بنګېږ", f: "bungéG", + }, + perfective: { + p: "وبنګېږ", f: "óobungeG", + }, + perfectiveSplit: [{p: "و", f: "óo"},{ p:"بنګېږ", f: "bungeG"}], + }, + participle: { + past: { + p: "بنګېدلی", + f: "bungedúley", + }, + present: { + p: "بنګېدونکی", + f: "bungedóonkey", + }, + }, + }, + }, + { + entry: {"i":10144,"ts":1527812759,"p":"کېناستل","f":"kenaastul","e":"to sit","separationAtP":2,"separationAtF":2,"c":"v. intrans. irreg.","psp":"کېن","psf":"ken","noOo":true}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "کېناستل", f: "kenaastúl" }, + short: { p: "کېناست", f: "kenaast" }, + }, + perfective: { + long: { p: "کېناستل", f: "kénaastul" }, + short: { p: "کېناست", f: "kénaast" }, + }, + perfectiveSplit: { + long: [{ p: "کې", f: "ké" },{ p: "ناستل", f: "naastul" }], + short: [{ p: "کې", f: "ké" },{ p: "ناست", f: "naast" }], + }, + }, + stem: { + imperfective: { + p: "کېن", f: "ken", + }, + perfective: { + p: "کېن", f: "kén", + }, + perfectiveSplit: [{p: "کې", f: "ké"}, {p: "ن", f: "n"}], + }, + participle: { + past: { + p: "کېناستلی", + f: "kenaastúley", + }, + present: { + p: "کېناستونکی", + f: "kenaastóonkey", + }, + }, + }, + }, + { + entry: {"i":445,"ts":1527811605,"p":"ازمویل","f":"azmoyul","e":"to attempt, try; to experiment, test","c":"v. trans.","sepOo":true}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: true, + root: { + imperfective: { + long: { p: "ازمویل", f: "azmóyul" }, + short: { p: "ازموی", f: "azmoy" }, + }, + perfective: { + long: { p: "و ازمویل", f: "óo`azmoyul" }, + short: { p: "و ازموی", f: "óo`azmoy" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "ازمویل", f: "azmoyul" }], + short: [{ p: "و", f: "óo" }, { p: "ازموی", f: "azmoy" }], + } + }, + stem: { + imperfective: { p: "ازموی", f: "azmoy" }, + perfective: { p: "و ازموی", f: "óo`azmoy" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "ازموی", f: "azmoy" }], + }, + participle: { + past: { p: "ازمویلی", f: "azmóyuley" }, + present: { p: "ازمویونکی", f: "azmoyóonkey" }, + }, + }, + }, + { + entry: {"i":8896,"ts":1527812627,"p":"غوښتل","f":"ghwuxtul, ghoxtul","e":"to want, to request","c":"v. trans.","psp":"غواړ","psf":"ghwaaR"}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "غوښتل", f: "ghwuxtúl" }, + short: { p: "غوښت", f: "ghwuxt" }, + }, + perfective: { + long: { p: "وغوښتل", f: "óoghwuxtul" }, + short: { p: "وغوښت", f: "óoghwuxt" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "غوښتل", f: "ghwuxtul" }], + short: [{ p: "و", f: "óo" }, { p: "غوښت", f: "ghwuxt" }], + }, + }, + stem: { + imperfective: { p: "غواړ", f: "ghwaaR" }, + perfective: { p: "وغواړ", f: "óoghwaaR" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "غواړ", f: "ghwaaR" }], + }, + participle: { + past: { + long: { p: "غوښتلی", f: "ghwuxtúley" }, + short: { p: "غوښتی", f: "ghwúxtey" }, + }, + present: { + p: "غوښتونکی", f: "ghwuxtóonkey", + }, + }, + }, + }, + { + entry: {"i":300,"ts":1527817298,"p":"اخیستل","f":"akheestul","e":"to take, buy, purchase, receive; to shave, cut with scissors","c":"v. trans.","psp":"اخل","psf":"akhl"}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "اخیستل", f: "akheestúl" }, + short: { p: "اخیست", f: "akheest" }, + }, + perfective: { + long: { p: "واخیستل", f: "wáakheestul" }, + short: { p: "واخیست", f: "wáakheest" }, + }, + perfectiveSplit: { + long: [{ p: "وا", f: "wáa" }, { p: "خیستل", f: "kheestul" }], + short: [{ p: "وا", f: "wáa" }, { p: "خیست", f: "kheest" }], + }, + }, + stem: { + imperfective: { p: "اخل", f: "akhl" }, + perfective: { p: "واخل", f: "wáakhl" }, + perfectiveSplit: [{ p: "وا", f: "wáa" }, {p: "خل", f: "khl"}], + }, + participle: { + past: { + long: { p: "اخیستلی", f: "akheestúley" }, + short: { p: "اخیستی", f: "akhéestey" }, + }, + present: { + p: "اخیستونکی", f: "akheestóonkey", + }, + }, + }, + }, + { + entry: {"i":300,"ts":1527817299,"p":"آخیستل","f":"aakheestul","e":"to take, buy, purchase, receive; to shave, cut with scissors","c":"v. trans.","psp":"اخل","psf":"akhl"}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "آخیستل", f: "aakheestúl" }, + short: { p: "آخیست", f: "aakheest" }, + }, + perfective: { + long: { p: "واخیستل", f: "wáakheestul" }, + short: { p: "واخیست", f: "wáakheest" }, + }, + perfectiveSplit: { + long: [{ p: "وا", f: "wáa" }, { p: "خیستل", f: "kheestul" }], + short: [{ p: "وا", f: "wáa" }, { p: "خیست", f: "kheest" }], + }, + }, + stem: { + imperfective: { p: "اخل", f: "akhl" }, + perfective: { p: "واخل", f: "wáakhl" }, + perfectiveSplit: [{ p: "وا", f: "wáa" }, { p: "خل", f: "khl" }], + }, + participle: { + past: { + long: { p: "آخیستلی", f: "aakheestúley" }, + short: { p: "آخیستی", f: "aakhéestey" }, + }, + present: { + p: "آخیستونکی", f: "aakheestóonkey", + }, + }, + }, + }, + // TODO: IS THE SPLIT HERE CORRECT?? + { + entry: {"i":1105,"ts":1527816146,"p":"ایستل","f":"eestul","e":"to throw out, discard, chuck, toss; to extract, to take out","c":"v. trans.","psp":"باس","psf":"baas"}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "ایستل", f: "eestúl" }, + short: { p: "ایست", f: "eest" }, + }, + perfective: { + long: { p: "ویستل", f: "wéestul" }, + short: { p: "ویست", f: "wéest" }, + }, + perfectiveSplit: { + long: [{ p: "وی", f: "wée" }, { p: "ستل", f: "stul" }], + short: [{ p: "وی", f: "wée" }, { p: "ست", f: "st" }], + }, + }, + stem: { + imperfective: { p: "باس", f: "baas" }, + perfective: { p: "وباس", f: "óobaas" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "باس", f: "baas" }], + }, + participle: { + past: { + long: { p: "ایستلی", f: "eestúley" }, + short: { p: "ایستی", f: "éestey" }, + }, + present: { + p: "ایستونکی", f: "eestóonkey", + }, + }, + }, + }, + { + entry: {"i":1106,"ts":1596485537794,"p":"اېستل","f":"estul","e":"to throw out, discard, chuck, toss; to extract, to take out","c":"v. trans.","psp":"باس","psf":"baas"}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "اېستل", f: "estúl" }, + short: { p: "اېست", f: "est" }, + }, + perfective: { + long: { p: "وېستل", f: "wéstul" }, + short: { p: "وېست", f: "wést" }, + }, + perfectiveSplit: { + long: [{ p: "وې", f: "wé" }, { p: "ستل", f: "stul" }], + short: [{ p: "وې", f: "wé" }, { p: "ست", f: "st" }], + }, + }, + stem: { + imperfective: { p: "باس", f: "baas" }, + perfective: { p: "وباس", f: "óobaas" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "باس", f: "baas" }], + }, + participle: { + past: { + long: { p: "اېستلی", f: "estúley" }, + short: { p: "اېستی", f: "éstey" }, + }, + present: { p: "اېستونکی", f: "estóonkey" }, + }, + }, + }, + { + entry: {"i":2766,"ts":1527815165,"p":"پېژندل","f":"pejzandul","e":"to recognize, know, meet","c":"v. trans.","psp":"پېژن","psf":"pejzan","tppp":"پېژاند","tppf":"pejzaand"}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "پېژندل", f: "pejzandúl" }, + short: { p: "پېژند", f: "pejzand" }, + }, + perfective: { + long: { p: "وپېژندل", f: "óopejzandul" }, + short: { p: "وپېژند", f: "óopejzand" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "پېژندل", f: "pejzandul" }], + short: [{ p: "و", f: "óo" }, { p: "پېژند", f: "pejzand" }], + }, + }, + stem: { + imperfective: { p: "پېژن", f: "pejzan" }, + perfective: { p: "وپېژن", f: "óopejzan" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "پېژن", f: "pejzan" }], + }, + participle: { + past: { p: "پېژندلی", f: "pejzandúley" }, + present: { p: "پېژندونکی", f: "pejzandóonkey" }, + }, + idiosyncraticThirdMascSing: { + imperfective: { p: "پېژاند", f: "pejzaand" }, + perfective: { p: "وپېژاند", f: "óopejzaand" }, + }, + }, + }, + { + entry: {"i":5413,"ts":1527812767,"p":"خندل","f":"khandul","e":"to laugh","c":"v. gramm. trans.","psp":"خاند","psf":"khaand"}, + result: { + transitivity: "grammatically transitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "خندل", f: "khandúl" }, + short: { p: "خند", f: "khand" }, + }, + perfective: { + long: { p: "وخندل", f: "óokhandul" }, + short: { p: "وخند", f: "óokhand" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "خندل", f: "khandul" }], + short: [{ p: "و", f: "óo" }, { p: "خند", f: "khand" }], + }, + }, + stem: { + imperfective: { p: "خاند", f: "khaand" }, + perfective: { p: "وخاند", f: "óokhaand" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "خاند", f: "khaand" }], + }, + participle: { + past: { p: "خندلی", f: "khandúley" }, + present: { p: "خندونکی", f: "khandóonkey" }, + }, + }, + }, + // stative compounds + { + entry: {"i":5367,"ts":1577898915919,"p":"خفه کول","f":"khufa kawul","e":"to make sad, to grieve, to annoy; to choke, to make suffocate","l":1527812798,"c":"v. stat. comp. trans."}, + complement: {"i":5366,"ts":1527812798,"p":"خفه","f":"khufa","e":"sad, upset, angry; choked, suffocated","c":"adj."}, + result: { + transitivity: "transitive", + type: "stative compound", + yulEnding: false, + root: { + imperfective: { + long: { p: "خفه کول", f: "khufa kawúl" }, + short: { p: "خفه کو", f: "khufa kaw" }, + }, + perfective: { + long: { p: "خفه کړل", f: "khufa kRul" }, + short: { p: "خفه کړ", f: "khufa kR" }, + mini: { p: "خفه ک", f: "khufa k" }, + }, + perfectiveSplit: { + long: [{ p: "خفه ", f: "khufa " }, { p: "کړل", f: "kRul" }], + short: [{ p: "خفه ", f: "khufa " }, { p: "کړ", f: "kR" }], + mini: [{ p: "خفه ", f: "khufa " }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "خفه کو", f: "khufa kaw" }, + perfective: { + long: { p: "خفه کړ", f: "khufa kR" }, + short: { p: "خفه ک", f: "khufa k" }, + }, + perfectiveSplit: { + long: [{ p: "خفه ", f: "khufa " }, { p: "کړ", f: "kR" }], + short: [{ p: "خفه ", f: "khufa " }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "خفه کړی", f: "khufa kúRey" }, + present: { p: "خفه کوونکی", f: "khufa kawóonkey" }, + }, + complement: { + masc: [ + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + ], + fem: [ + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + ], + }, + }, + }, + { + entry: {"i":5368,"ts":1577898920635,"p":"خفه کېدل","f":"khufa kedul","e":"to be sad, grieved, annoyed, upset; to be choked, to suffocate","l":1527812798,"c":"v. stat. comp. intrans."}, + complement: {"i":5366,"ts":1527812798,"p":"خفه","f":"khufa","e":"sad, upset, angry; choked, suffocated","c":"adj."}, + result: { + transitivity: "intransitive", + type: "stative compound", + yulEnding: false, + root: { + imperfective: { + long: { p: "خفه کېدل", f: "khufa kedúl" }, + short: { p: "خفه کېد", f: "khufa ked" }, + }, + perfective: { + long: { p: "خفه شول", f: "khufa shwul" }, + short: { p: "خفه شو", f: "khufa shw" }, + }, + perfectiveSplit: { + long: [{ p: "خفه ", f: "khufa " }, { p: "شول", f: "shwul" }], + short: [{ p: "خفه ", f: "khufa " }, { p: "شو", f: "shw" }], + }, + }, + stem: { + imperfective: { p: "خفه کېږ", f: "khufa kéG" }, + perfective: { p: "خفه ش", f: "khufa sh" }, + perfectiveSplit: [{ p: "خفه ", f: "khufa " }, { p: "ش", f: "sh" }], + }, + participle: { + past: { p: "خفه شوی", f: "khufa shúwey" }, + present: { p: "خفه کېدونکی", f: "khufa kedóonkey" }, + }, + complement: { + masc: [ + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + ], + fem: [ + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + [{ p: "خفه", f: "khufa" }], + ], + }, + }, + }, + { + entry: {"i":2182,"ts":1571859113828,"p":"پخول","f":"pakhawul","e":"to cook, prepare, to cause to ripen, mature","l":1574867531681,"c":"v. stat. comp. trans."}, + complement: {"i":2610,"ts":1574867531681,"p":"پوخ","f":"pokh","e":"mature, ripe, ready, cooked, able, skillful, experienced, tried, tested, true","c":"adj. irreg.","infap":"پاخه","infaf":"paakhu","infbp":"پخ","infbf":"pakh"}, + result: { + transitivity: "transitive", + type: "stative compound", + yulEnding: false, + root: { + imperfective: { + long: { p: "پخول", f: "pakhawúl" }, + short: { p: "پخو", f: "pakhaw" }, + }, + perfective: { + mascSing: { + long: { p: "پوخ کړل", f: "pokh kRul" }, + short: { p: "پوخ کړ", f: "pokh kR" }, + mini: { p: "پوخ ک", f: "pokh k" }, + }, + mascPlur: { + long: { p: "پاخه کړل", f: "paakhu kRul" }, + short: { p: "پاخه کړ", f: "paakhu kR" }, + mini: { p: "پاخه ک", f: "paakhu k" }, + }, + femSing: { + long: { p: "پخه کړل", f: "pakha kRul" }, + short: { p: "پخه کړ", f: "pakha kR" }, + mini: { p: "پخه ک", f: "pakha k" }, + }, + femPlur: { + long: { p: "پخې کړل", f: "pakhe kRul" }, + short: { p: "پخې کړ", f: "pakhe kR" }, + mini: { p: "پخې ک", f: "pakhe k" }, + }, + }, + perfectiveSplit: { + mascSing: { + long: [{ p: "پوخ ", f: "pokh " }, { p: "کړل", f: "kRul" }], + short: [{ p: "پوخ ", f: "pokh " }, { p: "کړ", f: "kR" }], + mini: [{ p: "پوخ ", f: "pokh " }, { p: "ک", f: "k" }], + }, + mascPlur: { + long: [{ p: "پاخه ", f: "paakhu " }, { p: "کړل", f: "kRul" }], + short: [{ p: "پاخه ", f: "paakhu " }, { p: "کړ", f: "kR" }], + mini: [{ p: "پاخه ", f: "paakhu " }, { p: "ک", f: "k" }], + }, + femSing: { + long: [{ p: "پخه ", f: "pakha " }, { p: "کړل", f: "kRul" }], + short: [{ p: "پخه ", f: "pakha " }, { p: "کړ", f: "kR" }], + mini: [{ p: "پخه ", f: "pakha " }, { p: "ک", f: "k" }], + }, + femPlur: { + long: [{ p: "پخې ", f: "pakhe " }, { p: "کړل", f: "kRul" }], + short: [{ p: "پخې ", f: "pakhe " }, { p: "کړ", f: "kR" }], + mini: [{ p: "پخې ", f: "pakhe " }, { p: "ک", f: "k" }], + }, + }, + }, + stem: { + imperfective: { p: "پخو", f: "pakhaw" }, + perfective: { + mascSing: { + long: { p: "پوخ کړ", f: "pokh kR" }, + short: { p: "پوخ ک", f: "pokh k" }, + }, + mascPlur: { + long: { p: "پاخه کړ", f: "paakhu kR" }, + short: { p: "پاخه ک", f: "paakhu k" }, + }, + femSing: { + long: { p: "پخه کړ", f: "pakha kR" }, + short: { p: "پخه ک", f: "pakha k" }, + }, + femPlur: { + long: { p: "پخې کړ", f: "pakhe kR" }, + short: { p: "پخې ک", f: "pakhe k" }, + }, + }, + perfectiveSplit: { + mascSing: { + long: [{ p: "پوخ ", f: "pokh " }, { p: "کړ", f: "kR" }], + short: [{ p: "پوخ ", f: "pokh " }, { p: "ک", f: "k" }], + }, + mascPlur: { + long: [{ p: "پاخه ", f: "paakhu " }, { p: "کړ", f: "kR" }], + short: [{ p: "پاخه ", f: "paakhu " }, { p: "ک", f: "k" }], + }, + femSing: { + long: [{ p: "پخه ", f: "pakha " }, { p: "کړ", f: "kR" }], + short: [{ p: "پخه ", f: "pakha " }, { p: "ک", f: "k" }], + }, + femPlur: { + long: [{ p: "پخې ", f: "pakhe " }, { p: "کړ", f: "kR" }], + short: [{ p: "پخې ", f: "pakhe " }, { p: "ک", f: "k" }], + }, + }, + }, + participle: { + present: { p: "پخوونکی", f: "pakhawóonkey" }, + past: { + mascSing: { p: "پوخ کړی", f: "pokh kúRey" }, + mascPlur: { p: "پاخه کړي", f: "paakhu kúRee" }, + femSing: { p: "پخه کړې", f: "pakha kúRe" }, + femPlur: { p: "پخې کړې", f: "pakhe kúRe" }, + }, + }, + complement: { + masc: [ + [{ p: "پوخ", f: "pokh" }], + [{ p: "پاخه", f: "paakhu" }], + [{ p: "پخو", f: "pakho" }], + ], + fem: [ + [{ p: "پخه", f: "pakha" }], + [{ p: "پخې", f: "pakhe" }], + [{ p: "پخو", f: "pakho" }], + ], + }, + }, + }, + { + entry: {"i":7205,"ts":1591033069786,"p":"ستړی کېدل","f":"stuRey kedul","e":"to get tired, fatigued","l":1527815306,"c":"v. stat. comp. intrans."}, + complement: {"i":7204,"ts":1527815306,"p":"ستړی","f":"stúRey","e":"tired","c":"adj."}, + result: { + transitivity: "intransitive", + type: "stative compound", + yulEnding: false, + root: { + imperfective: { + mascSing: { + long: { p: "ستړی کېدل", f: "stúRey kedúl" }, + short: { p: "ستړی کېد", f: "stúRey ked" }, + }, + mascPlur: { + long: { p: "ستړي کېدل", f: "stúRee kedúl" }, + short: { p: "ستړي کېد", f: "stúRee ked" }, + }, + femSing: { + long: { p: "ستړې کېدل", f: "stúRe kedúl" }, + short: { p: "ستړې کېد", f: "stúRe ked" }, + }, + femPlur: { + long: { p: "ستړې کېدل", f: "stúRe kedúl" }, + short: { p: "ستړې کېد", f: "stúRe ked" }, + }, + }, + perfective: { + mascSing: { + long: { p: "ستړی شول", f: "stúRey shwul" }, + short: { p: "ستړی شو", f: "stúRey shw" }, + }, + mascPlur: { + long: { p: "ستړي شول", f: "stúRee shwul" }, + short: { p: "ستړي شو", f: "stúRee shw" }, + }, + femSing: { + long: { p: "ستړې شول", f: "stúRe shwul" }, + short: { p: "ستړې شو", f: "stúRe shw" }, + }, + femPlur: { + long: { p: "ستړې شول", f: "stúRe shwul" }, + short: { p: "ستړې شو", f: "stúRe shw" }, + }, + }, + perfectiveSplit: { + mascSing: { + long: [{ p: "ستړی ", f: "stúRey " }, { p: "شول", f: "shwul" }], + short: [{ p: "ستړی ", f: "stúRey " }, { p: "شو", f: "shw" }], + }, + mascPlur: { + long: [{ p: "ستړي ", f: "stúRee " }, { p: "شول", f: "shwul" }], + short: [{ p: "ستړي ", f: "stúRee " }, { p: "شو", f: "shw" }], + }, + femSing: { + long: [{ p: "ستړې ", f: "stúRe " }, { p: "شول", f: "shwul" }], + short: [{ p: "ستړې ", f: "stúRe " }, { p: "شو", f: "shw" }], + }, + femPlur: { + long: [{ p: "ستړې ", f: "stúRe " }, { p: "شول", f: "shwul" }], + short: [{ p: "ستړې ", f: "stúRe " }, { p: "شو", f: "shw" }], + }, + }, + }, + stem: { + imperfective: { + mascSing: { p: "ستړی کېږ", f: "stúRey kéG" }, + mascPlur: { p: "ستړي کېږ", f: "stúRee kéG" }, + femSing: { p: "ستړې کېږ", f: "stúRe kéG" }, + femPlur: { p: "ستړې کېږ", f: "stúRe kéG" }, + }, + perfective: { + mascSing: { p: "ستړی ش", f: "stúRey sh" }, + mascPlur: { p: "ستړي ش", f: "stúRee sh" }, + femSing: { p: "ستړې ش", f: "stúRe sh" }, + femPlur: { p: "ستړې ش", f: "stúRe sh" }, + }, + perfectiveSplit: { + mascSing: [{ p: "ستړی ", f: "stúRey " }, { p: "ش", f: "sh" }], + mascPlur: [{ p: "ستړي ", f: "stúRee " }, { p: "ش", f: "sh" }], + femSing: [{ p: "ستړې ", f: "stúRe " }, { p: "ش", f: "sh" }], + femPlur: [{ p: "ستړې ", f: "stúRe " }, { p: "ش", f: "sh" }], + }, + }, + participle: { + present: { + mascSing: { p: "ستړی کېدونکی", f: "stúRey kedóonkey" }, + mascPlur: { p: "ستړي کېدونکي", f: "stúRee kedóonkee" }, + femSing: { p: "ستړې کېدونکې", f: "stúRe kedóonke" }, + femPlur: { p: "ستړې کېدونکې", f: "stúRe kedóonke" }, + }, + past: { + mascSing: { p: "ستړی شوی", f: "stúRey shúwey" }, + mascPlur: { p: "ستړي شوي", f: "stúRee shúwee" }, + femSing: { p: "ستړې شوې", f: "stúRe shúwe" }, + femPlur: { p: "ستړې شوې", f: "stúRe shúwe" }, + }, + }, + complement: { + masc: [ + [{ p: "ستړی", f: "stúRey" }], + [{ p: "ستړي", f: "stúRee" }], + [{ p: "ستړیو", f: "stúRiyo" }, { p: "ستړو", f: "stúRo" }], + ], + fem: [ + [{ p: "ستړې", f: "stúRe" }], + [{ p: "ستړې", f: "stúRe" }], + [{ p: "ستړو", f: "stúRo" }], + ], + }, + }, + }, + { + entry: {"i":1895,"ts":1527812277,"p":"بیانول","f":"bayaanawul","e":"to describe, tell, explain, narrate","l":1527814259,"c":"v. stat. comp. trans."}, + complement: {"i":1893,"ts":1527814259,"p":"بیان","f":"bayaan","e":"description, statement, speaking, narration, sermon","c":"n. m.","app":"بیانات","apf":"bayaanaat"}, + result: { + transitivity: "transitive", + type: "stative compound", + yulEnding: false, + root: { + imperfective: { + long: { p: "بیانول", f: "bayaanawúl" }, + short: { p: "بیانو", f: "bayaanaw" }, + }, + perfective: { + long: { p: "بیان کړل", f: "bayaan kRul" }, + short: { p: "بیان کړ", f: "bayaan kR" }, + mini: { p: "بیان ک", f: "bayaan k" }, + }, + perfectiveSplit: { + long: [{ p: "بیان ", f: "bayaan " }, { p: "کړل", f: "kRul" }], + short: [{ p: "بیان ", f: "bayaan " }, { p: "کړ", f: "kR" }], + mini: [{ p: "بیان ", f: "bayaan " }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "بیانو", f: "bayaanaw" }, + perfective: { + long: { p: "بیان کړ", f: "bayaan kR" }, + short: { p: "بیان ک", f: "bayaan k" }, + }, + perfectiveSplit: { + long: [{ p: "بیان ", f: "bayaan " }, { p: "کړ", f: "kR" }], + short: [{ p: "بیان ", f: "bayaan " }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "بیان کړی", f: "bayaan kúRey" }, + present: { p: "بیانوونکی", f: "bayaanawóonkey" }, + }, + complement: { + masc: [ + [{ p: "بیان", f: "bayaan" }], + [{ p: "بیان", f: "bayaan" }], + [{ p: "بیان", f: "bayaan" }], + ], + fem: [ + [{ p: "بیان", f: "bayaan" }], + [{ p: "بیان", f: "bayaan" }], + [{ p: "بیان", f: "bayaan" }], + ], + }, + }, + }, + { + entry: {"i":1068,"ts":1527815139,"p":"اوسېدل","f":"osedul","e":"to live, reside, stay, be","c":"v. intrans.","shortIntrans":true,"diacExcept":true}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { + long: { p: "واوسېږ", f: "óo`oseG" }, + short: { p: "واوس", f: "óo`os" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "اوسېږ", f: "oseG" }], + short: [{ p: "و", f: "óo" }, { p: "اوس", f: "os" }], + }, + imperfective: { + long: { p: "اوسېږ", f: "oséG" }, + short: { p: "اوس", f: "os" }, + }, + }, + root: { + perfective: { + long: { p: "واوسېدل", f: "óo`osedul" }, + short: { p: "واوسېد", f: "óo`osed" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "اوسېدل", f: "osedul" }], + short: [{ p: "و", f: "óo" }, { p: "اوسېد", f: "osed" }], + }, + imperfective: { + long: { p: "اوسېدل", f: "osedúl" }, + short: { p: "اوسېد", f: "osed" }, + }, + }, + participle: { + past: { + p: "اوسېدلی", + f: "osedúley", + }, + present: { + p: "اوسېدونکی", + f: "osedóonkey", + }, + }, + }, + }, + { + entry: {"i":2058,"ts":1527814038,"p":"پاڅېدل","f":"paatsedul","e":"to get up, rise, wake up","c":"v. intrans.","separationAtP":2,"separationAtF":3,"shortIntrans":true,"noOo":true}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { + long: { p: "پاڅېږ", f: "páatseG" }, + short: { p: "پاڅ", f: "páats" }, + }, + imperfective: { + long: { p: "پاڅېږ", f: "paatséG" }, + short: { p: "پاڅ", f: "paats" }, + }, + perfectiveSplit: { + long: [{ p: "پا", f: "páa" }, { p: "څېږ", f: "tseG" }], + short: [{ p: "پا", f: "páa" }, { p: "څ", f: "ts" }], + }, + }, + root: { + perfective: { + long: { p: "پاڅېدل", f: "páatsedul" }, + short: { p: "پاڅېد", f: "páatsed" }, + }, + imperfective: { + long: { p: "پاڅېدل", f: "paatsedúl" }, + short: { p: "پاڅېد", f: "paatsed" }, + }, + perfectiveSplit: { + long: [{ p: "پا", f: "páa" }, { p: "څېدل", f: "tsedul" }], + short: [{ p: "پا", f: "páa" }, { p: "څېد", f: "tsed" }], + }, + }, + participle: { + past: { p: "پاڅېدلی", f: "paatsedúley" }, + present: { + long: { p: "پاڅېدونکی", f: "paatsedóonkey" }, + short: { p: "پاڅونکی", f: "paatsóonkey" }, + }, + }, + }, + }, + // auxilary kawul/kedul verbs + { + entry: {"i":10246,"ts":1527812752,"p":"کول","f":"kawul","e":"to do (an action or activity)","c":"v. trans. irreg. dyn. aux.","ssp":"وکړ","ssf":"óokR","prp":"وکړل","prf":"óokRul","pprtp":"کړی","pprtf":"kúRey","diacExcept":true}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { + long: { p: "وکړ", f: "óokR" }, + short: { p: "وک", f: "óok" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "کړ", f: "kR" }], + short: [{ p: "و", f: "óo" }, { p: "ک", f: "k" }], + }, + imperfective: { p: "کو", f: "kaw" }, + }, + root: { + perfective: { + long: { p: "وکړل", f: "óokRul" }, + short: { p: "وکړ", f: "óokR" }, + mini: { p: "وک", f: "óok" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "کړل", f: "kRul" }], + short: [{ p: "و", f: "óo" }, { p: "کړ", f: "kR" }], + mini: [{ p: "و", f: "óo" }, { p: "ک", f: "k" }], + }, + imperfective: { + long: { p: "کول", f: "kawúl" }, + short: { p: "کو", f: "kaw" }, + }, + }, + participle: { + past: { + p: "کړی", + f: "kúRey", + }, + present: { + p: "کوونکی", + f: "kawóonkey", + }, + }, + }, + }, + { + entry: {"i":10059,"ts":1579015359582,"p":"کول","f":"kawul","e":"to make ____ ____ (as in \"He's making me angry.\")","c":"v. trans. irreg. stat. aux.","ssp":"کړ","ssf":"kR","prp":"کړل","prf":"kRul","pprtp":"کړی","pprtf":"kúRey","noOo":true}, + result: { + transitivity: "transitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { + long: { p: "کړ", f: "kR" }, + short: { p: "ک", f: "k" }, + }, + imperfective: { p: "کو", f: "kaw" }, + }, + root: { + perfective: { + long: { p: "کړل", f: "kRul" }, + short: { p: "کړ", f: "kR" }, + mini: { p: "ک", f: "k" }, + }, + imperfective: { + long: { p: "کول", f: "kawúl" }, + short: { p: "کو", f: "kaw" }, + }, + }, + participle: { + past: { + p: "کړی", + f: "kúRey", + }, + present: { + p: "کوونکی", + f: "kawóonkey", + }, + }, + }, + }, + { + entry: {"i":10124,"ts":1581086654898,"p":"کېدل","f":"kedul","e":"to become _____","c":"v. intrans. irreg. aux. stat.","ssp":"ش","ssf":"sh","prp":"شول","prf":"shwul","pprtp":"شوی","pprtf":"shúwey","noOo":true}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + stem: { + perfective: { p: "ش", f: "sh" }, + imperfective: { p: "کېږ", f: "kéG" }, + }, + root: { + perfective: { + long: { p: "شول", f: "shwul" }, + short: { p: "شو", f: "shw" }, + }, + imperfective: { + long: { p: "کېدل", f: "kedúl" }, + short: { p: "کېد", f: "ked" }, + }, + }, + participle: { + past: { + p: "شوی", + f: "shúwey", + }, + present: { + p: "کېدونکی", + f: "kedóonkey", + }, + }, + }, + }, + { + entry: {"i":10124,"ts":1527812754,"p":"کېدل","f":"kedul","e":"to happen, occur","c":"v. intrans. irreg. aux. dyn.","ssp":"وش","ssf":"óosh","prp":"وشول","prf":"óoshwul","pprtp":"شوی","pprtf":"shúwey","diacExcept":true}, + result: { + transitivity: "intransitive", + type: "simple", + yulEnding: false, + root: { + imperfective: { + long: { p: "کېدل", f: "kedúl" }, + short: { p: "کېد", f: "ked" }, + }, + perfective: { + long: { p: "وشول", f: "óoshwul" }, + short: { p: "وشو", f: "óoshw" }, + }, + perfectiveSplit: { + long: [{ p: "و", f: "óo" }, { p: "شول", f: "shwul" }], + short: [{ p: "و", f: "óo" }, { p: "شو", f: "shw" }], + }, + }, + stem: { + imperfective: { p: "کېږ", f: "kéG" }, + perfective: { p: "وش", f: "óosh" }, + perfectiveSplit: [{ p: "و", f: "óo" }, { p: "ش", f: "sh" }], + }, + participle: { + past: { p: "شوی", f: "shúwey" }, + present: { p: "کېدونکی", f: "kedóonkey" }, + }, + }, + }, + // dynamic compound verbs + { + entry: {"i":9371,"ts":1527812732,"p":"کار کول","f":"kaar kawul","e":"to work","l":1527822084,"c":"v. dyn. comp. trans."}, + complement: {"i":9369,"ts":1527822084,"p":"کار","f":"kaar","e":"work, job, business, stuff to do","c":"n. m."}, + result: { + type: "dynamic compound", + transitivity: "transitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "کار کول", f: "kaar kawúl" }, + short: { p: "کار کو", f: "kaar kaw" }, + }, + perfective: { + long: { p: "کار وکړل", f: "kaar óokRul" }, + short: { p: "کار وکړ", f: "kaar óokR" }, + mini: { p: "کار وک", f: "kaar óok" }, + }, + perfectiveSplit: { + long: [{ p: "کار و", f: "kaar óo" }, { p: "کړل", f: "kRul" }], + short: [{ p: "کار و", f: "kaar óo" }, { p: "کړ", f: "kR" }], + mini: [{ p: "کار و", f: "kaar óo" }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "کار کو", f: "kaar kaw" }, + perfective: { + long: { p: "کار وکړ", f: "kaar óokR" }, + short: { p: "کار وک", f: "kaar óok" }, + }, + perfectiveSplit: { + long: [{ p: "کار و", f: "kaar óo" }, { p: "کړ", f: "kR" }], + short: [{ p: "کار و", f: "kaar óo" }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "کار کړی", f: "kaar kúRey" }, + present: { p: "کار کوونکی", f: "kaar kawóonkey" }, + }, + objComplement: { + entry: {"i":9369,"ts":1527822084,"p":"کار","f":"kaar","e":"work, job, business, stuff to do","c":"n. m."}, + person: 4, + }, + auxVerb: {"i":10058,"ts":1527812752,"p":"کول","f":"kawul","e":"to do (an action or activity)","c":"v. trans. irreg. dyn. aux.","ssp":"وکړ","ssf":"óokR","prp":"وکړل","prf":"óokRul","pprtp":"کړی","pprtf":"kúRey","diacExcept":true}, + intransitiveForm: { + type: "dynamic compound", + transitivity: "intransitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "کار کېدل", f: "kaar kedúl" }, + short: { p: "کار کېد", f: "kaar ked" }, + }, + perfective: { + long: { p: "کار وشول", f: "kaar óoshwul" }, + short: { p: "کار وشو", f: "kaar óoshw" }, + }, + perfectiveSplit: { + long: [{ p: "کار و", f: "kaar óo" }, { p: "شول", f: "shwul" }], + short: [{ p: "کار و", f: "kaar óo" }, { p: "شو", f: "shw" }], + }, + }, + stem: { + imperfective: { p: "کار کېږ", f: "kaar kéG" }, + perfective: { p: "کار وش", f: "kaar óosh" }, + perfectiveSplit: [{ p: "کار و", f: "kaar óo" }, { p: "ش", f: "sh" }] + }, + participle: { + past: { p: "کار شوی", f: "kaar shúwey" }, + present: { p: "کار کېدونکی", f: "kaar kedóonkey" }, + }, + objComplement: { + entry: {"i":9369,"ts":1527822084,"p":"کار","f":"kaar","e":"work, job, business, stuff to do","c":"n. m."}, + person: 4, + }, + auxVerb: {"i":10122,"ts":1527812754,"p":"کېدل","f":"kedul","e":"to happen, occur","c":"v. intrans. irreg. aux. dyn.","ssp":"وش","ssf":"óosh","prp":"وشول","prf":"óoshwul","pprtp":"شوی","pprtf":"shúwey","diacExcept":true}, + }, + }, + }, + { + entry: {"i":12101,"ts":1527812939,"p":"منډې وهل","f":"munDe wahul","e":"to run","l":1527815805,"c":"v. dyn. comp. trans. sing. or plur."}, + complement: {"i":12098,"ts":1527815805,"p":"منډه","f":"múnDa","e":"run, running","c":"n. f."}, + result: { + type: "dynamic compound", + transitivity: "transitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "منډې وهل", f: "munDe wahúl" }, + short: { p: "منډې وه", f: "munDe wah" }, + }, + perfective: { + long: { p: "منډې ووهل", f: "munDe óowahul" }, + short: { p: "منډې ووه", f: "munDe óowah" }, + }, + perfectiveSplit: { + long: [{ p: "منډې و", f: "munDe óo" }, { p: "وهل", f: "wahul" }], + short: [{ p: "منډې و", f: "munDe óo" }, { p: "وه", f: "wah" }], + }, + }, + stem: { + imperfective: { p: "منډې وه", f: "munDe wah" }, + perfective: { p: "منډې ووه", f: "munDe óowah" }, + perfectiveSplit: [{ p: "منډې و", f: "munDe óo" }, { p: "وه", f: "wah" }], + }, + participle: { + past: { p: "منډې وهلې", f: "munDe wahúle" }, + present: { p: "منډې وهونکی", f: "munDe wahóonkey" }, + }, + objComplement: { + entry: {"i":12098,"ts":1527815805,"p":"منډه","f":"múnDa","e":"run, running","c":"n. f."}, + plural: { p: "منډې", f: "munDe" }, + person: 11, + }, + auxVerb: { + ts: 1527815399, + p: "وهل", + f: "wahul", + e: "to hit", + c: "v. trans.", + i: 12183, + tppp: "واهه", + tppf: "waahu", + }, + singularForm: { + type: "dynamic compound", + transitivity: "transitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "منډه وهل", f: "múnDa wahúl" }, + short: { p: "منډه وه", f: "múnDa wah" }, + }, + perfective: { + long: { p: "منډه ووهل", f: "múnDa óowahul" }, + short: { p: "منډه ووه", f: "múnDa óowah" }, + }, + perfectiveSplit: { + long: [{ p: "منډه و", f: "múnDa óo" }, { p: "وهل", f: "wahul" }], + short: [{ p: "منډه و", f: "múnDa óo" }, { p: "وه", f: "wah" }], + }, + }, + stem: { + imperfective: { p: "منډه وه", f: "múnDa wah" }, + perfective: { p: "منډه ووه", f: "múnDa óowah" }, + perfectiveSplit: [{ p: "منډه و", f: "múnDa óo" }, { p: "وه", f: "wah" }], + }, + participle: { + past: { p: "منډه وهلې", f: "múnDa wahúle" }, + present: { p: "منډه وهونکی", f: "múnDa wahóonkey" }, + }, + objComplement: { + entry: {"i":12098,"ts":1527815805,"p":"منډه","f":"múnDa","e":"run, running","c":"n. f."}, + person: 5, + }, + auxVerb: { + ts: 1527815399, + p: "وهل", + f: "wahul", + e: "to hit", + c: "v. trans.", + i: 12183, + tppp: "واهه", + tppf: "waahu", + }, + }, + }, + }, + { + entry: {"i":10554,"ts":1579034883717,"p":"لاړې تېرول","f":"laaRe terawul","e":"to spit ?? (other fluids too??)","l":1527823566,"c":"v. dyn. comp. trans."}, + complement: {"i":10553,"ts":1527823567,"p":"لاړې","f":"laaRe","e":"spit, saliva, slobber, slime","c":"n. f. pl."}, + result: { + type: "dynamic compound", + transitivity: "transitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "لاړې تېرول", f: "laaRe terawúl" }, + short: { p: "لاړې تېرو", f: "laaRe teraw" }, + }, + perfective: { + long: { p: "لاړې تېرې کړل", f: "laaRe tere kRul" }, + short: { p: "لاړې تېرې کړ", f: "laaRe tere kR" }, + mini: { p: "لاړې تېرې ک", f: "laaRe tere k" }, + }, + perfectiveSplit: { + long: [{ p: "لاړې تېرې ", f: "laaRe tere " }, { p: "کړل", f: "kRul" }], + short: [{ p: "لاړې تېرې ", f: "laaRe tere " }, { p: "کړ", f: "kR" }], + mini: [{ p: "لاړې تېرې ", f: "laaRe tere " }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "لاړې تېرو", f: "laaRe teraw" }, + perfective: { + long: { p: "لاړې تېرې کړ", f: "laaRe tere kR" }, + short: { p: "لاړې تېرې ک", f: "laaRe tere k" }, + }, + perfectiveSplit: { + long: [{ p: "لاړې تېرې ", f: "laaRe tere " }, { p: "کړ", f: "kR" }], + short: [{ p: "لاړې تېرې ", f: "laaRe tere " }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "لاړې تېرې کړې", f: "laaRe tere kúRe" }, + present: { p: "لاړې تېروونکی", f: "laaRe terawóonkey" }, + }, + objComplement: { + entry: {"i":10553,"ts":1527823567,"p":"لاړې","f":"laaRe","e":"spit, saliva, slobber, slime","c":"n. f. pl."}, + person: 11, + }, + auxVerb: {"i":3459,"ts":1527812157,"p":"تېرول","f":"terawul","e":"to pass (time), to take across, to pass, endure (difficulties)","l":1527813139,"c":"v. stat. comp. trans."}, + auxVerbComplement: {"i":3774,"ts":1527813139,"p":"تېر","f":"ter","e":"last, past, previous, passed, gone over","c":"adj."}, + }, + }, + // stative or dynamic compound verb + { + entry: {"i":7910,"ts":1527819253,"p":"شروع کول","f":"shUróo' kawul","e":"to start, to begin","l":1527819252,"c":"v. dyn./stat. comp. trans."}, + complement: {"i":7909,"ts":1527819252,"p":"شروع","f":"shUróo'","e":"beginning, start, undertaking","c":"n. m."}, + result: { + type: "dynamic or stative compound", + transitivity: "transitive", + dynamic: { + type: "dynamic compound", + transitivity: "transitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "شروع کول", f: "shUróo' kawúl" }, + short: { p: "شروع کو", f: "shUróo' kaw" }, + }, + perfective: { + long: { p: "شروع وکړل", f: "shUróo' óokRul" }, + short: { p: "شروع وکړ", f: "shUróo' óokR" }, + mini: { p: "شروع وک", f: "shUróo' óok" }, + }, + perfectiveSplit: { + long: [{ p: "شروع و", f: "shUróo' óo" }, { p: "کړل", f: "kRul" }], + short: [{ p: "شروع و", f: "shUróo' óo" }, { p: "کړ", f: "kR" }], + mini: [{ p: "شروع و", f: "shUróo' óo" }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "شروع کو", f: "shUróo' kaw" }, + perfective: { + long: { p: "شروع وکړ", f: "shUróo' óokR" }, + short: { p: "شروع وک", f: "shUróo' óok" }, + }, + perfectiveSplit: { + long: [{ p: "شروع و", f: "shUróo' óo" }, { p: "کړ", f: "kR" }], + short: [{ p: "شروع و", f: "shUróo' óo" }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "شروع کړی", f: "shUróo' kúRey" }, + present: { p: "شروع کوونکی", f: "shUróo' kawóonkey" }, + }, + objComplement: { + entry: {"i":7909,"ts":1527819252,"p":"شروع","f":"shUróo'","e":"beginning, start, undertaking","c":"n. m."}, + person: 4, + }, + auxVerb: {"i":10058,"ts":1527812752,"p":"کول","f":"kawul","e":"to do (an action or activity)","c":"v. trans. irreg. dyn. aux.","ssp":"وکړ","ssf":"óokR","prp":"وکړل","prf":"óokRul","pprtp":"کړی","pprtf":"kúRey","diacExcept":true}, + intransitiveForm: { + type: "dynamic compound", + transitivity: "intransitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "شروع کېدل", f: "shUróo' kedúl" }, + short: { p: "شروع کېد", f: "shUróo' ked" }, + }, + perfective: { + long: { p: "شروع وشول", f: "shUróo' óoshwul" }, + short: { p: "شروع وشو", f: "shUróo' óoshw" }, + }, + perfectiveSplit: { + long: [{ p: "شروع و", f: "shUróo' óo" }, { p: "شول", f: "shwul" }], + short: [{ p: "شروع و", f: "shUróo' óo" }, { p: "شو", f: "shw" }], + }, + }, + stem: { + imperfective: { p: "شروع کېږ", f: "shUróo' kéG" }, + perfective: { p: "شروع وش", f: "shUróo' óosh" }, + perfectiveSplit: [{ p: "شروع و", f: "shUróo' óo" }, { p: "ش", f: "sh" }], + }, + participle: { + past: { p: "شروع شوی", f: "shUróo' shúwey" }, + present: { p: "شروع کېدونکی", f: "shUróo' kedóonkey" }, + }, + objComplement: { + entry: {"i":7909,"ts":1527819252,"p":"شروع","f":"shUróo'","e":"beginning, start, undertaking","c":"n. m."}, + person: 4, + }, + auxVerb: {"i":10122,"ts":1527812754,"p":"کېدل","f":"kedul","e":"to happen, occur","c":"v. intrans. irreg. aux. dyn.","ssp":"وش","ssf":"óosh","prp":"وشول","prf":"óoshwul","pprtp":"شوی","pprtf":"shúwey","diacExcept":true}, + }, + }, + stative: { + type: "stative compound", + transitivity: "transitive", + yulEnding: false, + root: { + imperfective: { + long: { p: "شروع کول", f: "shUróo' kawúl" }, + short: { p: "شروع کو", f: "shUróo' kaw" }, + }, + perfective: { + long: { p: "شروع کړل", f: "shUróo' kRul" }, + short: { p: "شروع کړ", f: "shUróo' kR" }, + mini: { p: "شروع ک", f: "shUróo' k" }, + }, + perfectiveSplit: { + long: [{ p: "شروع ", f: "shUróo' " }, { p: "کړل", f: "kRul" }], + short: [{ p: "شروع ", f: "shUróo' " }, { p: "کړ", f: "kR" }], + mini: [{ p: "شروع ", f: "shUróo' " }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "شروع کو", f: "shUróo' kaw" }, + perfective: { + long: { p: "شروع کړ", f: "shUróo' kR" }, + short: { p: "شروع ک", f: "shUróo' k" }, + }, + perfectiveSplit: { + long: [{ p: "شروع ", f: "shUróo' " }, { p: "کړ", f: "kR" }], + short: [{ p: "شروع ", f: "shUróo' " }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "شروع کړی", f: "shUróo' kúRey" }, + present: { p: "شروع کوونکی", f: "shUróo' kawóonkey" }, + }, + complement: { + masc: [ + [{ p: "شروع", f: "shUróo'" }], + [{ p: "شروع", f: "shUróo'" }], + [{ p: "شروع", f: "shUróo'" }], + ], + fem: [ + [{ p: "شروع", f: "shUróo'" }], + [{ p: "شروع", f: "shUróo'" }], + [{ p: "شروع", f: "shUróo'" }], + ], + }, + }, + }, + }, + // dynamic or generative stative compound verb + { + entry: {"i":4770,"ts":1608137130992,"p":"چیغه کول","f":"chéegha kawul","e":"to yell, scream, cry out","l":1527813972,"c":"v. gen. stat./dyn. comp. trans."}, + complement: {"i":4769,"ts":1527813972,"p":"چیغه","f":"chéegha","e":"yell, scream, cry","c":"n. f."}, + result: { + type: "dynamic or generative stative compound", + transitivity: "transitive", + dynamic: { + type: "dynamic compound", + transitivity: "transitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "چیغه کول", f: "chéegha kawúl" }, + short: { p: "چیغه کو", f: "chéegha kaw" }, + }, + perfective: { + long: { p: "چیغه وکړل", f: "chéegha óokRul" }, + short: { p: "چیغه وکړ", f: "chéegha óokR" }, + mini: { p: "چیغه وک", f: "chéegha óok" }, + }, + perfectiveSplit: { + long: [{ p: "چیغه و", f: "chéegha óo" }, { p: "کړل", f: "kRul" }], + short: [{ p: "چیغه و", f: "chéegha óo" }, { p: "کړ", f: "kR" }], + mini: [{ p: "چیغه و", f: "chéegha óo" }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "چیغه کو", f: "chéegha kaw" }, + perfective: { + long: { p: "چیغه وکړ", f: "chéegha óokR" }, + short: { p: "چیغه وک", f: "chéegha óok" }, + }, + perfectiveSplit: { + long: [{ p: "چیغه و", f: "chéegha óo" }, { p: "کړ", f: "kR" }], + short: [{ p: "چیغه و", f: "chéegha óo" }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "چیغه کړې", f: "chéegha kúRe" }, + present: { p: "چیغه کوونکی", f: "chéegha kawóonkey" }, + }, + objComplement: { + entry: {"i":4769,"ts":1527813972,"p":"چیغه","f":"chéegha","e":"yell, scream, cry","c":"n. f."}, + person: 5, + }, + auxVerb: {"i":10058,"ts":1527812752,"p":"کول","f":"kawul","e":"to do (an action or activity)","c":"v. trans. irreg. dyn. aux.","ssp":"وکړ","ssf":"óokR","prp":"وکړل","prf":"óokRul","pprtp":"کړی","pprtf":"kúRey","diacExcept":true}, + intransitiveForm: { + type: "dynamic compound", + transitivity: "intransitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "چیغه کېدل", f: "chéegha kedúl" }, + short: { p: "چیغه کېد", f: "chéegha ked" }, + }, + perfective: { + long: { p: "چیغه وشول", f: "chéegha óoshwul" }, + short: { p: "چیغه وشو", f: "chéegha óoshw" }, + }, + perfectiveSplit: { + long: [{ p: "چیغه و", f: "chéegha óo" }, { p: "شول", f: "shwul" }], + short: [{ p: "چیغه و", f: "chéegha óo" }, { p: "شو", f: "shw" }], + }, + }, + stem: { + imperfective: { p: "چیغه کېږ", f: "chéegha kéG" }, + perfective: { p: "چیغه وش", f: "chéegha óosh" }, + perfectiveSplit: [{ p: "چیغه و", f: "chéegha óo" }, { p: "ش", f: "sh" }], + }, + participle: { + past: { p: "چیغه شوې", f: "chéegha shúwe" }, + present: { p: "چیغه کېدونکی", f: "chéegha kedóonkey" }, + }, + objComplement: { + entry: {"i":4769,"ts":1527813972,"p":"چیغه","f":"chéegha","e":"yell, scream, cry","c":"n. f."}, + person: 5, + }, + auxVerb: {"i":10122,"ts":1527812754,"p":"کېدل","f":"kedul","e":"to happen, occur","c":"v. intrans. irreg. aux. dyn.","ssp":"وش","ssf":"óosh","prp":"وشول","prf":"óoshwul","pprtp":"شوی","pprtf":"shúwey","diacExcept":true}, + }, + }, + stative: { + type: "generative stative compound", + transitivity: "transitive", + yulEnding: null, + root: { + imperfective: { + long: { p: "چیغه کول", f: "chéegha kawúl" }, + short: { p: "چیغه کو", f: "chéegha kaw" }, + }, + perfective: { + long: { p: "چیغه کړل", f: "chéegha kRul" }, + short: { p: "چیغه کړ", f: "chéegha kR" }, + mini: { p: "چیغه ک", f: "chéegha k" }, + }, + perfectiveSplit: { + long: [{ p: "چیغه ", f: "chéegha " }, { p: "کړل", f: "kRul" }], + short: [{ p: "چیغه ", f: "chéegha " }, { p: "کړ", f: "kR" }], + mini: [{ p: "چیغه ", f: "chéegha " }, { p: "ک", f: "k" }], + }, + }, + stem: { + imperfective: { p: "چیغه کو", f: "chéegha kaw" }, + perfective: { + long: { p: "چیغه کړ", f: "chéegha kR" }, + short: { p: "چیغه ک", f: "chéegha k" }, + }, + perfectiveSplit: { + long: [{ p: "چیغه ", f: "chéegha " }, { p: "کړ", f: "kR" }], + short: [{ p: "چیغه ", f: "chéegha " }, { p: "ک", f: "k" }], + }, + }, + participle: { + past: { p: "چیغه کړې", f: "chéegha kúRe" }, + present: { p: "چیغه کوونکی", f: "chéegha kawóonkey" }, + }, + objComplement: { + entry: {"i":4769,"ts":1527813972,"p":"چیغه","f":"chéegha","e":"yell, scream, cry","c":"n. f."}, + person: 5, + }, + }, + }, + }, + // with plural form + { + entry: {"i":4770,"ts":1608137130992,"p":"چیغې کول","f":"chéeghe kawul","e":"to yell, scream, cry out","l":1527813972,"c":"v. gen. stat./dyn. comp. trans."}, + complement: {"i":4769,"ts":1527813972,"p":"چیغه","f":"chéegha","e":"yell, scream, cry","c":"n. f."}, + result: { + "type": "dynamic or generative stative compound", + "transitivity": "transitive", + "dynamic": { + "type": "dynamic compound", + "transitivity": "transitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغې کو", + "f": "chéeghe kaw" + }, + "perfective": { + "short": { + "p": "چیغې وک", + "f": "chéeghe óok" + }, + "long": { + "p": "چیغې وکړ", + "f": "chéeghe óokR" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "ک", + "f": "k" + }], + "long": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "کړ", + "f": "kR" + }], + }, + }, + "root": { + "imperfective": { + "short": { + "p": "چیغې کو", + "f": "chéeghe kaw" + }, + "long": { + "p": "چیغې کول", + "f": "chéeghe kawúl" + } + }, + "perfective": { + "mini": { + "p": "چیغې وک", + "f": "chéeghe óok" + }, + "short": { + "p": "چیغې وکړ", + "f": "chéeghe óokR" + }, + "long": { + "p": "چیغې وکړل", + "f": "chéeghe óokRul" + } + }, + "perfectiveSplit": { + "mini": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "ک", + "f": "k" + }], + "short": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "کړ", + "f": "kR" + }], + "long": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "کړل", + "f": "kRul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغې کوونکی", + "f": "chéeghe kawóonkey" + }, + "past": { + "p": "چیغې کړې", + "f": "chéeghe kúRe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "plural": { + "p": "چیغې", + "f": "chéeghe" + }, + "person": 11 + }, + "auxVerb": { + "i": 10058, + "ts": 1527812752, + "p": "کول", + "f": "kawul", + "e": "to do (an action or activity)", + "c": "v. trans. irreg. dyn. aux.", + "ssp": "وکړ", + "ssf": "óokR", + "prp": "وکړل", + "prf": "óokRul", + "pprtp": "کړی", + "pprtf": "kúRey", + "diacExcept": true + }, + "singularForm": { + "type": "dynamic compound", + "transitivity": "transitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغه کو", + "f": "chéegha kaw" + }, + "perfective": { + "short": { + "p": "چیغه وک", + "f": "chéegha óok" + }, + "long": { + "p": "چیغه وکړ", + "f": "chéegha óokR" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "ک", + "f": "k" + }], + "long": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "کړ", + "f": "kR" + }], + }, + }, + "root": { + "imperfective": { + "short": { + "p": "چیغه کو", + "f": "chéegha kaw" + }, + "long": { + "p": "چیغه کول", + "f": "chéegha kawúl" + } + }, + "perfective": { + "mini": { + "p": "چیغه وک", + "f": "chéegha óok" + }, + "short": { + "p": "چیغه وکړ", + "f": "chéegha óokR" + }, + "long": { + "p": "چیغه وکړل", + "f": "chéegha óokRul" + } + }, + "perfectiveSplit": { + "mini": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "ک", + "f": "k" + }], + "short": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "کړ", + "f": "kR" + }], + "long": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "کړل", + "f": "kRul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغه کوونکی", + "f": "chéegha kawóonkey" + }, + "past": { + "p": "چیغه کړې", + "f": "chéegha kúRe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "person": 5 + }, + "auxVerb": { + "i": 10058, + "ts": 1527812752, + "p": "کول", + "f": "kawul", + "e": "to do (an action or activity)", + "c": "v. trans. irreg. dyn. aux.", + "ssp": "وکړ", + "ssf": "óokR", + "prp": "وکړل", + "prf": "óokRul", + "pprtp": "کړی", + "pprtf": "kúRey", + "diacExcept": true + }, + "intransitiveForm": { + "type": "dynamic compound", + "transitivity": "intransitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغې کېږ", + "f": "chéeghe kéG" + }, + "perfective": { + "p": "چیغې وش", + "f": "chéeghe óosh" + }, + "perfectiveSplit": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "ش", + "f": "sh" + }], + }, + "root": { + "imperfective": { + "short": { + "p": "چیغې کېد", + "f": "chéeghe ked" + }, + "long": { + "p": "چیغې کېدل", + "f": "chéeghe kedúl" + } + }, + "perfective": { + "short": { + "p": "چیغې وشو", + "f": "chéeghe óoshw" + }, + "long": { + "p": "چیغې وشول", + "f": "chéeghe óoshwul" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "شو", + "f": "shw" + }], + "long": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "شول", + "f": "shwul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغې کېدونکی", + "f": "chéeghe kedóonkey" + }, + "past": { + "p": "چیغې شوې", + "f": "chéeghe shúwe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "plural": { + "p": "چیغې", + "f": "chéeghe" + }, + "person": 11 + }, + "auxVerb": { + "i": 10122, + "ts": 1527812754, + "p": "کېدل", + "f": "kedul", + "e": "to happen, occur", + "c": "v. intrans. irreg. aux. dyn.", + "ssp": "وش", + "ssf": "óosh", + "prp": "وشول", + "prf": "óoshwul", + "pprtp": "شوی", + "pprtf": "shúwey", + "diacExcept": true + }, + "singularForm": { + "type": "dynamic compound", + "transitivity": "intransitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغه کېږ", + "f": "chéegha kéG" + }, + "perfective": { + "p": "چیغه وش", + "f": "chéegha óosh" + }, + "perfectiveSplit": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "ش", + "f": "sh" + }], + }, + "root": { + "imperfective": { + "short": { + "p": "چیغه کېد", + "f": "chéegha ked" + }, + "long": { + "p": "چیغه کېدل", + "f": "chéegha kedúl" + } + }, + "perfective": { + "short": { + "p": "چیغه وشو", + "f": "chéegha óoshw" + }, + "long": { + "p": "چیغه وشول", + "f": "chéegha óoshwul" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "شو", + "f": "shw" + }], + "long": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "شول", + "f": "shwul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغه کېدونکی", + "f": "chéegha kedóonkey" + }, + "past": { + "p": "چیغه شوې", + "f": "chéegha shúwe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "person": 5 + }, + "auxVerb": { + "i": 10122, + "ts": 1527812754, + "p": "کېدل", + "f": "kedul", + "e": "to happen, occur", + "c": "v. intrans. irreg. aux. dyn.", + "ssp": "وش", + "ssf": "óosh", + "prp": "وشول", + "prf": "óoshwul", + "pprtp": "شوی", + "pprtf": "shúwey", + "diacExcept": true + } + } + } + }, + "intransitiveForm": { + "type": "dynamic compound", + "transitivity": "intransitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغې کېږ", + "f": "chéeghe kéG" + }, + "perfective": { + "p": "چیغې وش", + "f": "chéeghe óosh" + }, + "perfectiveSplit": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "ش", + "f": "sh" + }], + }, + "root": { + "imperfective": { + "short": { + "p": "چیغې کېد", + "f": "chéeghe ked" + }, + "long": { + "p": "چیغې کېدل", + "f": "chéeghe kedúl" + } + }, + "perfective": { + "short": { + "p": "چیغې وشو", + "f": "chéeghe óoshw" + }, + "long": { + "p": "چیغې وشول", + "f": "chéeghe óoshwul" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "شو", + "f": "shw" + }], + "long": [{ + "p": "چیغې و", + "f": "chéeghe óo" + }, { + "p": "شول", + "f": "shwul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغې کېدونکی", + "f": "chéeghe kedóonkey" + }, + "past": { + "p": "چیغې شوې", + "f": "chéeghe shúwe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "plural": { + "p": "چیغې", + "f": "chéeghe" + }, + "person": 11 + }, + "auxVerb": { + "i": 10122, + "ts": 1527812754, + "p": "کېدل", + "f": "kedul", + "e": "to happen, occur", + "c": "v. intrans. irreg. aux. dyn.", + "ssp": "وش", + "ssf": "óosh", + "prp": "وشول", + "prf": "óoshwul", + "pprtp": "شوی", + "pprtf": "shúwey", + "diacExcept": true + }, + "singularForm": { + "type": "dynamic compound", + "transitivity": "intransitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغه کېږ", + "f": "chéegha kéG" + }, + "perfective": { + "p": "چیغه وش", + "f": "chéegha óosh" + }, + "perfectiveSplit": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "ش", + "f": "sh" + }], + }, + "root": { + "imperfective": { + "short": { + "p": "چیغه کېد", + "f": "chéegha ked" + }, + "long": { + "p": "چیغه کېدل", + "f": "chéegha kedúl" + } + }, + "perfective": { + "short": { + "p": "چیغه وشو", + "f": "chéegha óoshw" + }, + "long": { + "p": "چیغه وشول", + "f": "chéegha óoshwul" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "شو", + "f": "shw" + }], + "long": [{ + "p": "چیغه و", + "f": "chéegha óo" + }, { + "p": "شول", + "f": "shwul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغه کېدونکی", + "f": "chéegha kedóonkey" + }, + "past": { + "p": "چیغه شوې", + "f": "chéegha shúwe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "person": 5 + }, + "auxVerb": { + "i": 10122, + "ts": 1527812754, + "p": "کېدل", + "f": "kedul", + "e": "to happen, occur", + "c": "v. intrans. irreg. aux. dyn.", + "ssp": "وش", + "ssf": "óosh", + "prp": "وشول", + "prf": "óoshwul", + "pprtp": "شوی", + "pprtf": "shúwey", + "diacExcept": true + } + } + } + }, + "stative": { + "type": "generative stative compound", + "transitivity": "transitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغې کو", + "f": "chéeghe kaw" + }, + "perfective": { + "short": { + "p": "چیغې ک", + "f": "chéeghe k" + }, + "long": { + "p": "چیغې کړ", + "f": "chéeghe kR" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغې ", + "f": "chéeghe " + }, { + "p": "ک", + "f": "k" + }], + "long": [{ + "p": "چیغې ", + "f": "chéeghe " + }, { + "p": "کړ", + "f": "kR" + }], + }, + }, + "root": { + "imperfective": { + "short": { + "p": "چیغې کو", + "f": "chéeghe kaw" + }, + "long": { + "p": "چیغې کول", + "f": "chéeghe kawúl" + } + }, + "perfective": { + "mini": { + "p": "چیغې ک", + "f": "chéeghe k" + }, + "short": { + "p": "چیغې کړ", + "f": "chéeghe kR" + }, + "long": { + "p": "چیغې کړل", + "f": "chéeghe kRul" + } + }, + "perfectiveSplit": { + "mini": [{ + "p": "چیغې ", + "f": "chéeghe " + }, { + "p": "ک", + "f": "k" + }], + "short": [{ + "p": "چیغې ", + "f": "chéeghe " + }, { + "p": "کړ", + "f": "kR" + }], + "long": [{ + "p": "چیغې ", + "f": "chéeghe " + }, { + "p": "کړل", + "f": "kRul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغې کوونکی", + "f": "chéeghe kawóonkey" + }, + "past": { + "p": "چیغې کړې", + "f": "chéeghe kúRe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "plural": { + "p": "چیغې", + "f": "chéeghe" + }, + "person": 11 + }, + "singularForm": { + "type": "generative stative compound", + "transitivity": "transitive", + "yulEnding": null, + "stem": { + "imperfective": { + "p": "چیغه کو", + "f": "chéegha kaw" + }, + "perfective": { + "short": { + "p": "چیغه ک", + "f": "chéegha k" + }, + "long": { + "p": "چیغه کړ", + "f": "chéegha kR" + } + }, + "perfectiveSplit": { + "short": [{ + "p": "چیغه ", + "f": "chéegha " + }, { + "p": "ک", + "f": "k" + }], + "long": [{ + "p": "چیغه ", + "f": "chéegha " + }, { + "p": "کړ", + "f": "kR" + }], + }, + }, + "root": { + "imperfective": { + "short": { + "p": "چیغه کو", + "f": "chéegha kaw" + }, + "long": { + "p": "چیغه کول", + "f": "chéegha kawúl" + } + }, + "perfective": { + "mini": { + "p": "چیغه ک", + "f": "chéegha k" + }, + "short": { + "p": "چیغه کړ", + "f": "chéegha kR" + }, + "long": { + "p": "چیغه کړل", + "f": "chéegha kRul" + } + }, + "perfectiveSplit": { + "mini": [{ + "p": "چیغه ", + "f": "chéegha " + }, { + "p": "ک", + "f": "k" + }], + "short": [{ + "p": "چیغه ", + "f": "chéegha " + }, { + "p": "کړ", + "f": "kR" + }], + "long": [{ + "p": "چیغه ", + "f": "chéegha " + }, { + "p": "کړل", + "f": "kRul" + }], + }, + }, + "participle": { + "present": { + "p": "چیغه کوونکی", + "f": "chéegha kawóonkey" + }, + "past": { + "p": "چیغه کړې", + "f": "chéegha kúRe" + } + }, + "objComplement": { + "entry": { + "i": 4769, + "ts": 1527813972, + "p": "چیغه", + "f": "chéegha", + "e": "yell, scream, cry", + "c": "n. f." + }, + "person": 5 + } + } + } + } + }, +]; + +test(`verb info should work`, () => { + toTest.forEach(({ + entry, + result, + complement, + }) => { + // console.log(JSON.stringify(getVerbInfo(entry, complement), null, " ")) + expect(getVerbInfo(entry, complement)).toEqual(result); + }); +}); + +// test(`verb info should not work if no parts of speech`, () => { +// expect(() => { +// getVerbInfo({"i":5413,"ts":1527812767,"p":"خندل","f":"khandul","e":"to laugh"}); +// }).toThrow("No part of speech info"); +// }); + +// test(`verb info should not work if a complement is not provided for a compound verb`, () => { +// expect(() => { +// getVerbInfo({"i":5368,"ts":1577898920635,"p":"خفه کېدل","f":"khufa kedul","e":"to be sad, grieved, annoyed, upset; to be choked, to suffocate","l":1527812798,"c":"v. stat. comp. intrans."}); +// }).toThrow("complement required for compound verb"); +// }); diff --git a/src/lib/verb-info.ts b/src/lib/verb-info.ts new file mode 100644 index 0000000..d15836a --- /dev/null +++ b/src/lib/verb-info.ts @@ -0,0 +1,938 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { + concatPsString, + firstPhonetics, + makePsString, + psStringEquals, + removeEndingL, + yulEndingInfinitive, + removeRetroflexR, + inflectYey, + unisexInfToObjectMatrix, + complementInflects, + beginsWithDirectionalPronoun, + checkForOoPrefix, + removeStartingTick, + ensureShortWurShwaShift, + choosePersInf, +} from "./p-text-helpers"; +import { + accentOnFront, + accentOnNFromEnd, + removeAccents, +} from "./accent-helpers"; +import { + inflectWord, +} from "./pashto-inflector"; +import { + stativeAux, +} from "./irregular-conjugations"; +import { + presentParticipleSuffix +} from "./grammar-units"; +import { + dynamicAuxVerbs, +} from "./dyn-comp-aux-verbs"; +import { + getPersonInflectionsKey, + getPersonNumber, + spaceInForm, + getAuxTransitivity, + chooseParticipleInflection, +} from "./misc-helpers"; +import * as T from "../types"; + +const eyEndingUnaccented: T.PsString = { p: "ی", f: "ey" }; + +/** + * Compiles the base information (roots, stems etc.) needed in order + * to make all the conjugations. This is the first step of creating + * the conjugations. + * + * @param entry - the dictionary entry for the verb + * @param complement - the dictioanry entry for the complement of the verb if compound + */ +export function getVerbInfo( + entry: T.DictionaryEntry, + complement?: T.DictionaryEntry, +): T.VerbInfo { + const type = getType(entry); + if (type === "transitive or grammatically transitive simple") { + return { + type: "transitive or grammatically transitive simple", + transitive: getVerbInfo( + // @ts-ignore (will have entry.c) + { ...entry, c: entry.c.replace("trans./gramm. trans.", "trans.") }, + ) as T.SimpleVerbInfo, + grammaticallyTransitive: getVerbInfo( + // @ts-ignore (will have entry.c) + { ...entry, c: entry.c.replace("trans./gramm. trans.", "gramm. trans.") }, + ) as T.SimpleVerbInfo, + }; + } + const transitivity = getTransitivity(entry); + if (type !== "simple") { + if (!complement) { + throw new Error("complement required for compound verb"); + } + if (type === "dynamic compound") { + return getDynamicCompoundInfo(entry, complement) + } + if (type === "dynamic or stative compound") { + return { + type: "dynamic or stative compound", + transitivity, + dynamic: getDynamicCompoundInfo( + // @ts-ignore (will have entry.c) + { ...entry, c: entry.c.replace("dyn./stat.", "dyn.") }, + complement, + ), + stative: getVerbInfo( + // @ts-ignore (will have entry.c) + { ...entry, c: entry.c.replace("dyn./stat.", "stat.") }, + complement, + ) as T.StativeCompoundVerbInfo, + }; + } + if (type === "dynamic or generative stative compound") { + return { + type: "dynamic or generative stative compound", + transitivity, + dynamic: getDynamicCompoundInfo( + // @ts-ignore (will have entry.c) + { ...entry, c: entry.c.replace("gen. stat./dyn.", "dyn.") }, + complement, + ), + stative: getGenerativeStativeCompoundVerbInfo( + // @ts-ignore (will have entry.c) + { ...entry, c: entry.c.replace("gen. stat./dyn.", "gen. stat.") }, + complement, + ), + } + } + if (type === "generative stative compound") { + return getGenerativeStativeCompoundVerbInfo(entry, complement as T.DictionaryEntry); + } + } + const comp = complement ? ensureUnisexInflections(complement) : undefined; + const root = getVerbRoots(entry, transitivity, comp); + const stem = getVerbStems(entry, root, transitivity, comp); + const infinitive = "mascSing" in root.imperfective ? root.imperfective.mascSing.long : root.imperfective.long; + const yulEnding = yulEndingInfinitive(infinitive); + const participle = getParticiple(entry, stem, infinitive, transitivity, comp); + const idiosyncraticThirdMascSing = getIdiosyncraticThirdMascSing(entry); + + const baseInfo: T.VerbInfoBase = { + transitivity, + yulEnding, + root, + stem, + participle, + ...idiosyncraticThirdMascSing ? { + idiosyncraticThirdMascSing, + } : {}, + }; + if (type === "stative compound") { + return { + ...baseInfo, + type, + complement: comp as T.UnisexInflections, + }; + } + return { + ...baseInfo, + type, + }; +} + +type Bases = { + stem: { + imperfective: T.FullForm, + perfective: T.FullForm, + perfectiveSplit?: T.SplitInfo, + }, + root: { + imperfective: T.FullForm, + perfective: T.FullForm, + perfectiveSplit?: T.SplitInfo, + }, + participle: { + present: T.FullForm, + past: T.FullForm, + }, +} + +function getGenerativeStativeCompoundVerbInfo( + entry: T.DictionaryEntry, comp: T.DictionaryEntry, forceSingular?: true, +): T.GenerativeStativeCompoundVerbInfo { + const transitivity = getTransitivity(entry); + const transitivityNoGrammTrans = transitivity === "grammatically transitive" ? "transitive" : transitivity; + const yulEnding = null; + const objComplement = getObjComplementInfo(entry, comp, forceSingular); + const auxVerb = stativeAux[transitivityNoGrammTrans]; + const compUsed = objComplement.plural ? objComplement.plural : makePsString( + objComplement.entry.p, + firstPhonetics(objComplement.entry.f), + ); + const bases: Bases = { + stem: { + imperfective: auxVerb.info.stem.imperfective, + perfective: auxVerb.info.stem.perfective, + }, + root: { + imperfective: auxVerb.info.root.imperfective, + perfective: auxVerb.info.root.perfective, + }, + participle: { + present: auxVerb.info.participle.present, + past: chooseParticipleInflection( + inflectYey( + "mascSing" in auxVerb.info.participle.past + // purely for type saftey, will not have mascSing + // in a non stative compound verb + /* istanbul ignore next */ + ? auxVerb.info.participle.past.mascSing + : auxVerb.info.participle.past + ), + objComplement.person, + ), + } + } + const perfectiveStem = concatPsString(compUsed, " ", bases.stem.perfective); + const stem = { + imperfective: concatPsString(compUsed, " ", bases.stem.imperfective), + perfective: perfectiveStem, + perfectiveSplit: splitPerfective(perfectiveStem, 0, 0, true), + }; + const perfectiveRoot = concatPsString(compUsed, " ", bases.root.perfective) as T.OptionalPersonInflections>; + const root = { + imperfective: concatPsString(compUsed, " ", bases.root.imperfective) as T.OptionalPersonInflections>, + perfective: perfectiveRoot, + perfectiveSplit: splitPerfective(perfectiveRoot, 0, 0, true), + }; + const participle = { + present: concatPsString(compUsed, " ", auxVerb.info.participle.present), + past: concatPsString(compUsed, " ", bases.participle.past), + } + return { + type: "generative stative compound", + transitivity, + yulEnding, + stem, + root, + participle, + objComplement, + ...objComplement.plural ? { + singularForm: getGenerativeStativeCompoundVerbInfo(entry, comp, true), + } : {}, + }; +} + +function getDynamicCompoundInfo(entry: T.DictionaryEntry, comp: T.DictionaryEntry, forceSingular?: true): T.DynamicCompoundVerbInfo { + const transitivity = getTransitivity(entry); + const yulEnding = null; + const objComplement = getObjComplementInfo(entry, comp, forceSingular); + const auxVerb = getDynamicAuxVerb(entry); + const auxVerbInfo = getVerbInfo(auxVerb.entry, auxVerb.complement) as T.NonComboVerbInfo; + const compUsed = objComplement.plural ? objComplement.plural : makePsString( + objComplement.entry.p, + firstPhonetics(objComplement.entry.f), + ); + const bases: Bases = (auxVerbInfo.type === "stative compound") + ? getObjectMatchingBases(auxVerbInfo, objComplement.person) + : { + stem: { + imperfective: auxVerbInfo.stem.imperfective, + perfective: auxVerbInfo.stem.perfective, + ...auxVerbInfo.stem.perfectiveSplit ? { + perfectiveSplit: auxVerbInfo.stem.perfectiveSplit, + } : {}, + }, + root: { + imperfective: auxVerbInfo.root.imperfective, + perfective: auxVerbInfo.root.perfective, + ...auxVerbInfo.root.perfectiveSplit ? { + perfectiveSplit: auxVerbInfo.root.perfectiveSplit, + } : {}, + }, + participle: { + present: auxVerbInfo.participle.present, + past: chooseParticipleInflection( + inflectYey( + "mascSing" in auxVerbInfo.participle.past + // purely for type saftey, will not have mascSing + // in a non stative compound verb + /* istanbul ignore next */ + ? auxVerbInfo.participle.past.mascSing + : auxVerbInfo.participle.past + ), + objComplement.person, + ), + } + } + const stem = { + imperfective: concatPsString(compUsed, " ", bases.stem.imperfective), + perfective: concatPsString(compUsed, " ", bases.stem.perfective), + ...bases.stem.perfectiveSplit ? { + perfectiveSplit: makeDynamicPerfectiveSplit(compUsed, bases.stem.perfectiveSplit), + } : {}, + }; + const root = { + imperfective: concatPsString(compUsed, " ", bases.root.imperfective) as T.OptionalPersonInflections>, + perfective: concatPsString(compUsed, " ", bases.root.perfective) as T.OptionalPersonInflections>, + ...bases.root.perfectiveSplit ? { + perfectiveSplit: makeDynamicPerfectiveSplit(compUsed, bases.root.perfectiveSplit), + } : {}, + }; + const participle = { + present: concatPsString(compUsed, " ", auxVerbInfo.participle.present), + past: concatPsString(compUsed, " ", bases.participle.past), + }; + const makeIntransitiveFormOfEntry = (e: T.DictionaryEntry): T.DictionaryEntry => ({ + ...e, + p: e.p.replace( + "کول", + "کېدل" + ), + e: e.e.replace("to do", "to become"), + f: e.f.replace(/kaw[u|ú]l/, "kedul"), + c: "v. intrans. dyn. comp.", + }); + const intransitiveFormEntry = (transitivity === "transitive" && auxVerb.entry.p === "کول") + ? makeIntransitiveFormOfEntry(entry) + : null; + return { + type: "dynamic compound", + transitivity, + yulEnding, + stem, + root, + participle, + objComplement, + auxVerb: auxVerb.entry, + ...auxVerb.complement ? { + auxVerbComplement: auxVerb.complement, + } : {}, + ...objComplement.plural ? { + singularForm: getDynamicCompoundInfo(entry, comp, true), + } : {}, + ...intransitiveFormEntry ? { + intransitiveForm: getDynamicCompoundInfo(intransitiveFormEntry, comp), + } : {}, + }; +} + +function getObjectMatchingBases(auxInfo: T.NonComboVerbInfo, person: T.Person): Bases { + const key = getPersonInflectionsKey(person); + const getBase = (x: T.FullForm): T.SingleOrLengthOpts => ( + "mascSing" in x ? x[key] : x + ); + return { + stem: { + imperfective: getBase(auxInfo.stem.imperfective), + perfective: getBase(auxInfo.stem.perfective), + ...auxInfo.stem.perfectiveSplit ? { + perfectiveSplit: choosePersInf(auxInfo.stem.perfectiveSplit, key), + } : {}, + }, + root: { + imperfective: getBase(auxInfo.root.imperfective), + perfective: getBase(auxInfo.root.perfective), + ...auxInfo.root.perfectiveSplit ? { + perfectiveSplit: choosePersInf(auxInfo.root.perfectiveSplit, key), + } : {}, + }, + participle: { + present: getBase(auxInfo.participle.present), + past: getBase(auxInfo.participle.past), + }, + }; +} + +function getObjComplementInfo( + entry: T.DictionaryEntry, + complement: T.DictionaryEntry, + forceSingular?: true +): T.ObjComplement { + const complementInEntry = makePsString( + entry.p.split(" ")[0], + entry.f.split(" ")[0], + ); + const complementEntry: T.DictionaryEntry = { ...complement, f: firstPhonetics(complement.f) }; + const usesSeperatePluralForm = !forceSingular && !psStringEquals( + makePsString(complementInEntry.p, removeAccents(complementInEntry.f)), + makePsString(complementEntry.p, removeAccents(complementEntry.f)), + ); + return { + entry: complementEntry, + ...usesSeperatePluralForm ? { + plural: complementInEntry, + } : {}, + person: getComplementPerson(complement, usesSeperatePluralForm), + }; +} + +function getTransitivity(entry: T.DictionaryEntry): T.Transitivity { + if (!entry.c) { + throw new Error("No part of speech info"); + } + if (entry.c.includes("gramm. trans.")) { + return "grammatically transitive"; + } + if (entry.c.includes("intrans.")) { + return "intransitive"; + } + return "transitive"; +} + +function getType(entry: T.DictionaryEntry): + "simple" | "stative compound" | "dynamic compound" | + "dynamic or stative compound" | "dynamic or generative stative compound" | + "generative stative compound" | "transitive or grammatically transitive simple" +{ + // error will have thrown before on the getTransitivity function if missing entry.c + /* istanbul ignore if */ + if (!entry.c) { + throw new Error("No part of speech info"); + } + if (entry.c.includes(" trans./gramm. trans.")) { + return "transitive or grammatically transitive simple"; + } + if (entry.c.includes(" gen. stat. comp.")) { + return "generative stative compound"; + } + if (entry.c.includes(" stat. comp.")) { + return "stative compound"; + } + if (entry.c.includes(" dyn. comp.")) { + return "dynamic compound"; + } + if (entry.c.includes(" dyn./stat. comp.")) { + return "dynamic or stative compound"; + } + if (entry.c.includes(" gen. stat./dyn. comp.")) { + return "dynamic or generative stative compound"; + } + return "simple"; +} + +function getIdiosyncraticThirdMascSing(entry: T.DictionaryEntry): T.ShortThirdPersFormSet | false { + if (entry.tppp && entry.tppf) { + const tpp = makePsString(entry.tppp, entry.tppf); + const ooRes = addOoPrefix(tpp, entry) + return { + imperfective: tpp, + perfective: ooRes.ps as T.PsString, + }; + } + return false; +} + +/** + * Returns the roots (imperfective and perfective) of a given verb + * + * @param entry - the dictionary entry for the verb + */ +function getVerbRoots(entry: T.DictionaryEntry, transitivity: T.Transitivity, complement?: T.UnisexInflections): T.VerbRootSet { + // each of the roots compes with a short and long version + // with or without the ending ل - ul + const isKawulAux = entry.p === "کول"; + const shortAndLong = (root: T.PsString, perfective?: "perfective"): T.LengthOptions => { + const long = perfective ? root : accentOnNFromEnd(root, yulEndingInfinitive(root) ? 1 : 0); + const short = removeEndingL(root); + return { + long, + short, + ...(isKawulAux && perfective) ? { + mini: removeRetroflexR(short) + } : {}, + }; + }; + const infinitive = makePsString(entry.p, firstPhonetics(entry.f)); + + // the imperfective root is the infinitive + // TODO: CHECK THIS!! FOR PERSON INFLECTIONS?? + const imperfective = ((): T.OptionalPersonInflections> => { + // if stative compound + if (complement && spaceInForm(infinitive)) { + const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0]; + const t = getAuxTransitivity(transitivity); + const aux = stativeAux[t].info.root.imperfective + return concatPsString(comp, " ", aux) as T.OptionalPersonInflections>; + } + return shortAndLong(infinitive); + })(); + + const { perfective, pSplit, fSplit } = ((): { + perfective: T.OptionalPersonInflections> + pSplit: number, + fSplit: number, + } => { + // if stative compound + if (complement) { + const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0]; + const t = getAuxTransitivity(transitivity); + const aux = stativeAux[t].info.root.perfective + return { + pSplit: 0, + fSplit: 0, + perfective: concatPsString(comp, " ", aux) as T.OptionalPersonInflections>, + }; + } + // the perfective root is + // - the special perfective root if it exists, or + if (entry.prp && entry.prf) { + const perfective = shortAndLong(makePsString(entry.prp, entry.prf), "perfective"); + const hasOoPrefix = checkForOoPrefix(perfective.long); + return { + perfective, + pSplit: entry.separationAtP || (hasOoPrefix ? 1 : 0), + fSplit: entry.separationAtF || (hasOoPrefix ? 2 : 0), + }; + } + // - the infinitive prefixed with oo + const { ps, pSplit, fSplit } = addOoPrefix(infinitive, entry); + return { + perfective: shortAndLong(ps as T.PsString, "perfective"), + pSplit, + fSplit, + }; + })(); + + const perfectiveSplit = splitPerfective(perfective, pSplit, fSplit, !!complement); + return { + imperfective, + perfective, + perfectiveSplit, + }; +} + +/** + * Returns the stems (imperfective and perfective) of a given verb + * + * @param entry - the dictionary entry for the verb + */ +function getVerbStems(entry: T.DictionaryEntry, root: T.VerbRootSet, transitivity: T.Transitivity, complement?: T.UnisexInflections): T.VerbStemSet { + function isRegEdulTransitive(): boolean { + /* istanbul ignore next */ + if ("mascSing" in root.imperfective) { + return false; + } + const lastPCharacters = root.imperfective.long.p.slice(-3); + return ( + // @ts-ignore - will always have a entry.c if we get to this point + (entry.c.includes("intrans.")) + && (lastPCharacters === "ېدل") + ); + } + function makeIntransImperfectiveStem() { + const long = { + // @ts-ignore + p: root.imperfective.long.p.slice(0, -2) + "ږ", + // @ts-ignore + f: root.imperfective.long.f.slice(0, -4) + "éG", + }; + if (entry.shortIntrans) { + const short = makePsString( + long.p.slice(0, -2), + long.f.slice(0, -2), + ); + return { long, short }; + } + return long; + } + + const imperfective = ((): T.FullForm => { + const auxTransitivity = getAuxTransitivity(transitivity); + if (complement && spaceInForm(root.imperfective)) { + const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0]; + return concatPsString( + comp, + " ", + stativeAux[auxTransitivity].info.stem.imperfective as T.PsString, + ); + } + // the imperfective stem is + // - the special present stem if it exists, or + if (entry.psp && entry.psf) { + return makePsString(entry.psp, entry.psf); + } + // - the eG form (and short form possibly) if regular transitive, or + if (isRegEdulTransitive()) { + return makeIntransImperfectiveStem() + } + // - the infinitive minus ل + return "mascSing" in root.imperfective + ? root.imperfective.mascSing.short + : root.imperfective.short; + })(); + + const { perfective, pSplit, fSplit } = ((): { perfective: T.FullForm, pSplit: number, fSplit: number } => { + if (complement) { + const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0]; + const t = getAuxTransitivity(transitivity); + return { + perfective: concatPsString(comp, " ", stativeAux[t].info.stem.perfective), + pSplit: 0, + fSplit: 0, + }; + } + // the perfective stem is + // - the special subjunctive stem if it exists, or + if (entry.ssp && entry.ssf) { + const isKawulAux = entry.p === "کول"; + const perfective = makePsString(entry.ssp, entry.ssf); + const hasOoPrefix = checkForOoPrefix(perfective); + if (isKawulAux) { + return { + perfective: { + long: perfective, + short: removeRetroflexR(perfective), + }, + pSplit: hasOoPrefix ? 1 : 0, + fSplit: hasOoPrefix ? 2 : 0, + }; + } + return { + perfective, + pSplit: entry.separationAtP || (hasOoPrefix ? 1 : 0), + fSplit: entry.separationAtF || (hasOoPrefix ? 2 : 0), + }; + } + // - the perfective stem prefixed with oo (if possible) + const res = addOoPrefix(imperfective as T.SingleOrLengthOpts, entry); + return { + perfective: res.ps, + pSplit: res.pSplit, + fSplit: res.fSplit, + }; + })(); + + const perfectiveSplit = splitPerfective(perfective, pSplit, fSplit, !!complement); + return { + imperfective, + perfective, + ...perfectiveSplit ? { + perfectiveSplit, + } : {}, + }; +} + +function splitPerfective(perfective: T.FullForm, pSplit: number, fSplit: number, isStativeComp: boolean): T.SplitInfo | undefined { + if (!isStativeComp && pSplit === 0 && fSplit === 0) { + return undefined; + } + if ("mascSing" in perfective) { + // @ts-ignore + return { + mascSing: splitPerfective(perfective.mascSing, pSplit, fSplit, isStativeComp), + mascPlur: splitPerfective(perfective.mascPlur, pSplit, fSplit, isStativeComp), + femSing: splitPerfective(perfective.femSing, pSplit, fSplit, isStativeComp), + femPlur: splitPerfective(perfective.femPlur, pSplit, fSplit, isStativeComp), + }; + } + if ("long" in perfective) { + return { + // @ts-ignore + short: splitPerfective(perfective.short, pSplit, fSplit, isStativeComp) as [T.PsString, T.PsString], + long: splitPerfective(perfective.long, pSplit, fSplit, isStativeComp) as [T.PsString, T.PsString], + ..."mini" in perfective ? { + // @ts-ignore + mini: splitPerfective(perfective.mini, pSplit, fSplit, isStativeComp) as [T.PsString, T.PsString], + } : {}, + }; + } + if (isStativeComp) { + // if it's a stative, split whatever is before the aux verb with a trailing space + const pWords = perfective.p.split(" "); + const fWords = perfective.f.split(" "); + const before = makePsString( + pWords.slice(0, -1).join(" ") + " ", + fWords.slice(0, -1).join(" ") + " ", + ); + const after = makePsString( + pWords[pWords.length - 1], + fWords[fWords.length - 1], + ); + return [before, after]; + } + const pBeg = perfective.p.slice(0, pSplit); + const before = makePsString( + pBeg.endsWith(" ") ? pBeg.slice(0, -1) : pBeg, + perfective.f.slice(0, fSplit).replace("`", ""), + ); + const beforeAccented = beginsWithDirectionalPronoun(before) + ? before + : accentOnFront(before); + const after = makePsString(perfective.p.slice(pSplit), removeAccents(removeStartingTick(perfective.f.slice(fSplit)))); + return [beforeAccented, after] as T.SplitInfo; +} + +function getParticiple(entry: T.DictionaryEntry, stem: T.VerbStemSet, infinitive: T.PsString, transitivity: T.Transitivity, complement?: T.UnisexInflections): T.ParticipleSet { + const shortParticipleRoot = ((): T.PsString | null => { + const shortenableEndings = ["ښتل", "ستل", "وتل"]; + // special thing for اېښودل - پرېښودل + if (infinitive.p.slice(-4) === "ښودل" && infinitive.p.length > 4 && infinitive.p !== "کېښودل" && infinitive.p !== "کښېښودل") { + return makePsString( + infinitive.p.slice(0, -3), + infinitive.f.slice(0, -4), + ); + } + const isOrulShortenable = ["وړل", "راوړل", "وروړل"].includes(infinitive.p); + if (isOrulShortenable || (shortenableEndings.includes(infinitive.p.slice(-3)) && infinitive.p.slice(-4) !== "استل")) { + return makePsString( + infinitive.p.slice(0, -1), + infinitive.f.slice(0, -2), + ) + } + return null; + })(); + + const makeSepStativePart = (complement: T.UnisexInflections, tense: "present" | "past"): T.FullForm => { + const compInflects = complementInflects(complement); + const comp = compInflects ? unisexInfToObjectMatrix(complement) : complement.masc[0][0]; + const aux = stativeAux[auxTransitivity].info.participle[tense] as T.PsString; + return concatPsString( + comp, + " ", + compInflects + ? unisexInfToObjectMatrix(inflectYey(aux) as T.UnisexInflections) + : aux, + ); + }; + + const accentPastPart = (pp: T.PsString): T.PsString => ( + accentOnNFromEnd(pp, yulEndingInfinitive(infinitive) ? 2 : 1) + ); + const auxTransitivity = getAuxTransitivity(transitivity); + const past = (entry.pprtp && entry.pprtf) + ? makePsString(entry.pprtp, entry.pprtf) + : complement + ? makeSepStativePart(complement, "past") + : shortParticipleRoot + ? { + short: accentPastPart( + concatPsString(ensureShortWurShwaShift(shortParticipleRoot), eyEndingUnaccented), + ), + long: accentPastPart( + concatPsString(infinitive, eyEndingUnaccented), + ), + } + : accentPastPart(concatPsString(infinitive, eyEndingUnaccented)); + + // TODO: make this into a rule? + const shortImperfectiveRoot = (entry.p === "وتل") ? { p: "وتل", f: "watl" } : removeEndingL(infinitive); + const accentPresPart = (pp: T.PsString): T.PsString => ( + accentOnNFromEnd(pp, 1) + ); + const present = (complement && spaceInForm(infinitive)) + ? makeSepStativePart(complement, "present") + : (shortParticipleRoot && (!psStringEquals(shortParticipleRoot, shortImperfectiveRoot) || (entry.p === "وتل"))) + ? { + short: accentPresPart( + concatPsString(shortParticipleRoot, presentParticipleSuffix), + ), + long: accentPresPart( + concatPsString(shortImperfectiveRoot, presentParticipleSuffix), + ), + } + : ("short" in stem.imperfective && entry.shortIntrans && entry.p !== "اوسېدل") + ? { + short: accentPresPart( + concatPsString(stem.imperfective.short, presentParticipleSuffix), + ), + long: accentPresPart( + concatPsString(shortImperfectiveRoot, presentParticipleSuffix), + ), + } + : accentPresPart( + concatPsString( + shortImperfectiveRoot.p === "وړ" ? ensureShortWurShwaShift(shortImperfectiveRoot) : shortImperfectiveRoot, + presentParticipleSuffix, + ), + ); + + return { + past, + present, + }; +} + +/** + * Adds a perfective و - oo prefix to a verb + * + * @param entry - the dictionary entry for the verb + */ +function addOoPrefix( + s: T.SingleOrLengthOpts, + entry: T.DictionaryEntry, +): { ps: T.SingleOrLengthOpts, pSplit: number, fSplit: number } { + let pSplit = 0; + let fSplit = 0; + // A bit of side effects in this function... sorry! + function attachOo(ps: T.PsString): T.PsString; + function attachOo(ps: T.SingleOrLengthOpts): T.SingleOrLengthOpts; + function attachOo(ps: T.SingleOrLengthOpts): T.SingleOrLengthOpts { + if ("long" in ps) { + return { + short: attachOo(ps.short), + long: attachOo(ps.long), + }; + } + if (entry.separationAtP && entry.separationAtF) { + pSplit = entry.separationAtP; + fSplit = entry.separationAtF; + return ps; + } + if (entry.noOo) { + return ps; + } + if (entry.sepOo) { + pSplit = 2; + fSplit = 3; + return { + p: `و ${ps.p}`, + f: `oo\`${ps.f}`, + }; + } + const startsWithA = ps.p.charAt(0) === "ا" && ps.f.charAt(0) === "a"; + if (startsWithA) { + pSplit = 2; + fSplit = 3; + return { + p: `و${ps.p}`, + f: `wa${ps.f}`, + }; + } + const startsWithAa = ["آ", "ا"].includes(ps.p.charAt(0)) && ps.f.slice(0, 2) === "aa"; + if (startsWithAa) { + pSplit = 2; + fSplit = 3; + return { + p: `وا${ps.p.substr(1)}`, + f: `w${ps.f}`, + }; + } + const startsWithOo = ["óo", "oo"].includes(ps.f.slice(0, 2)); + if (startsWithOo) { + pSplit = 1; + fSplit = 2; + return { + p: `و${ps.p}`, + f: `wU${ps.f}`, + }; + } + const startsWithEe = ["ée", "ee"].includes(ps.f.slice(0, 2)) && ps.p.slice(0, 2) === "ای"; + const startsWithE = ["e", "é"].includes(ps.f[0]) && ps.p.slice(0, 2) === "اې"; + if (startsWithEe || startsWithE) { + pSplit = 2; + fSplit = startsWithEe ? 3 : 2; + return { + p: `و${ps.p.slice(1)}`, + f: `w${ps.f}`, + }; + } + const startsWithO = ["ó", "o"].includes(ps.f[0]) && ps.p.slice(0, 2) === "او"; + if (startsWithO) { + pSplit = 1; + fSplit = 2; + return { + p: `و${ps.p}`, + f: `oo\`${ps.f}`, + }; + } + pSplit = 1; + fSplit = 2; + return { + p: `و${ps.p}`, + f: `oo${ps.f}`, + }; + } + const attachedOo = attachOo(s); + return { + ps: accentOnFront(attachedOo), + pSplit: entry.separationAtP ? entry.separationAtP : pSplit, + fSplit: entry.separationAtF ? entry.separationAtF : fSplit, + }; +} + +function ensureUnisexInflections(complement: T.DictionaryEntry): T.UnisexInflections { + const inflected = inflectWord(complement); + const isUnisex = inflected && (("masc" in inflected) && ("fem" in inflected)); + if (isUnisex) { + return inflected as T.UnisexInflections; + } + const word = makePsString(complement.p, firstPhonetics(complement.f)); + return { + masc: [ + [word], + [word], + [word], + ], + fem: [ + [word], + [word], + [word], + ], + }; +} + +function getDynamicAuxVerb(entry: T.DictionaryEntry): { + entry: T.DictionaryEntry, + complement?: T.DictionaryEntry, +} { + const auxWord = entry.p.trim().split(" ").slice(-1)[0]; + const auxWordResult = dynamicAuxVerbs.find((a) => a.entry.p === auxWord); + /* istanbul ignore next */ + if (!auxWordResult) { + throw new Error("unknown auxilary verb for dynamic compound"); + } + return { + entry: auxWordResult.entry, + ...("complement" in auxWordResult) ? { + complement: auxWordResult.complement, + } : {}, + }; +} + +function getComplementPerson( + complement: T.DictionaryEntry, + usesSeperatePluralForm?: boolean, +): T.Person { + const number = ( + (complement.c && complement.c.includes("pl.")) || usesSeperatePluralForm + ) ? "plural" : "singular"; + const gender = (complement.c && complement.c.includes("n. m.")) ? "masc" : "fem"; + return getPersonNumber(gender, number); +} + +function makeDynamicPerfectiveSplit(comp: T.PsString, auxSplit: T.SplitInfo): T.SplitInfo { + if ("mascSing" in auxSplit) { + return { + mascSing: makeDynamicPerfectiveSplit(comp, auxSplit.mascSing) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>, + mascPlur: makeDynamicPerfectiveSplit(comp, auxSplit.mascPlur) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>, + femSing: makeDynamicPerfectiveSplit(comp, auxSplit.femSing) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>, + femPlur: makeDynamicPerfectiveSplit(comp, auxSplit.femPlur) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>, + }; + } + if ("long" in auxSplit) { + return { + long: makeDynamicPerfectiveSplit(comp, auxSplit.long) as [T.PsString, T.PsString], + short: makeDynamicPerfectiveSplit(comp, auxSplit.short) as [T.PsString, T.PsString], + ...auxSplit.mini ? { + mini: makeDynamicPerfectiveSplit(comp, auxSplit.mini) as [T.PsString, T.PsString], + } : {}, + }; + } + return [ + concatPsString(comp, " ", auxSplit[0]), + auxSplit[1], + ]; +} \ No newline at end of file diff --git a/src/library.ts b/src/library.ts new file mode 100644 index 0000000..7c2bb0b --- /dev/null +++ b/src/library.ts @@ -0,0 +1,84 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + import { + conjugateVerb, +} from "./lib/verb-conjugation"; +import { + inflectWord, +} from "./lib/pashto-inflector"; +import { + getVerbInfo, +} from "./lib/verb-info"; +import ConjugationViewer from "./components/ConjugationViewer"; +import InflectionsTable from "./components/InflectionsTable"; +import Pashto from "./components/Pashto"; +import Phonetics from "./components/Phonetics"; +import InlinePs from "./components/InlinePs"; +import ButtonSelect from "./components/ButtonSelect"; +import VerbFormDisplay from "./components/VerbFormDisplay"; +import VerbTable from "./components/VerbTable"; +import Examples from "./components/Examples"; +import VerbInfo, { RootsAndStems } from "./components/verb-info/VerbInfo"; +import { + addToForm, + concatPsString, + makePsString, + removeFVariants, +} from "./lib/p-text-helpers"; +import { standardizePashto } from "./lib/standardize-pashto"; +import { + convertAfToPkSpelling, + convertPkToAfSpelling, +} from "./lib/convert-spelling"; +import { + dictionaryEntryBooleanFields, + dictionaryEntryNumberFields, + dictionaryEntryTextFields, +} from "./lib/fields"; +import { + validateEntry +} from "./lib/validate-entry"; +import defaultTextOptions from "./lib/default-text-options"; +import * as grammarUnits from "./lib/grammar-units"; +import * as Types from "./types"; + +export { + // FUNCTIONS + conjugateVerb, + getVerbInfo, + inflectWord, + addToForm, + concatPsString, + makePsString, + removeFVariants, + standardizePashto, + convertAfToPkSpelling, + convertPkToAfSpelling, + validateEntry, + // COMPONENTS + ConjugationViewer, + Examples, + VerbFormDisplay, + VerbTable, + VerbInfo, + RootsAndStems, + InflectionsTable, + Pashto, + Phonetics, + InlinePs, + ButtonSelect, + // OTHER + grammarUnits, + defaultTextOptions, + dictionaryEntryTextFields, + dictionaryEntryNumberFields, + dictionaryEntryBooleanFields, + // TYPES + Types, +} \ No newline at end of file diff --git a/src/logo.svg b/src/logo.svg new file mode 100644 index 0000000..9dfc1c0 --- /dev/null +++ b/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts new file mode 100644 index 0000000..6431bc5 --- /dev/null +++ b/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/src/setupTests.js b/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..a3342c1 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,387 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +export type PsStringField = "p" | "f"; +export type PsString = { + [k in PsStringField]: string; +} & { + e?: string; +}; + +export type DictionaryInfo = { + title: string; + license: string; + release: number; + numberOfEntries: number; + url: string; + infoUrl: string; +} + +export type Dictionary = { + info: DictionaryInfo; + entries: DictionaryEntry[]; +} + +export type DictionaryEntry = { + // BASE REQUIRED INFO + ts: number; // timestamp + i: number; // Pashto Alphabetical Index + p: string; // Pashto word + f: string; // Phonetics word + e: string; // English word + // PART OF SPEECH AND LINK INFO + c?: string; // Part of Speech Info + l?: number; // timestamp link to related word + // INFLECTION INFO + infap?: string; // Special (irregular) inflection info + infaf?: string; + infbp?: string; + infbf?: string; + noInf?: boolean; // No Inflections? + // PLURAL INFO + app?: string; // Arabic plural in Pashto + apf?: string; // Arabic plural in Phonetics + ppp?: string; // Pashto plural in Pashto + ppf?: string; // Pashto plural in Phonetics + // VERB INFO + psp?: string; // Present stem in Pashto + psf?: string; // Present stem in Phonetics + /** The subjuctive / perfective stem in Pashto */ + ssp?: string; + /** The subjunctive / perfective stem in Phonetics */ + ssf?: string; + prp?: string; // Perfective root in Pashto + prf?: string; // Perfective root in Phonetics + /** The past participle in Pashto */ + pprtp?: string; + /** The past participle in Phonetics */ + pprtf?: string; + /** The idiosyncratic third person singular masc. short past in Pashto */ + tppp?: string; + /** The idiosyncratic third person singular masc. short past in Phonetics */ + tppf?: string; + shortIntrans?: boolean; // Short version is available like ګرځېږي and ګرځي + noOo?: boolean; // No و - oo verb prefix? + sepOo?: boolean; // Separate oo prefix? + separationAtP?: number; // Pashto separation point for separable verbs + separationAtF?: number; // Phonetics separation point for separable verbs + // PHONETICS - PASHTO - DIACRITICS INFO + diacExcept?: boolean; // Is an exception to the diacritics thing +} + +export type DictionaryEntryTextField = "p" | "f" | "e" | "c" | "infap" | "infaf" | "infbp" | "infbf" | "app" | "apf" | "ppp" | "ppf" | "psp" | "psf" | "ssp" | "ssf" | "prp" | "prf" | "pprtp" | "pprtf" | "tppp" | "tppf"; +export type DictionaryEntryBooleanField = "noInf" | "shortIntrans" | "noOo" | "sepOo" | "diacExcept"; +export type DictionaryEntryNumberField = "ts" | "i" | "l" | "separationAtP" | "separationAtF"; +export type DictionaryEntryField = DictionaryEntryTextField | DictionaryEntryBooleanField | DictionaryEntryNumberField; + +export type DictionaryEntryError = { + errors: string[], + p: string, + f: string, + e: string, + ts: number, + erroneousFields: DictionaryEntryField[], +} + +export type TextOptions = { + pTextSize: "normal" | "larger" | "largest"; + phonetics: "lingdocs" | "ipa" | "alalc" | "none"; + dialect: "standard" | "peshawer" | "southern"; + spelling: "Afghan" | "Pakistani"; + diacritics: boolean; +} + +export enum Person { + FirstSingMale = 0, + FirstSingFemale, + SecondSingMale, + SecondSingFemale, + ThirdSingMale, + ThirdSingFemale, + FirstPlurMale, + FirstPlurFemale, + SecondPlurMale, + SecondPlurFemale, + ThirdPlurMale, + ThirdPlurFemale, +} + +// INPUT +// all information to be passed to conjugating functions +export type VerbInfoBase = { + transitivity: Transitivity; + yulEnding: boolean | null; + stem: VerbStemSet; + root: VerbRootSet; + participle: ParticipleSet; + idiosyncraticThirdMascSing?: ShortThirdPersFormSet; +} + +export type SimpleVerbInfo = VerbInfoBase & { + type: "simple"; +} + +export type StativeCompoundVerbInfo = VerbInfoBase & { + type: "stative compound" + complement: UnisexInflections; +} + +export type GenerativeStativeCompoundVerbInfo = VerbInfoBase & { + type: "generative stative compound" + objComplement: ObjComplement, + singularForm?: GenerativeStativeCompoundVerbInfo, + // TODO: Could add intransitive form 🤪 +} + +export type DynamicCompoundVerbInfo = VerbInfoBase & { + type: "dynamic compound"; + objComplement: ObjComplement; + auxVerb: DictionaryEntry; + auxVerbComplement?: DictionaryEntry; + singularForm?: DynamicCompoundVerbInfo; + intransitiveForm?: DynamicCompoundVerbInfo; +} + +export type ObjComplement = { + entry: DictionaryEntry; + plural?: PsString; + person: Person; +} + +export type NonComboVerbInfo = SimpleVerbInfo | + StativeCompoundVerbInfo | DynamicCompoundVerbInfo | GenerativeStativeCompoundVerbInfo; + +export type VerbInfo = NonComboVerbInfo | { + type: "transitive or grammatically transitive simple"; + transitive: SimpleVerbInfo; + grammaticallyTransitive: SimpleVerbInfo; +} | { + type: "dynamic or stative compound"; + transitivity: Transitivity; + stative: StativeCompoundVerbInfo; + dynamic: DynamicCompoundVerbInfo; +} | { + type: "dynamic or generative stative compound"; + transitivity: Transitivity; + stative: GenerativeStativeCompoundVerbInfo; + dynamic: DynamicCompoundVerbInfo; +} + +export type Transitivity = "transitive" | "intransitive" | "grammatically transitive"; + +export type SplitInfo = FullForm<[PsString, PsString]>; + +export type VerbStemSet = { + perfective: FullForm; + imperfective: FullForm; + perfectiveSplit?: SplitInfo; +} + +export type VerbRootSet = { + perfective: OptionalPersonInflections>; + imperfective: OptionalPersonInflections>; + perfectiveSplit?: SplitInfo; +} + +export type ParticipleSet = { + present: FullForm, + past: FullForm, +} + +export type ShortThirdPersFormSet = { + [K in Aspect]: PsString; +} + +export type Aspect = "perfective" | "imperfective"; + +export type Length = "short" | "long" | "mini"; + +export type LengthOptions = { + long: T; + short: T; + mini?: T; +} + +export type PersonInflectionsField = "mascSing" | "mascPlur" | "femSing" | "femPlur"; +export type OptionalPersonInflections = { + [K in PersonInflectionsField]: T; +} | T; + +export type SingleOrLengthOpts = T | LengthOptions; + +export type VerbConjugation = { + info: NonComboVerbInfo, + // INFINITIVE = info.root.imperfective.long + imperfective: AspectContent; // --╖ ASPECT = "imperfective" + perfective: AspectContent; // --╜ ASPECT = "perfective" + hypothetical: VerbForm; // INFINITIVE - ul + aay + participle: ParticipleContent; + perfect: PerfectContent; // PPART = PAST PARTICIPLE (plus spectial short forms) + passive?: PassiveContent; // only on transitive verbs + singularForm?: VerbConjugation; +} + +export type VerbOutput = VerbConjugation | { + info: VerbInfo, + stative: VerbConjugation, + dynamic: VerbConjugation, +} | { + info: VerbInfo, + transitive: VerbConjugation, + grammaticallyTransitive: VerbConjugation, +}; + +export type PassiveContent = { + imperfective: AspectContentPassive // --╖ ASPECT = "imperfective" + perfective: AspectContentPassive // --╜ ASPECT = "perfective" + perfect: PerfectContent; // PPART INFINITIVE + kedulStat perfect.pastParticiple + // TODO: ADD PARTICIPLE +} + +// ASPECT -> AspectContent +export type AspectContent = { + // STEM = info.stem[ASPECT] + // ROOT = info.root[ASPECT] + nonImperative: VerbForm; // STEM + pres ending + future: VerbForm; // به + this.nonImperative + imperative?: ImperativeForm; // STEM + imperative ending + // -- optional because not used for intransitive verison of kawul dynamic compounds + past: VerbForm; // ROOT + past ending + modal: ModalContent; +} + +export type ModalContent = { + nonImperative: VerbForm; // ROOT + ey + kedulStat.perfective.nonImperative + future: VerbForm; // به + this.nonImperative + past: VerbForm; // ROOT + ey + kedulStat.perfective.past + hypotheticalPast: VerbForm; // ROOT + ey + shw + ey +} + +// ASPECT -> AspectContentPssive +export type AspectContentPassive = { + // ROOT = info.root[ASPECT] + nonImperative: VerbForm; // ROOT LONG + kedulStat[ASPECT].nonImperative + future: VerbForm; // ba + this.nonImperative + past: VerbForm; // ROOT LONG + kedulStat[ASPECT].past +} + +export type ParticipleForm = SingleOrLengthOpts | SingleOrLengthOpts; + +export type ParticipleContent = { + past: SingleOrLengthOpts | SingleOrLengthOpts, + // TODO: Should this ever have an object matrix?? + present: SingleOrLengthOpts, +} + +// PPART -> PerfectContent +export type PerfectContent = { + halfPerfect: VerbForm; // PPART + past: VerbForm; // PPART + equative.past + present: VerbForm; // PPART + equative.prest + subjunctive: VerbForm; // PPART + equative.subj + future: VerbForm; // ba + PPART + equative.subj + affirmational: VerbForm; // ba + PPART + equative.past + pastSubjunctiveHypothetical: VerbForm; // PPART + waay +} + +export type UnisexInflections = { + masc: ArrayFixed, 3>, + fem: ArrayFixed, 3>, +} + +export type Inflections = UnisexInflections | { + masc: ArrayFixed, 3>, +} | { + fem: ArrayFixed, 3>, +} + +export type PersonLine = [ + /** singular form of person */ + ArrayOneOrMore, + /** plural form of person */ + ArrayOneOrMore, +]; + +/** + * The basic form of a verb conjugation + * Each line representing one person (singular and plural) + * 1st Person Male, 1st Person Female, 2nd Person Male etc... + */ +export type VerbBlock = [ + PersonLine, // 1st Person Male + PersonLine, // 1st Person Female + PersonLine, // 2nd Person Male + PersonLine, // 2nd Person Female + PersonLine, // 3rd Person Male + PersonLine, // 3rd Person Female +]; + +export type EnglishBlock = [ + [string, string], + [string, string], + [string, string], + [string, string], + [string, string], + [string, string], +]; + +export type ImperativeBlock = [ + PersonLine, // 2nd Person Male + PersonLine, // 2nd Person Female +]; + +export type FullForm = OptionalPersonInflections>; +export type VerbForm = FullForm; +export type ImperativeForm = FullForm; +export type SentenceForm = SingleOrLengthOpts>; + +export interface ArrayFixed extends Array { + 0: T; + length: L; +} + +export type ArrayOneOrMore = { + 0: T +} & Array + +export type DisplayFormItem = DisplayForm | DisplayFormSubgroup | DisplayFormForSentence; + +export type DisplayForm = { + label: string, + aspect?: Aspect, + form: VerbForm | ImperativeForm | ParticipleForm | SentenceForm, + advanced?: boolean, + formula: React.ReactNode, + explanation: React.ReactNode, + sentence?: boolean, + passive?: boolean, + past?: boolean, + reorderWithNegative?: boolean, +} +export type DisplayFormForSentence = { + label: string, + aspect?: Aspect, + form: VerbForm, + advanced?: boolean, + formula: React.ReactNode, + secondPronounNeeded?: boolean, + explanation: React.ReactNode, + sentence?: boolean, + passive?: boolean, + past?: boolean, + reorderWithNegative?: boolean, +} + +export type DisplayFormSubgroup = { + label: string, + subgroup: string, + advanced?: boolean, + content: DisplayFormItem[], +} + +export type AayTail = "ey" | "aay"; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..72b911c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "downlevelIteration": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/verbs/dyn-comp-trans.js b/verbs/dyn-comp-trans.js new file mode 100644 index 0000000..9f92e51 --- /dev/null +++ b/verbs/dyn-comp-trans.js @@ -0,0 +1,142 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +module.exports = [ + 1527816643, // استعفا کول - to resign, to quit (a job or position) + 1527817823, // اصرار کول - to insist, persist, demand + 1591002320547, // امر کول - to order, command + 1527821339, // انتظار کول - to wait + 1527817226, // اندازه لګول - to guess, to estimate + 1527812167, // انکار کول - to deny, to renounce, to not recognize + 1527812598, // ایمان راوړل - to beileve, have faith (du chaa baande / د چا باندې) + 1527812002, // برخه اخستل - to take part in, to participate, to join in + 1527813489, // پرهېز کول - to abstain, fast + 1577390517316, // پرېکړه کول - to decide + 1527820710, // پناه اړول - to take/seek refuge + 1527817312, // پوښتنه کول - to ask + 1527818188, // پیروي کول - to follow, obey (usually a religious teacher or leader) + 1527811863, // تاوان رسول - to harm, damage + 1527816383, // تپوس کول - to ask, to question, to request + 1527822770, // ترپکې وهل - to stamp (feet), to tread, to tap one’s foot + 1527821587, // ترحم کول - to feel pity, to have sympathy, to feel sorry for someone + 1527818390, // تشریف راوړل - to come (when speaking about someone w/ respect) + 1527818391, // تشریف وړل - to go (when speaking about someone w/ respect) + 1527814726, // تصمیم نیول - to make a decision + 1579394718033, // تصور کول - to imagine, suppose + 1527815968, // تکیه کول - to rely on, to depend on + 1592303372377, // تلاوت کول - to read (relgious, usually the Quran) + 1577551342853, // تمرکز کول - to concentrate, focus (په يوه شي باندې) + 1527815351, // توبه ایستل - to repent + 1586452103064, // توجه کول - to pay attention to, to consider + 1527816822, // توکل کول - to count on, hope for, depend on + 1527812186, // تیاري نیول - to prepare + 1527814870, // ټوپونه وهل - to jump + 1527815355, // ټوکې کول - to joke, tease, make fun of + 1527815867, // ټینګار کول - to emphasize, to insist + 1527822741, // جیټکه خوړل - to be jolted, surprised + 1527814864, // ځان وژل - to commit suicide + 1527819607, // چرت وهل - to think about something, reflect on something, worry about something + 1527821070, // چکر وهل - to stroll, walk around + 1577812269585, // چمچه ګیري کول - to suck up to, to flatter + 1573768865232, // چنې وهل - to barter, bargain (for a price) + 1527822814, // حسد کول - to be envious, to be jealous + 1527823161, // حفاظت کول - to protect, guard + 1527821042, // حمایه کول - to support, aid, protect, back + 1527818810, // حیا کول - to be bashful, modest, observing of Islamic rules of modesty + 1577823792516, // خدمت کول - to serve (د چا خدمت کول) + 1588858155947, // خېز وهل - to jump, leap, bob up and down + 1589024311021, // دافع کول - to defend (د ځان دفاع کول - to defend oneself) + 1527816916, // دفاع کول - to defend, protect + 1527820291, // ډغره وهل - to challenge, invite to engage in a contest, confront, provoke + 1527813125, // ذکر کول - to mention, refernce, remark, refer to + 1527813937, // روژه نیول - to fast + 1591804639647, // روغه کول - to reconcile, to make peace + 1527813212, // زاري کول - to plea, ask, request, beg + 1584529741244, // زړه ساتل - to hold back and not say what you're really thinking + 1575128717139, // زړه وهل - to feel hesitancy about some action or thing (د دې کار څخه زړه وهي); to satiate + 1527813319, // زنګ وهل - to ring, phone, call (Afghanistan) + 1527822368, // زیاتي کول - to do injustice, oppression (to someone) (د چا سرس زياتي کول) + 1527819178, // زیان رسول - to damage, to cause harm + 1594129207239, // سا اخستل - to breathe + 1594129204513, // سا اخیستل - to breathe + 1527815309, // سبق وایل - to study, go to school + 1527814102, // ست کول - to invite, to make an offer out of politeness (د ډوډۍ ست مې ورته وکړ) + 1527818975, // سترګه وهل - to wink, to blink + 1578326320888, // سجده لګول - to bowing down to the ground, to prostrating (in religion) + 1527816152, // سر ټکول - complain, gripe + 1527816463, // سوله کول - to make peace, to reconcile + 1527818094, // سیل کول - to stroll through, go on a walk or tour through, to see, watch, examine, survey, visit, tour + 1527814855, // شپېلۍ وهل - to play the flute, fife, reed, to whistle + 1527819033, // شکایت کول - to complain, to express a grievance + 1577817988469, // شکست خوړل - to be defeated, to experience defeat + 1527819185, // صبر کول - to be patient, to bear up and endure under difficult or painful circumstances + 1527814887, // صفت کول - to praise; admire, glorify + 1527818217, // طرفداري کول - to support, adhere to, pick a side, stand up for something or someone + 1571946107980, // ظلم کول - to be cruel to, to oppress, to do voilence against, to persecute (د چا باندې ظلم کول) + 1581610643511, // عبادت کول - to worship, pray + 1527811674, // عمل کول - to act, to put into practice; to do something addicting (like smoking), to do out of habit + 1581610659810, // غچ اخیستل - to take revenge + 1527818401, // غرض کول - to interfere, to meddle, to step in + 1592303194144, // غږ کول - to call out, to say something, make a sound + 1578607689918, // غلا کول - to steal + 1527818341, // غمرازي کول - to share in someone’s sorrow, to show sympathy or give condolences + 1527818425, // غوټه اچول - to tie, fasten, hitch + 1527818422, // غوټه وهل - to dive, dip, go into water + 1527812633, // غوږ نیول - to listen + 1527816328, // غیبت کول - to gossip + 1588784260692, // فال اچول - to do fortune telling, divination + 1527812607, // فکر کول - to think + 1527822096, // قدم وهل - to take a step, to walk + 1588152878869, // قرباني کول - to make a sacrifice + 1527817624, // قسم خوړل - to take an oath, vow, to swear + 1527812732, // کار کول - to work + 1527811600, // کوشش کول - to try, to attempt, to put in effort + 1527819661, // ګپ لګول - to talk, converse; to joke + 1527814357, // ګډون کول - to participate, join, be involved + 1582146016627, // ګذاره کول - to get by, make ends meet, deal with something, handle or get some task done (with difficulty or not quite in the ideal way), to bear with, to be tolerant or forgiving + 1527819872, // ګمان کول - to think, to suppose + 1579034883717, // لاړې تېرول - to spit ?? (other fluids too??) + 1527817357, // لاس وړل - to touch + 1527818937, // لامبو وهل - to swim, bathe + 1527813950, // لحاظ کول - to be considerate of, pay attention to someone or something, to be polite, to show deference or respect to someone + 1527813888, // لغته وهل - to kick + 1527822099, // لمس کول - to touch, motivate, instigate + 1588760636420, // لوظ کول - to promise, give one's word + 1527819089, // ماته خوړل - to be defeated, beaten by someone + 1527817361, // مخ اړول - to turn (one’s face), to face, (when turning from someone or people) to neglect, (when turning to someone or people) to pay attention to + 1527812934, // مخه نیول - to prevent, hold back + 1588161314887, // مرسته کول - to help, assist + 1527817165, // مزدوري کول - to do labour, to work + 1609162269829, // مزې کول - to be enjoyable, to have good taste (the thing that gives enjoyment/taste "does maza"), to have fun + 1579295606403, // ملاتړ کول - to support (ie. a political party etc.) + 1589031340746, // موټر چلول - to drive a car + 1527812902, // مینه کول - to love + 1527817369, // ناره وهل - to cry out, to yell, to yell a chant or slogan + 1527819687, // نارې کول - to cry out, shout (ناره) + 1527821254, // نافرماني کول - to disobey, to not comply, to rebel + 1527817709, // نجات موندل - to be saved, to find salvation + 1527823208, // نفرت کول - to hate, abhor + 1527811827, // نفس ایستل - breath in, inhale; kill + 1579459605988, // نقصان کول - to suffer loss + 1527815991, // ننداره کول - to behold, to spectate, to watch, to take in + 1527823707, // نیالګی کېنول - to plant a sapling, young tree + 1527811729, // نیوکه کول - to criticize + 1527823733, // هجرت کول - to migrate, resettle + 1527820620, // هجوم کول - to swarm, rush, attack + 1527811599, // هڅه کول - to try, to attempt, to put in effort + 1604431102462, // هدایت کول - to guide, show the true path, give revelation leading to truth + 1527818092, // همکاري کول - to collaborate, to work together, to aid/help + 1527816106, // وده کول - to grow, develop, improve, rise + 1579723460957, // ورزش کول - to de exercise, athletics + 1527814910, // وعده کول - to promise + 1527816263, // وفا کول - to be faithful, to keep one's promise + 1609162463793, // واده کول - to marry, get married + 1609599425410, // دعا کول - to pray + 1527812939, // منډې وهل - to run + 1614602054303, // بدله اخیستل - to take revenge +] diff --git a/verbs/simple-gramm-trans.js b/verbs/simple-gramm-trans.js new file mode 100644 index 0000000..aad35a5 --- /dev/null +++ b/verbs/simple-gramm-trans.js @@ -0,0 +1,23 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +module.exports = [ + 1577383674332, // انګولل - to howl, wail + 1527818962, // پرنجل - to sneeze + 1527821425, // ټوخل - to cough + 1527812767, // خندل - to laugh + 1605360223155, // دنګل - to jump, leap, run, race + 1605360127430, // زنګل - to swing, rock (back and forth) + 1527812717, // ژړل - to cry + 1591899573844, // نڅل - to dance + 1577049208257, // اورېدل - to hear + 1527812362, // فرمایل - to declare + 1527812751, // کتل - to look + 1527815396, // وایل - to say + 1527817013, // ویل - to say +] diff --git a/verbs/simple-intrans.js b/verbs/simple-intrans.js new file mode 100644 index 0000000..21cc11b --- /dev/null +++ b/verbs/simple-intrans.js @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +module.exports = [ + 1527813473, // الوتل - to fly + 1527814012, // اوښتل - to pass over, overturn, be flipped over, spill over, shift, change, diverge, pass, cross, abandon + 1527822843, // برېښېدل - to appear, seem; to shine, sparkle; to smart, have a pricking pain + 1527815183, // پوهېدل - to understand (to do the act of understanding) + 1527816495, // تښتېدل - to run off, escape, flee + 1527811442, // توانېدل - become able, become strong or good enough to… + 1527813022, // ټوخېدل - to cough + 1527817259, // پرېوتل - to fall + 1577572987826, // جنګېدل - to fight, battle, war, to bump or crash into + 1527818535, // ځړېدل - to hang, to be hung, to be lowered + 1527812273, // ځلېدل - to shine, glow, glitter + 1577921634357, // ځنډېدل - to be delayed, postponed, held back, detained + 1527814025, // ختل - to climb, ascend, rise, go up; to fall out, to fall off, to leave/dissapear; to turn out to be ... + 1527823376, // وتل - to go out + 1527814433, // خوځېدل - to shake, tremble, wiggle, move, vibrate + 1527818980, // رپېدل - to quiver, shake, flutter, shiver + 1578191534500, // رحمېدل - to have mercy on, to have compassion on + 1527813573, // رسېدل - reach, arrive; (fig.) understand, attain to; mature, ripen + 1527813710, // زېږېدل - to be born, to appear, arise + 1527813837, // سوځېدل - to burn + 1527814597, // شرمېدل - to be ashamed, to be embarrassed, to be shy + 1527821558, // شړېدل - to be decomposed, break down, fall apart; to be boiled soft (meat) + 1527811516, // شلېدل - to be torn, broken, rent, broken, severed + 1527812615, // غځېدل - stretch out, lie, be extended, expand + 1527813680, // غږېدل - to converse, speak, talk, sing + 1527814867, // غورځېدل - to jump, leap, fall + 1578682066756, // غوړېدل - to be spread, extended, opened, unfolded; to fall with arms flailing; to blossom, to be set with mines (military) + 1527823696, // غولېدل - to be deceived, cheated, fooled + 1527812759, // کېناستل - to sit + 1527812645, // ګرځېدل - to walk, wander, turn about; to become, to be + 1527814430, // لړزېدل - to shake, shudder, tremble, vibrate + 1527814085, // لګېدل - to be busy or in motion, to be spent, to flare up, to hit, crash, touch, to suit / fit / conform, to seem + 1527813994, // لوېدل - to fall, to tumble, go down, settle + 1527823019, // وېرېدل - to be afraid, scared, to fear + 1581086654898, // کېدل - to become _____ + 1527812754, // کېدل - to happen, occur + 1527815348, // تلل - to go + 1527815216, // راتلل - to come + 1527819674, // څملاستل - to lie down +] diff --git a/verbs/simple-trans.js b/verbs/simple-trans.js new file mode 100644 index 0000000..e3ea24d --- /dev/null +++ b/verbs/simple-trans.js @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +module.exports = [ + 1527814617, // نیول - to take + 1527811872, // اچول - to put, pour, drop, throw, put on + 1527817298, // اخیستل - to take, buy, purchase, receive; to shave, cut with scissors + 1527816127, // اړول - to turn over, flip over; convert, change; to move over to, establish oneself in a new spot; divert, turn away, hijack + 1527811605, // ازمویل - to attempt, try; to experiment, test + 1527812458, // استول - to send + 1527811397, // اغوستل - to wear, to put on (clothes) + 1527816125, // الوزول - to make fly, to toss, to release (birds); to blow up + 1527816146, // ایستل - to throw out, discard, chuck, toss; to extract, to take out + 1527817786, // بخښل - to forgive, to pardon + 1527816092, // بلل - to call, invite; to consider, deem + 1577389204616, // پرانیستل - to open; to undo; to initiate + 1527819396, // پرځول - to throw down, to topple, overcome, wrestle to the ground + 1527816874, // پلورل - to sell + 1527813647, // پوښتل - to ask, question + 1527815190, // پرېښودل - to quit + 1527815216, // راتلل - to come + 1527812284, // کېښودل - to put + 1577394422280, // پوهول - to explain, to try to make understand + 1527815165, // پېژندل - to recognize, know, meet + 1527813405, // تړل - to connect, tie, bind, close + 1527816494, // تښتول - to drive off, steal, abduct, kidnap + 1527813394, // ټاکل - to select, appoint + 1527821498, // ټکول - to knock, pound, crush, grind, hammer + 1527818537, // ځړول - to hang, to suspend, to lower down, to let down + 1527813046, // ځنډول - to delay, to postpone, to hold back, to detain + 1527813755, // ځورول - to bother, irritate, torture, distress, vex, grind on + 1527814586, // چلول - to drive, operate, handle, put forward, circulate + 1527816564, // چیچل - to bite, chew, grind (teeth), clench (teeth), sting + 1527812790, // خوړل - to eat, to bite + 1527823551, // خېژول - load, upload, boost, cause to climb, cause to get on/in (a boat etc.) + 1527815489, // داړل - to bite, tear, gnaw + 1527812544, // درول - to stop (active, causative); to stand, set up, put in place; to bring in, introduce; to advance/field (an army/troops) + 1527816533, // رټل - to tell off, berate, banish, drive off + 1527813572, // رسول - to deliver, to make arrive, provide, send, supply, bring to, + 1527819880, // رېبل - to reap, harvest + 1527816064, // زغمل - to endure, bear, tolerate, take on, digest + 1527811485, // زېږول - to give birth, to bear, create + 1527813637, // ستایل - to praise, commend, glorify, mention + 1527817750, // سکل - to drink + 1527811625, // سنجول - to think over, deliberate, examine, think, develop + 1527813831, // سوځول - to cause to burn, set on fire + 1527814596, // شرمول - to shame, to disgrace, to dishonor + 1527814908, // شړل - to drive out, fire, evict, push out + 1527815531, // شکول - to tear, to break of, to dig up, to pull out + 1527815296, // شمارل - to count + 1527815273, // شمېرل - to count + 1527811293, // ښودل - to show; to teach; to suit, look good with (fig.), befit + 1527817865, // غځول - to extend, to stretch out, to expand + 1527817622, // غړول - to open or roll (the eyes) + 1527820150, // غږول - to make a sound, pronounce, to sing, to play (an instrument), to resound; to make someone talk, to get information + 1527815886, // غندل - to condemn, reproach, to criticize + 1527816122, // غورځول - to throw, hurl, fling + 1527812627, // غوښتل - to want, to request + 1527819301, // غولول - to deceive, cheat, fool + 1527813568, // کارول - to use, utilize + 1527816300, // کرل - to sow, to plant + 1527819378, // کندل - to dig + 1527811289, // کېنول - to seat, to make or have someone sit down + 1527817661, // ګالل - to bear up under (diffucult things), to suffer, to take, to endure + 1527812649, // ګټل - to earn (money), to win + 1527812612, // ګنډل - to sew, mend, make, knit + 1527812000, // ګڼل - to count, consider, reckon, suppose, assume + 1527822144, // ګواښل - to threaten + 1527812873, // لوستل - to read, study + 1527816453, // ګومارل - to appoint, assign, delegate; load, charge + 1527812869, // لټول - to search, seek + 1527818206, // لړزول - to shake, rattle, cause to shake + 1527813866, // لېږل - to send + 1527812856, // لیکل - to write + 1527815085, // منل - to accept, to believe + 1527815399, // وهل - to hit + 1527823020, // وېرول - to make afraid, to scare, to make fear + 1527811701, // وېشل - divide, distribute, share + 1579015359582, // کول - to make ____ ____ (as in "He's making me angry.") + 1527812752, // کول - to do (an action or activity) + 1527816865, // وړل + 1527815214, // راوړل - to bring + 1527819827, // راوستل - to bring + 1527812275, // لیدل - to see +] diff --git a/verbs/stative-comp-intrans.js b/verbs/stative-comp-intrans.js new file mode 100644 index 0000000..b6f6953 --- /dev/null +++ b/verbs/stative-comp-intrans.js @@ -0,0 +1,139 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +module.exports = [ + 1588760879818, // احساسېدل - to feel, be sensed + 1577223176187, // ادا کېدل - to be set forth, given, rendered (service), performed, fulfilled, expressed, said, done + 1527814793, // اړېدل - to need, to be forced, to have to, to experience a need + 1527820761, // استعمالېدل - to be used, utilized, applied + 1527818887, // اموخته کېدل - to get used to, to get accustomed to, adjusted to, to become tame + 1527821797, // انتقال کېدل - to be transfered, to move; to die, to pass away + 1527822931, // اوده کېدل - to sleep, to be asleep + 1588853804403, // اوږدېدل - to get long, to drag out, to get longer + 1527813033, // ایسارېدل - to wait, wait (for), to be delayed, detained, stopped + 1527812404, // بچ کېدل - to be saved, spared; run off, escape, nip off + 1527814231, // بدلېدل - to be changed, replaced, exchanged, to undergo a change + 1527815729, // بلدېدل - to become familiar, acquainted, used to + 1527813842, // بلېدل - to burn, catch fire + 1527815032, // بندي کېدل - to become a prisoner, to get imprisoned + 1588781671306, // بندېدل - to be closed, blocked, stopped + 1527817582, // بېزارېدل - to be fed up with, tired of, repulsed by, dissatisfied with, done with, disgusted by + 1527815844, // بېلېدل - to be separated + 1588073731662, // پاکېدل - to be cleaned, become clean, to be cleansed, purified + 1527813895, // پټېدل - to hide, to be hidden + 1527812011, // پخلا کېدل - to be reconciled, brought to an agreement + 1581906176268, // پخېدل - to be cooked, prepared, ripened, matured + 1584689265872, // پستېدل - to become soft, tender, gentle, loosened + 1583269419054, // پورته کېدل - to be raised up, lifted up, brought up + 1527814169, // پورې کېدل - to cross, traverse, go to the other side + 1577394057681, // پوهېدل - to understand (to come to a state of understanding) + 1527815170, // پیدا کېدل - to be found, born + 1581189978440, // پېش کېدل - to be brought forward, presented, delivered + 1527815167, // پېښېدل - to happen, occur, come up + 1591872442272, // پیلېدل - to be started, begin + 1527815324, // تاوېدل - to turn, rotate (passive), to be wrapped, twisted + 1577398809240, // تباه کېدل - to be destroyed, ruined + 1582391432928, // تبدیلېدل - to change, to undergo change, to be transformed + 1580755448566, // ترکېدل - to be abondoned, left, refused + 1527821367, // تسلیمېدل - to surrender, capitulate; to be handed over, delivered, passed on + 1527814905, // تشېدل - to be emptied + 1527821358, // تصدیق کېدل - to be confirmed, affirmed, attested + 1527823430, // تقسیمېدل - to be divided, partitioned, distributed + 1577501138221, // تکرار کېدل - to be repeated + 1527814919, // تولیدېدل - to be produced, manufactured; to spring up, to be created, birthed + 1579644515886, // تویېدل - to be poured, shed, spilled, scattered, knocked down (fruit) + 1577571228633, // تیارېدل - to become ready, to become prepared, to get ready + 1577571096956, // ټولېدل - to be gathered, collected + 1577571391494, // ټیټېدل - to bow, stoop, go down + 1589019870271, // ټیک کېدل - to be corrected, made right + 1585310006948, // ثابتېدل - to be proven, established, made firm + 1527816202, // ثبتېدل - to be entered, saved, recorded, registered + 1527821166, // جارېدل - to be sacrificed, to be offered/at someone’s service + 1527816943, // جوتېدل - to become evident, clear, apparent, explained, established + 1527812713, // جوړېدل - to be made, formed, build, mended, become + 1577905544406, // ځایېدل - to fit, to fit into a space, to be accomodated + 1527812522, // چاپ کېدل - to be published, printed + 1527811694, // چاغېدل - to put on weight, to get fat + 1588783381414, // حاضرېدل - to show up, be present, appear; to be prepared, to get ready + 1527814126, // حلېدل - to be solved, resolved + 1588426001132, // حیرانېدل - to be amazed, astonished, shocked, surprized + 1527819313, // خارجېدل - to be exiled, dismissed, fired, extracted, processed + 1527816079, // خبرېدل - to be informed, to come to know + 1527811394, // خپرېدل - to be spread, dispersed, opened, unfolded, publicized, distributed + 1577900112011, // ختمېدل - to be finished, completed, ended, used up, killed, destroyed + 1527814184, // خرڅېدل - to be sold, to be spent + 1577898920635, // خفه کېدل - to be sad, grieved, annoyed, upset; to be choked, to suffocate + 1527818360, // خلاصېدل - to be freed, saved, rescued, opened + 1527814173, // خوږېدل - to hurt, to have pain + 1527817114, // خوشتېدل - to become damp, wet, moist + 1527812812, // خوښېدل - to be pleasing, happy, to be liked; to be chosen, selected + 1527816735, // داخلېدل - to enter, go in; to be included; to be enrolled + 1527815784, // درنېدل - to become heavier; to become more serious, respectable, reliable + 1577059043220, // دفن کېدل - to be buried + 1527817671, // ډکېدل - to fill up + 1527817257, // ډوبېدل - to drown, sink, dissapear, be submerged + 1527816895, // ډېرېدل - to increase, to become more, to be increased, to rise + 1527818346, // راپورته کېدل - to be raised up, to rise + 1527815734, // راټولېدل - to be brought together, gathered, collected, assembled + 1585474304911, // رغېدل - to become healthy, to heal, to get better, to recover, to be cured; to be built up; to be sewn, mended, repaired + 1527823278, // رنګېدل - to be painted, colored + 1527812410, // روانېدل - to get under way, to get going, to depart + 1527815236, // ړنګېدل - to be demolished, ruined, dissolved, disbanded + 1527817576, // زرغونېدل - to germinate, grow, flourish, develop + 1566120362058, // زړېدل - to get old, to age, to get worn out + 1527817668, // زیاتېدل - to become more, to grow in number + 1591033069786, // ستړی کېدل - to get tired, fatigued + 1527816404, // ستنېدل - to return go back; to be delayed, to linger + 1591782112190, // سمېدل - to become right, correct, get repaired, be fixed, be straightened out + 1527811948, // شریکېدل - to be shared, held in common; to participate in something, share in something, be involved + 1589883893191, // شړمېدل - to ba attached loosely, to become loose, lazy, flabby + 1527820128, // ښخېدل - to be buried, entombed; to be pierced, plunged, thrust into + 1527814077, // ښکارېدل - to become clear, evident, obvious; to appear, to seem + 1577057620783, // عادت کېدل - to get used to, to get accustomed to; to get addicted to + 1585475932743, // عذابېدل - to be tortured, tormented, punished, bothered, pained + 1527814972, // غرقېدل - to be sunk, immersed, plunged, lost + 1527821483, // غصه کېدل - to be angry, upset, distressed + 1578607410634, // غلطېدل - to make a mistake, to err, to be decieved, to stray from, to miscalculate + 1578683722262, // فارغېدل - to graduate; to become free from, finished from something, liberated + 1527823367, // قبلېدل - to be accepted, to be approved + 1578705585960, // قربانېدل - to be sacrificed + 1588074081731, // قرنطینېدل - to be quarentined + 1527811848, // کامیابېدل - to succed, to achieve success + 1578769047886, // کلکېدل - to become firm, solid, to be hardened, to solidify; to became staunch, secured + 1578769553469, // کمېدل - to decrease, become small, become less + 1527811975, // کڼېدل - to become deaf + 1573149364576, // ګډېدل - to be mixed, combined, blended, to meet, rejoin + 1527814821, // ګرمېدل - to become warm, to warm up, heat up + 1527819155, // ګمراه کېدل - to stray (from the path, the faith), to err + 1579034600343, // ګیرېدل - to be seized, caught, trapped, confined, imprisoned, beseiged, stuck + 1588152260378, // لرې کېدل - to be removed, put far away + 1527817122, // لندېدل - to dampen, moisten, soak, get wet + 1527817119, // لنډېدل - to be shortened, made short + 1527813947, // لویېدل - to grow up, to be raised up, to get big + 1527811901, // ماتېدل - to be broken, break, hurt badle, crumble + 1527814560, // مجبورېدل - to be compelled, forced, obligated + 1527820885, // مړېدل - to become full, to have one’s fill; (fig.) to grow cold towards, lose interest in + 1579295191646, // مقررېدل - to be appointed, assigned, delegated + 1579295944312, // ملامتېدل - to be condemned, blamed, guilty + 1527812920, // ملاوېدل - to meet, to be met, to be found, to be available + 1579387693725, // مینېدل - to fall in love + 1527815573, // نازلېدل - to befall, to come down, to be revealed, to be sent down + 1527811761, // ناکامېدل - to fail, to not succeed + 1527820482, // نسکورېدل - to be toppled over, brought down, ruined, shot down (ie. a plane), stoop down + 1527817763, // هېرېدل - to be forgotten (ستا نوم ما نه هېر شو – I forgot your name – lit, Your name was forgotten from me) + 1579721195157, // واردېدل - to be imported + 1527817238, // وچېدل - to become dry + 1589640142987, // ورکېدل - to get lost, dissapear + 1588153594269, // وړېدل - to become smaller, shrink + 1527812005, // وقفېدل - to be devoted, dedicated, given, donated, bequeathed + 1576947352743, // ویدېدل - to sleep + 1527819292, // ویښېدل - to awaken, become alert, wake up + 1527812941, // یادېدل - to be remembered, to be missed + 1527814768, // یخېدل - to chill, cool down, freeze + 1579824223049, // یو ځای کېدل - to be gathered, brought together, come together +] diff --git a/verbs/stative-comp-trans.js b/verbs/stative-comp-trans.js new file mode 100644 index 0000000..9129f50 --- /dev/null +++ b/verbs/stative-comp-trans.js @@ -0,0 +1,85 @@ +/** + * Copyright (c) 2021 lingdocs.com + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +module.exports = [ + 1527812403, // بچ کول - to save, protect, guard, spare, rescue, economize + 1577299232429, // بدلول - to change, to adapt, exchange, replace + 1527815728, // بلدول - to familiarize with, to acquaint, orient, to train + 1588781694450, // بندول - to close, block, stop + 1527821309, // بندول - to close, barricade, cut off, restrain, hold back + 1527815843, // بېلول - to separate + 1588073727998, // پاکول - to clean, cleanse, purify + 1527812010, // پخلا کول - to reconcile, to bring to an agreement + 1527820144, // پستول - to soften, knead, pulverize, dig over again + 1584689306281, // پستول - to make soft, tender, gentle, loosened + 1583269391864, // پورته کول - to raise up, lift up, bring up + 1577394118297, // پوهول - to make understand (to bring someone to the state of understanding) + 1571859113828, // پخول - to cook + 1527812385, // پیدا کول - to find, birth, create + 1581189437955, // پېش کول - to bring forward, present, deliver + 1527820021, // پېښول - to cause, provoke, bring on + 1591872434020, // پیلول - to start, begin + 1527815323, // تاوول - to turn, to twist (active, causative), to rotate (causative) to wrap up, wind up + 1527812388, // تباه کول - to destroy, ruin + 1580754885011, // ترکول - to abandon, leave, refuse + 1527821357, // تصدیق کول - to confirm, affirm, attest + 1577501129214, // تکرار کول - to repeat + 1527822697, // تولول - to weigh + 1579908304357, // تولول - to balance + 1579644522321, // تویول - to pour, shed, spill, scatter, knock down (fruit) + 1527815731, // ټولول - to gather, collect + 1589019863017, // ټیک کول - to correct, make right + 1527816201, // ثبتول - to enter, save, record, register + 1527821167, // جارول - to clean (with a brush), to warp (textiles); to sacrifice + 1527816945, // جوتول - to make clear, evident, apparent, explained, established + 1527816947, // جوتول - to harness, hitch up + 1527812712, // جوړول - to make, form, build, mend, fix + 1527817455, // ځایول - to place, put, accommodate, make room for, to make fit + 1527815074, // چاپول - to print, publish + 1527811693, // چاغول - to fatten up, to fatten, to make stout, plump + 1527816239, // خبرول - to inform, communicate, make known, notify + 1527811395, // خپرول - to spread, disperse, open, unfold, publicize, distribute + 1527812222, // ختمول - to finish, complete, end, use up, destroy, kill + 1527814183, // خرڅول - to sell, to spend, (fig.) to betray + 1577898915919, // خفه کول - to make sad, to grieve, to annoy; to choke, to make suffocate + 1592303701516, // خوږول - to sweeten, to make sweet, to delight, to give pleasure + 1527814174, // خوږول - to cause hurt, pain + 1527812811, // خوښول - to like, to choose, to select; to make happy + 1527813502, // درنول - to make heavier; to make serious, respectable, reliable + 1527811432, // دفن کول - to bury + 1527813665, // ډکول - to fill + 1527817258, // ډوبول - to cause to drown, to make sing, to submerge + 1527823503, // ډېرول - to increase, make more + 1527818347, // راپورته کول - to raise up + 1527823277, // رنګول - to paint, color + 1527813179, // ړنګول - to destroy, wreck, ruin, demolish, mess up, liquidate, disband + 1591033078746, // ستړی کول - to make tired, wear out + 1527813065, // ستنول - to return, to give back; to delay someone or something, to direct, to turn, to fix on + 1527811949, // شریکول - to make a participant or involved, to share, to bring someone or something in, to include + 1589883890933, // شړمول - to attach loosely, to cause to be loose, lazy, flabby + 1527814493, // غرقول - to sink, plunge, submerge, immerse + 1527823133, // غلطول - confuse, mix up, make a mistake; to go wrong, to stray from; to deceive, to lead into error; to distract, to be distracted + 1527823366, // قبلول - to accept, to approve + 1527820386, // کلکول - to make firm, hard solid, to fasten, to secure, to lock, to staunchly defend + 1527814819, // ګرمول - to warm, to heat up, to heat + 1579034597012, // ګیرول - to seize, catch, trap, confine, imprison, beseige, make stuck + 1588152253147, // لرې کول - to remove, put far away + 1527817121, // لندول - to make wet, moisten, to make damp, to soak + 1527817118, // لنډول - to shorten, to make short, abbreviate + 1527814350, // لویول - to raise, bring up (children) + 1527816012, // ماتول - to break, split, defeat + 1579387733916, // مینول - to cause to fall in love, to make to fall in love + 1527817762, // هېرول - to forget + 1589640176788, // ورکول - to lose/make lost, to misplace, to make dissapear, get rid off + 1527812004, // وقفول - to devote, dedicate, give, donate + 1579724723019, // ویدول - to put to sleep + 1579822065104, // ویښول - to wake up, to make awake, to make alert + 1527816559, // یادول - to remember, to recall, to think on, to call + 1527813556, // یو ځای کول - to gather, bring together + 1527815444, // زده کول - to learn, to teach +] diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..3b04d0e --- /dev/null +++ b/yarn.lock @@ -0,0 +1,11720 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.8.tgz#5b783b9808f15cef71547f1b691f34f8ff6003a6" + integrity sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog== + +"@babel/core@7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" + integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.9" + "@babel/helper-compilation-targets" "^7.13.10" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.10" + "@babel/parser" "^7.13.10" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.12.1", "@babel/generator@^7.13.0", "@babel/generator@^7.13.9": + version "7.13.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" + integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.8": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" + integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.13.0": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.10.tgz#073b2bbb925a097643c6fc5770e5f13394e887c9" + integrity sha512-YV7r2YxdTUaw84EwNkyrRke/TJHR/UXGiyvACRqvdVJ2/syV2rQuJNnaRLSuYiop8cMRXOgseTGoJCWX0q2fFg== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" + integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" + integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" + integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== + dependencies: + "@babel/types" "^7.13.0" + +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-hoist-variables@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" + integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== + dependencies: + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helper-member-expression-to-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" + integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== + dependencies: + "@babel/types" "^7.13.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" + integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + +"@babel/helper-remap-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" + integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" + integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helper-wrap-function@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" + integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/helpers@^7.12.1", "@babel/helpers@^7.13.10": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" + integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10", "@babel/parser@^7.7.0": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.10.tgz#8f8f9bf7b3afa3eabd061f7a5bcdf4fec3c48409" + integrity sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" + integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" + integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-decorators@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" + integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.12.1" + +"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" + integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" + integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" + integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a" + integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" + integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" + integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" + integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" + integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-compilation-targets" "^7.13.8" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.13.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" + integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz#e39df93efe7e7e621841babc197982e140e90756" + integrity sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" + integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-decorators@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" + integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" + integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" + integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" + integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" + integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" + +"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" + integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" + integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" + integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" + integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-flow-strip-types@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" + +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" + integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" + integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" + integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" + integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== + dependencies: + "@babel/helper-hoist-variables" "^7.13.0" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-identifier" "^7.12.11" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" + integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + +"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" + integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz#5d3de8a8ee53f4612e728f4f17b8c9125f8019e5" + integrity sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-react-display-name@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" + integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.12.12": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" + integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.17" + +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" + integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz#051d76126bee5c9a6aa3ba37be2f6c1698856bcb" + integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" + integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.12.17" + +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" + integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" + integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" + integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" + integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" + integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typescript@^7.12.1": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" + integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-typescript" "^7.12.13" + +"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/preset-env@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" + +"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.10.tgz#b5cde31d5fe77ab2a6ab3d453b59041a1b3a5252" + integrity sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-compilation-targets" "^7.13.10" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-proposal-async-generator-functions" "^7.13.8" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-dynamic-import" "^7.13.8" + "@babel/plugin-proposal-export-namespace-from" "^7.12.13" + "@babel/plugin-proposal-json-strings" "^7.13.8" + "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-numeric-separator" "^7.12.13" + "@babel/plugin-proposal-object-rest-spread" "^7.13.8" + "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.8" + "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@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.12.13" + "@babel/plugin-transform-arrow-functions" "^7.13.0" + "@babel/plugin-transform-async-to-generator" "^7.13.0" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-classes" "^7.13.0" + "@babel/plugin-transform-computed-properties" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.0" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.13.0" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.13.0" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/plugin-transform-modules-systemjs" "^7.13.8" + "@babel/plugin-transform-modules-umd" "^7.13.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.13.0" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.12.13" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.13.0" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.13.0" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@babel/plugin-transform-unicode-escapes" "^7.12.13" + "@babel/plugin-transform-unicode-regex" "^7.12.13" + "@babel/preset-modules" "^0.1.4" + "@babel/types" "^7.13.0" + babel-plugin-polyfill-corejs2 "^0.1.4" + babel-plugin-polyfill-corejs3 "^0.1.3" + babel-plugin-polyfill-regenerator "^0.1.2" + core-js-compat "^3.9.0" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" + integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/plugin-transform-react-jsx-development" "^7.12.1" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-react@^7.12.5": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" + integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-react-display-name" "^7.12.13" + "@babel/plugin-transform-react-jsx" "^7.12.13" + "@babel/plugin-transform-react-jsx-development" "^7.12.12" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" + integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.12.1" + +"@babel/runtime-corejs3@^7.10.2": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz#14c3f4c85de22ba88e8e86685d13e8861a82fe86" + integrity sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" + integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.4.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" + integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.7.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" + integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.0" + "@babel/types" "^7.13.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" + integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@eslint/eslintrc@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" + integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.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" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.1.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + 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@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@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@^26.6.0", "@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@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@^26.6.0", "@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@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@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@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" + 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" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@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@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@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@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@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@^26.6.0", "@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@pmmmwh/react-refresh-webpack-plugin@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== + dependencies: + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" + +"@popperjs/core@^2.5.3": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.1.tgz#7f554e7368c9ab679a11f4a042ca17149d70cf12" + integrity sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA== + +"@restart/context@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@restart/context/-/context-2.1.4.tgz#a99d87c299a34c28bd85bb489cb07bfd23149c02" + integrity sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q== + +"@restart/hooks@^0.3.21", "@restart/hooks@^0.3.25": + version "0.3.26" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.3.26.tgz#ade155a7b0b014ef1073391dda46972c3a14a129" + integrity sha512-7Hwk2ZMYm+JLWcb7R9qIXk1OoUg1Z+saKWqZXlrvFwT3w6UArVNWgxYOzf+PJoK9zZejp8okPAKTctthhXLt5g== + dependencies: + lodash "^4.17.20" + lodash-es "^4.17.20" + +"@rollup/plugin-commonjs@^17.1.0": + version "17.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" + integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== + dependencies: + "@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" + +"@rollup/plugin-image@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@rollup/plugin-image/-/plugin-image-2.0.6.tgz#2e6d7a72b25df81aa80c8c0866d45a45c1e6a265" + integrity sha512-bB+spXogbPiFjhBS7i8ajUOgOnVwWK3bnJ6VroxKey/q8/EPRkoSh+4O1qPCw97qMIDspF4TlzXVBhZ7nojIPw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + mini-svg-data-uri "^1.2.3" + +"@rollup/plugin-node-resolve@^11.2.0": + version "11.2.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz#a5ab88c35bb7622d115f44984dee305112b6f714" + integrity sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA== + dependencies: + "@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" + +"@rollup/plugin-node-resolve@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/plugin-replace@^2.3.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz#c411b5ab72809fb1bfc8b487d8d02eef661460d3" + integrity sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@sinonjs/commons@^1.7.0": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" + integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== + dependencies: + ejs "^2.6.1" + magic-string "^0.25.0" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@testing-library/dom@^7.28.1": + version "7.30.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.30.0.tgz#53697851f7708a1448cc30b74a2ea056dd709cd6" + integrity sha512-v4GzWtltaiDE0yRikLlcLAfEiiK8+ptu6OuuIebm9GdC2XlZTNDPGEfM2UkEtnH7hr9TRq2sivT5EA9P1Oy7bw== + dependencies: + "@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.4" + lz-string "^1.4.4" + pretty-format "^26.6.2" + +"@testing-library/jest-dom@^5.11.4": + version "5.11.9" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.9.tgz#e6b3cd687021f89f261bd53cbe367041fbd3e975" + integrity sha512-Mn2gnA9d1wStlAIT2NU8J15LNob0YFBVjs2aEQ3j8rsfRQo+lAs7/ui1i2TGaJjapLmuNPLTsrm+nPjmZDwpcQ== + dependencies: + "@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" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^11.1.0": + version "11.2.5" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.5.tgz#ae1c36a66c7790ddb6662c416c27863d87818eb9" + integrity sha512-yEx7oIa/UWLe2F2dqK0FtMF9sJWNXD+2PPtp39BvE0Kh9MJ9Kl0HrZAgEuhUJR+Lx8Di6Xz+rKwSdEPY2UV8ZQ== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^7.28.1" + +"@testing-library/user-event@^12.1.10": + version "12.8.1" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.8.1.tgz#aa897d6e7f0cf2208385abc2da2ac3f5844bbd00" + integrity sha512-u521YhkCKip0DQNDpfj9V97PU7UlCTkW5jURUD4JipuVe/xDJ32dJSIHlT2pqAs/I91OFB8p6LtqaLZpOu8BWQ== + dependencies: + "@babel/runtime" "^7.12.5" + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@types/aria-query@^4.2.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" + integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== + dependencies: + "@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.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + dependencies: + "@babel/types" "^7.3.0" + +"@types/classnames@^2.2.10": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf" + integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw== + +"@types/eslint@^7.2.6": + version "7.2.7" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.7.tgz#f7ef1cf0dceab0ae6f9a976a0a9af14ab1baca26" + integrity sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.46" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" + integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== + +"@types/invariant@^2.2.33": + version "2.2.34" + resolved "https://registry.yarnpkg.com/@types/invariant/-/invariant-2.2.34.tgz#05e4f79f465c2007884374d4795452f995720bbe" + integrity sha512-lYUtmJ9BqUN688fGY1U1HZoWT1/Jrmgigx2loq4ZcJpICECm/Om3V314BxdzypO0u5PORKGMM6x0OXaljV1YFg== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*", "@types/jest@^26.0.20": + version "26.0.20" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" + integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*", "@types/node@^14.14.32": + version "14.14.32" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.32.tgz#90c5c4a8d72bbbfe53033f122341343249183448" + integrity sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.2.tgz#e2280c89ddcbeef340099d6968d8c86ba155fdf6" + integrity sha512-i99hy7Ki19EqVOl77WplDrvgNugHnsSjECVR/wUrzw2TJXz1zlUfT2ngGckR6xN7yFYaijsMAqPkOLx9HgUqHg== + +"@types/prop-types@*", "@types/prop-types@^15.7.3": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/react-dom@^17.0.2": + version "17.0.2" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.2.tgz#35654cf6c49ae162d5bc90843d5437dc38008d43" + integrity sha512-Icd9KEgdnFfJs39KyRyr0jQ7EKhq8U6CcHRMGAS45fp5qgUvxL3ujUCfWFttUK2UErqZNj97t9gsVPNAqcwoCg== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.1.tgz#e1a3cb278df7f47f17b5082b1b3da17170bd44b1" + integrity sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@>=16.9.11", "@types/react@>=16.9.35", "@types/react@^17.0.3": + version "17.0.3" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.3.tgz#ba6e215368501ac3826951eef2904574c262cc79" + integrity sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/scheduler@*": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" + integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/tapable@*", "@types/tapable@^1.0.5": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.9.5" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz#5bf25c91ad2d7b38f264b12275e5c92a66d849b0" + integrity sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ== + dependencies: + "@types/jest" "*" + +"@types/uglify-js@*": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" + integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== + dependencies: + source-map "^0.6.1" + +"@types/warning@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" + integrity sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI= + +"@types/webpack-sources@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.8": + version "4.41.26" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^4.5.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.17.0.tgz#6f856eca4e6a52ce9cf127dfd349096ad936aa2d" + integrity sha512-/fKFDcoHg8oNan39IKFOb5WmV7oWhQe1K6CDaAVfJaNWEhmfqlA24g+u1lqU5bMH7zuNasfMId4LaYWC5ijRLw== + dependencies: + "@typescript-eslint/experimental-utils" "4.17.0" + "@typescript-eslint/scope-manager" "4.17.0" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + lodash "^4.17.15" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.17.0", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.17.0.tgz#762c44aaa1a6a3c05b6d63a8648fb89b89f84c80" + integrity sha512-ZR2NIUbnIBj+LGqCFGQ9yk2EBQrpVVFOh9/Kd0Lm6gLpSAcCuLLe5lUCibKGCqyH9HPwYC0GIJce2O1i8VYmWA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.17.0" + "@typescript-eslint/types" "4.17.0" + "@typescript-eslint/typescript-estree" "4.17.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/experimental-utils@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.5.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.17.0.tgz#141b647ffc72ebebcbf9b0fe6087f65b706d3215" + integrity sha512-KYdksiZQ0N1t+6qpnl6JeK9ycCFprS9xBAiIrw4gSphqONt8wydBw4BXJi3C11ywZmyHulvMaLjWsxDjUSDwAw== + dependencies: + "@typescript-eslint/scope-manager" "4.17.0" + "@typescript-eslint/types" "4.17.0" + "@typescript-eslint/typescript-estree" "4.17.0" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.17.0.tgz#f4edf94eff3b52a863180f7f89581bf963e3d37d" + integrity sha512-OJ+CeTliuW+UZ9qgULrnGpPQ1bhrZNFpfT/Bc0pzNeyZwMik7/ykJ0JHnQ7krHanFN9wcnPK89pwn84cRUmYjw== + dependencies: + "@typescript-eslint/types" "4.17.0" + "@typescript-eslint/visitor-keys" "4.17.0" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.17.0.tgz#f57d8fc7f31b348db946498a43050083d25f40ad" + integrity sha512-RN5z8qYpJ+kXwnLlyzZkiJwfW2AY458Bf8WqllkondQIcN2ZxQowAToGSd9BlAUZDB5Ea8I6mqL2quGYCLT+2g== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/typescript-estree@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.17.0.tgz#b835d152804f0972b80dbda92477f9070a72ded1" + integrity sha512-lRhSFIZKUEPPWpWfwuZBH9trYIEJSI0vYsrxbvVvNyIUDoKWaklOAelsSkeh3E2VBSZiNe9BZ4E5tYBZbUczVQ== + dependencies: + "@typescript-eslint/types" "4.17.0" + "@typescript-eslint/visitor-keys" "4.17.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/visitor-keys@4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.17.0.tgz#9c304cfd20287c14a31d573195a709111849b14d" + integrity sha512-WfuMN8mm5SSqXuAr9NM+fItJ0SVVphobWYkWOwQ1odsfC014Vdxk/92t4JwS1Q6fCA/ABfCKpa3AVtpUKTNKGQ== + dependencies: + "@typescript-eslint/types" "4.17.0" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.0.5: + version "8.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" + integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^7.0.2: + version "7.2.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.2.1.tgz#a5ac226171912447683524fa2f1248fcf8bac83d" + integrity sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7, ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3, anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.1, array-includes@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + 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" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axe-core@^4.0.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.3.tgz#64a4c85509e0991f5168340edc4bedd1ceea6966" + integrity sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^26.6.0, babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@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-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-named-asset-import@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" + integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== + +babel-plugin-polyfill-corejs2@^0.1.4: + version "0.1.10" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz#a2c5c245f56c0cac3dbddbf0726a46b24f0f81d1" + integrity sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA== + dependencies: + "@babel/compat-data" "^7.13.0" + "@babel/helper-define-polyfill-provider" "^0.1.5" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.1.3: + version "0.1.7" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" + integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.1.5" + core-js-compat "^3.8.1" + +babel-plugin-polyfill-regenerator@^0.1.2: + version "0.1.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz#0fe06a026fe0faa628ccc8ba3302da0a6ce02f3f" + integrity sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.1.5" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045" + integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg== + dependencies: + "@babel/core" "7.12.3" + "@babel/plugin-proposal-class-properties" "7.12.1" + "@babel/plugin-proposal-decorators" "7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" + "@babel/plugin-proposal-numeric-separator" "7.12.1" + "@babel/plugin-proposal-optional-chaining" "7.12.1" + "@babel/plugin-transform-flow-strip-types" "7.12.1" + "@babel/plugin-transform-react-display-name" "7.12.1" + "@babel/plugin-transform-runtime" "7.12.1" + "@babel/preset-env" "7.12.1" + "@babel/preset-react" "7.12.1" + "@babel/preset-typescript" "7.12.1" + "@babel/runtime" "7.12.1" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + 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" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + 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" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + 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" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== + dependencies: + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.2, browserslist@^4.6.4: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + dependencies: + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + 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" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001181: + version "1.0.30001197" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001197.tgz#47ad15b977d2f32b3ec2fe2b087e0c50443771db" + integrity sha512-8aE+sqBqtXz4G8g35Eg/XEaFr2N7rd/VQ6eABGBmNtcB8cN6qNJhMi6oSFy4UWWZgqgL3filHT8Nha4meu3tsw== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +check-types@^11.1.1: + version "11.1.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" + integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" + integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1, colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + 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" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2, core-js-compat@^3.8.1, core-js-compat@^3.9.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455" + integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== + dependencies: + browserslist "^4.16.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.1.tgz#677b322267172bd490e4464696f790cbc355bec5" + integrity sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-js@^3.6.5: + version "3.9.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" + integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@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-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== + dependencies: + camelcase "^6.0.0" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^2.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0, css-select@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" + integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decimal.js@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166" + integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ== + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^5.0.1, dom-helpers@^5.1.2, dom-helpers@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" + integrity sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.649: + version "1.3.683" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.683.tgz#2c9ab53ff5275cf3dd49278af714d0f8975204f7" + integrity sha512-8mFfiAesXdEdE0DhkMKO7W9U6VU/9T3VTWwZ+4g84/YMP4kgwgFtQgUxuu7FUMcvSeKSNhFQNU+WZ68BQTLT5A== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.0.0: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.0.2, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" + integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== + dependencies: + confusing-browser-globals "^1.0.10" + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.3.1.tgz#df6227e28c61d967b825c1327a27818bbb2ad325" + integrity sha512-mziJD+zw+VTwLtF9qLIxYac0GJCbSEDyqMLP5ENzQeNY5EOxbAfitMFLo+UItjYOISQdh1BCobwE2d4i1o+9Rw== + dependencies: + lodash "^4.17.15" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jest@^24.1.0: + version "24.1.10" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.10.tgz#a332c5e517a67f093454293605b1fff365eb8b88" + integrity sha512-ZM9RvLMJZiUVuT4hkGavovA3KwbH5K6F8glnCnX8k5KBsUu2tS1muKAf4nuZpGTokKqMYs7j1HyLcbbOouDVsA== + dependencies: + "@typescript-eslint/experimental-utils" "^4.0.1" + +eslint-plugin-jsx-a11y@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== + dependencies: + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" + +eslint-plugin-react-hooks@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + +eslint-plugin-react@^7.21.5: + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== + dependencies: + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.18.1" + string.prototype.matchall "^4.0.2" + +eslint-plugin-testing-library@^3.9.2: + version "3.10.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz#4dd02306d601c3238fdabf1d1dbc5f2a8e85d531" + integrity sha512-nQIFe2muIFv2oR2zIuXE4vTbcFNx8hZKRzgHZqJg8rfopIWwoTwtlbCCNELT/jXzVe1uZF68ALGYoDXjLczKiQ== + dependencies: + "@typescript-eslint/experimental-utils" "^3.10.1" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint-webpack-plugin@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz#4ee17577d6392bf72048080a1678d6237183db81" + integrity sha512-ndD9chZ/kaGnjjx7taRg7c6FK/YKb29SSYzaLtPBIYLYJQmZtuKqtQbAvTS2ymiMQT6X0VW9vZIHK0KLstv93Q== + dependencies: + "@types/eslint" "^7.2.6" + arrify "^2.0.1" + jest-worker "^26.6.2" + micromatch "^4.0.2" + schema-utils "^3.0.0" + +eslint@^7.11.0: + version "7.21.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.21.0.tgz#4ecd5b8c5b44f5dedc9b8a110b01bbfeb15d1c83" + integrity sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.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" + 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" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.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 "^4.17.20" + 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.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + 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" + +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + 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" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + 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" + +expect@^26.6.0, expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@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" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + 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" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + 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" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@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@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" + integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + 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" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" + integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + 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@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + 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" + +globby@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + 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" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-bigints@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^1.2.1, html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +immer@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + 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" + +is-core-module@^2.0.0, is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.0.4, is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-circus@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" + integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.0" + "@jest/test-result" "^26.6.0" + "@jest/types" "^26.6.0" + "@types/babel__traverse" "^7.0.4" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^26.6.0" + is-generator-fn "^2.0.0" + jest-each "^26.6.0" + jest-matcher-utils "^26.6.0" + jest-message-util "^26.6.0" + jest-runner "^26.6.0" + jest-runtime "^26.6.0" + jest-snapshot "^26.6.0" + jest-util "^26.6.0" + pretty-format "^26.6.0" + stack-utils "^2.0.2" + throat "^5.0.0" + +jest-cli@^26.6.0: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@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-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@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@^26.0.0, jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.0, jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@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@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + 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" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.0, jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" + integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== + dependencies: + "@jest/types" "^26.6.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@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-runner@^26.6.0, jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@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@^26.6.0, jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@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" + +jest-util@^26.6.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@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@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@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" + +jest-watch-typeahead@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" + integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^26.0.0" + jest-watcher "^26.3.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + +jest-watcher@^26.3.0, jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@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@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" + integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== + dependencies: + "@jest/core" "^26.6.0" + import-local "^3.0.2" + jest-cli "^26.6.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^16.4.0: + version "16.5.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.0.tgz#9e453505600cc5a70b385750d35256f380730cc4" + integrity sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ== + dependencies: + abab "^2.0.5" + acorn "^8.0.5" + 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.0.0" + ws "^7.4.4" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@2.0.0, loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash-es@^4.17.20: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + 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" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + dependencies: + mime-db "1.46.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" + integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +mini-svg-data-uri@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.2.3.tgz#e16baa92ad55ddaa1c2c135759129f41910bc39f" + integrity sha512-zd6KCAyXgmq6FV1mR10oKXYtvmA9vRoB6xPSTUJTbFApCtkefDnYueVR1gkof3KcdLZo1Y8mjF2DFmQMIxsHNQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + 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" + +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" + integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== + dependencies: + 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" + +node-releases@^1.1.61, node-releases@^1.1.70: + version "1.1.71" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" + integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.0, object.entries@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" + integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + 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" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + 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" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@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@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" + integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== + dependencies: + postcss "^8.1.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^8.1.0: + version "8.2.7" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.7.tgz#48ed8d88b4de10afa0dfd1c3f840aa57b55c4d47" + integrity sha512-DsVLH3xJzut+VT+rYr0mtvOtpTjSyqDwPf5EZWXcb0uAKfitGpTY9Ec+afi2+TgdN8rWS9Cs88UDYehKo/RvOw== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.20" + source-map "^0.6.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@2.4.0, prompts@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types-extra@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b" + integrity sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew== + dependencies: + react-is "^16.3.2" + warning "^4.0.0" + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28, psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" + integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" + integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== + dependencies: + core-js "^3.6.5" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.7" + whatwg-fetch "^3.4.1" + +react-bootstrap@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-1.5.1.tgz#47cda280b5208c8a9f24d04dafd38d9d90c9695c" + integrity sha512-jbJNGx9n4JvKgxlvT8DLKSeF3VcqnPJXS9LFdzoZusiZCCGoYecZ9qSCBH5n2A+kjmuura9JkvxI9l7HD+bIdQ== + dependencies: + "@babel/runtime" "^7.4.2" + "@restart/context" "^2.1.4" + "@restart/hooks" "^0.3.21" + "@types/classnames" "^2.2.10" + "@types/invariant" "^2.2.33" + "@types/prop-types" "^15.7.3" + "@types/react" ">=16.9.35" + "@types/react-transition-group" "^4.4.0" + "@types/warning" "^3.0.0" + classnames "^2.2.6" + dom-helpers "^5.1.2" + invariant "^2.2.4" + prop-types "^15.7.2" + prop-types-extra "^1.1.0" + react-overlays "^5.0.0" + react-transition-group "^4.4.1" + uncontrollable "^7.0.0" + warning "^4.0.3" + +react-dev-utils@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== + dependencies: + "@babel/code-frame" "7.10.4" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.1" + +react-error-overlay@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + +react-is@^16.3.2, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-overlays@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-5.0.0.tgz#b50351de194dda0706b40f9632d261c9f0011c4c" + integrity sha512-TKbqfAv23TFtCJ2lzISdx76p97G/DP8Rp4TOFdqM9n8GTruVYgE3jX7Zgb8+w7YJ18slTVcDTQ1/tFzdCqjVhA== + dependencies: + "@babel/runtime" "^7.12.1" + "@popperjs/core" "^2.5.3" + "@restart/hooks" "^0.3.25" + "@types/warning" "^3.0.0" + dom-helpers "^5.2.0" + prop-types "^15.7.2" + uncontrollable "^7.0.0" + warning "^4.0.3" + +react-refresh@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react-scripts@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" + integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== + dependencies: + "@babel/core" "7.12.3" + "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" + "@svgr/webpack" "5.5.0" + "@typescript-eslint/eslint-plugin" "^4.5.0" + "@typescript-eslint/parser" "^4.5.0" + babel-eslint "^10.1.0" + babel-jest "^26.6.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.7" + babel-preset-react-app "^10.0.0" + bfj "^7.0.2" + camelcase "^6.1.0" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "4.3.0" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^7.11.0" + eslint-config-react-app "^6.0.0" + eslint-plugin-flowtype "^5.2.0" + eslint-plugin-import "^2.22.1" + eslint-plugin-jest "^24.1.0" + eslint-plugin-jsx-a11y "^6.3.1" + eslint-plugin-react "^7.21.5" + eslint-plugin-react-hooks "^4.2.0" + eslint-plugin-testing-library "^3.9.2" + eslint-webpack-plugin "^2.5.2" + file-loader "6.1.1" + fs-extra "^9.0.1" + html-webpack-plugin "4.5.0" + identity-obj-proxy "3.0.0" + jest "26.6.0" + jest-circus "26.6.0" + jest-resolve "26.6.0" + jest-watch-typeahead "0.6.1" + mini-css-extract-plugin "0.11.3" + optimize-css-assets-webpack-plugin "5.0.4" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.2.1" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "5.0.2" + prompts "2.4.0" + react-app-polyfill "^2.0.0" + react-dev-utils "^11.0.3" + react-refresh "^0.8.3" + resolve "1.18.1" + resolve-url-loader "^3.1.2" + sass-loader "^10.0.5" + semver "7.3.2" + style-loader "1.3.0" + terser-webpack-plugin "4.2.3" + ts-pnp "1.2.0" + url-loader "4.1.1" + webpack "4.44.2" + webpack-dev-server "3.11.1" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "5.1.4" + optionalDependencies: + fsevents "^2.1.3" + +react-transition-group@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + 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" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.7" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" + integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== + dependencies: + css-select "^2.0.2" + dom-converter "^0.2" + htmlparser2 "^3.10.1" + lodash "^4.17.20" + strip-ansi "^3.0.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + 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" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== + dependencies: + adjust-sourcemap-loader "3.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== + dependencies: + is-core-module "^2.0.0" + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" + integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^4.0.0" + terser "^4.6.2" + +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.31.1: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + +rollup@^2.41.0: + version "2.41.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.41.0.tgz#b2a398bbabbf227738dedaef099e494aed468982" + integrity sha512-Gk76XHTggulWPH95q8V62bw6uqDH6UGvbD6LOa3QUyhuMF3eOuaeDHR7SLm1T9faitkpNrqzUAVYx47klcMnlA== + optionalDependencies: + fsevents "~2.3.1" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@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" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@^10.0.5: + version "10.1.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" + integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.8: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + 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" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + 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" + +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== + dependencies: + debug "^3.2.6" + eventsource "^1.0.7" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.4.7" + +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + dependencies: + faye-websocket "^0.11.3" + uuid "^3.4.0" + websocket-driver "^0.7.4" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + 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-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + 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" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has-symbols "^1.0.1" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.3.4: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-pnp@1.2.0, ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +tsutils@^3.17.1: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" + integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== + +unbox-primitive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" + integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.0" + has-symbols "^1.0.0" + which-boxed-primitive "^1.0.1" + +uncontrollable@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-7.2.1.tgz#1fa70ba0c57a14d5f78905d533cf63916dc75738" + integrity sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ== + dependencies: + "@babel/runtime" "^7.6.3" + "@types/react" ">=16.9.11" + invariant "^2.2.4" + react-lifecycles-compat "^3.0.4" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0, universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse@^1.4.3, url-parse@^1.4.7: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +warning@^4.0.0, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.0.tgz#7f410d9a1f7a1cd5d952806b45776204b47dc274" + integrity sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" + integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.44.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.4.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" + integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== + dependencies: + workbox-core "^5.1.4" + +workbox-broadcast-update@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" + integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== + dependencies: + workbox-core "^5.1.4" + +workbox-build@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" + integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== + dependencies: + "@babel/core" "^7.8.4" + "@babel/preset-env" "^7.8.4" + "@babel/runtime" "^7.8.4" + "@hapi/joi" "^15.1.0" + "@rollup/plugin-node-resolve" "^7.1.1" + "@rollup/plugin-replace" "^2.3.1" + "@surma/rollup-plugin-off-main-thread" "^1.1.1" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^8.1.0" + glob "^7.1.6" + lodash.template "^4.5.0" + pretty-bytes "^5.3.0" + rollup "^1.31.1" + rollup-plugin-babel "^4.3.3" + rollup-plugin-terser "^5.3.1" + source-map "^0.7.3" + source-map-url "^0.4.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + tempy "^0.3.0" + upath "^1.2.0" + workbox-background-sync "^5.1.4" + workbox-broadcast-update "^5.1.4" + workbox-cacheable-response "^5.1.4" + workbox-core "^5.1.4" + workbox-expiration "^5.1.4" + workbox-google-analytics "^5.1.4" + workbox-navigation-preload "^5.1.4" + workbox-precaching "^5.1.4" + workbox-range-requests "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + workbox-streams "^5.1.4" + workbox-sw "^5.1.4" + workbox-window "^5.1.4" + +workbox-cacheable-response@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" + integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== + dependencies: + workbox-core "^5.1.4" + +workbox-core@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" + integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== + +workbox-expiration@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" + integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== + dependencies: + workbox-core "^5.1.4" + +workbox-google-analytics@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" + integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== + dependencies: + workbox-background-sync "^5.1.4" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + +workbox-navigation-preload@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" + integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== + dependencies: + workbox-core "^5.1.4" + +workbox-precaching@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" + integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== + dependencies: + workbox-core "^5.1.4" + +workbox-range-requests@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" + integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== + dependencies: + workbox-core "^5.1.4" + +workbox-routing@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" + integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== + dependencies: + workbox-core "^5.1.4" + +workbox-strategies@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" + integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-streams@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" + integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-sw@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" + integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== + +workbox-webpack-plugin@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" + integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== + dependencies: + "@babel/runtime" "^7.5.5" + fast-json-stable-stringify "^2.0.0" + source-map-url "^0.4.0" + upath "^1.1.2" + webpack-sources "^1.3.0" + workbox-build "^5.1.4" + +workbox-window@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" + integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== + dependencies: + workbox-core "^5.1.4" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.4.4: + version "7.4.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" + integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.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 "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + 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" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==