diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..3e53af2
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,4 @@
+{
+ "presets": ["@babel/preset-env"]
+ }
+
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..5d47c21
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,12 @@
+# EditorConfig is awesome: https://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..c4c8349
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,4 @@
+## What I have done
+
+- [ ] Demo
+- [ ] Demo
\ No newline at end of file
diff --git a/.node-version b/.node-version
new file mode 100644
index 0000000..d7cb9ec
--- /dev/null
+++ b/.node-version
@@ -0,0 +1 @@
+16.13.2
\ No newline at end of file
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000..e2b3323
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,11 @@
+module.exports = {
+ arrowParens: "avoid",
+ printWidth: 120,
+ singleQuote: true,
+ semi: true,
+ endOfLine: "lf",
+ tabWidth: 2,
+ arrowParens: "avoid",
+ bracketSpacing: true,
+ trailingComma: "es5",
+};
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..239c451
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,16 @@
+{
+ "editor.defaultFormatter": "esbenp.prettier-vscode", // Defines a default formatter which takes precedence over all other formatter settings. Must be the identifier of an extension contributing a formatter.
+ "[typescript]": {
+ "editor.formatOnSave": true,
+ "editor.formatOnPaste": true
+ },
+ "[scss]": {
+ "editor.formatOnSave": true
+ },
+ "[javascript]": {
+ "editor.formatOnSave": true
+ },
+ "[json]": {
+ "editor.formatOnSave": true
+ },
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index d49efc4..1c0ab28 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,109 @@
# JavaScript Algorithms And Data Structures
+Many developers who are "self-educated", feel that one of the main disadvantages they face compared to college/university educated graduates in computer science is that they don't have knowledge about algorithms, data structures, and the notorious/famous Big-O Notation. Get on the same level as someone with a computer science degree by learning the fundamental building blocks of computer science, which will boost you during real-life problem solving.
+## JavaScript based examples of many algorithms and data structures.
+☝ Note that this repository is meant to be used for learning and researching purposes only.
+
+## Big O Notation
+
+*Big O notation* is used to classify algorithms according to how their running time or space requirements grow as the input size grows.
+On the chart below it is showing the most common orders of growth of algorithms specified in Big O notation.
+
+
+
+Source: [Big O Cheat Sheet](http://bigocheatsheet.com/).
+
+Below is the list of some of the most used Big O notations and their performance comparisons against different sizes of the input data.
+
+| Big O Notation | Type | Computations for 10 elements | Computations for 100 elements | Computations for 1000 elements |
+| -------------- | ----------- | ---------------------------- | ----------------------------- | ------------------------------- |
+| **O(1)** | Constant | 1 | 1 | 1 |
+| **O(log N)** | Logarithmic | 3 | 6 | 9 |
+| **O(N)** | Linear | 10 | 100 | 1000 |
+| **O(N log N)** | n log(n) | 30 | 600 | 9000 |
+| **O(N^2)** | Quadratic | 100 | 10000 | 1000000 |
+| **O(2^N)** | Exponential | 1024 | 1.26e+29 | 1.07e+301 |
+| **O(N!)** | Factorial | 3628800 | 9.3e+157 | 4.02e+2567 |
+
+### Data Structure Operations Complexity
+
+| Data Structure | Access | Search | Insertion | Deletion | Comments |
+| ----------------------- | :-------: | :-------: | :-------: | :-------: | :-------- |
+| **Array** | 1 | n | n | n | |
+| **Stack** | n | n | 1 | 1 | |
+| **Queue** | n | n | 1 | 1 | |
+| **Linked List** | n | n | 1 | n | |
+| **Hash Table** | - | n | n | n | In case of perfect hash function costs would be O(1) |
+| **Binary Search Tree** | n | n | n | n | In case of balanced tree costs would be O(log(n)) |
+| **B-Tree** | log(n) | log(n) | log(n) | log(n) | |
+| **Red-Black Tree** | log(n) | log(n) | log(n) | log(n) | |
+| **AVL Tree** | log(n) | log(n) | log(n) | log(n) | |
+| **Bloom Filter** | - | 1 | 1 | - | False positives are possible while searching |
+
+### Array Sorting Algorithms Complexity
+
+| Name | Best | Average | Worst | Memory | Stable | Comments |
+| --------------------- | :-------------: | :-----------------: | :-----------------: | :-------: | :-------: | :-------- |
+| **Bubble sort** | n | n2 | n2 | 1 | Yes | |
+| **Insertion sort** | n | n2 | n2 | 1 | Yes | |
+| **Selection sort** | n2 | n2 | n2 | 1 | No | |
+| **Heap sort** | n log(n) | n log(n) | n log(n) | 1 | No | |
+| **Merge sort** | n log(n) | n log(n) | n log(n) | n | Yes | |
+| **Quick sort** | n log(n) | n log(n) | n2 | log(n) | No | Quicksort is usually done in-place with O(log(n)) stack space |
+| **Shell sort** | n log(n) | depends on gap sequence | n (log(n))2 | 1 | No | |
+| **Counting sort** | n + r | n + r | n + r | n + r | Yes | r - biggest number in array |
+| **Radix sort** | n * k | n * k | n * k | n + k | Yes | k - length of longest key |
+
+## Data Structures
+
+A data structure is a particular way of organizing and storing data in a computer so that it can
+be accessed and modified efficiently. More exactly, a data structure is a collection of data
+values, the relationships among them, and the functions or operations that can be applied to
+the data.
+
+- ✅ done
+- ⬜ Arrays
+- ⬜ Hash Tables
+- ⬜ Singly Linked Lists
+- ⬜ Doubly Linked Lists
+- ⬜ Queues
+- ⬜ Stacks
+- ⬜ Trees
+ - ⬜ BST
+ - ⬜ AVL
+ - ⬜ Trees
+ - ⬜ Red Black Trees,
+ - ⬜ Binary Heaps
+- ⬜ Tries
+- ⬜ Graphs
+## Algorithms
+
+An algorithm is an unambiguous specification of how to solve a class of problems. It is
+a set of rules that precisely define a sequence of operations.
+
+What you will learn in here.
+
+Technical:
+
+1. Big O notation
+
+2. Data structures:
+
+* Arrays
+* Hash Tables
+* Singly Linked Lists
+* Doubly Linked Lists
+* Queues
+* Stacks
+* Trees (BST, AVL Trees, Red Black Trees, Binary Heaps)
+* Tries
+* Graphs
+
+3. Algorithms:
+
+* Recursion
+* Sorting
+* Searching
+* Tree Traversal
+* Breadth First Search
+* Depth First Search
+* Dynamic Programming
\ No newline at end of file
diff --git a/assets/Big-O-Complexity-Chart.png b/assets/Big-O-Complexity-Chart.png
new file mode 100644
index 0000000..991c2a6
Binary files /dev/null and b/assets/Big-O-Complexity-Chart.png differ
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..dd242dc
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ presets: [
+ ["@babel/preset-env", { targets: { node: "current" } }],
+ "@babel/preset-typescript",
+ ],
+};
diff --git a/docs/interview-questions.md b/docs/interview-questions.md
new file mode 100644
index 0000000..a71cf96
--- /dev/null
+++ b/docs/interview-questions.md
@@ -0,0 +1,113 @@
+# Theoretical Questions
+
+`Q001:` What is `typeof` Operator?
+
+Answer: JavaScript provides a `typeof` operator that can examine a value tell you what type is is:
+
+```
+
+let a;
+typeof a; // 'undefined'
+
+a = "hello world";
+typeof a; // "string";
+
+
+a = 44;
+typeof a; // "number"
+
+a = null;
+typeof a; // 'object'
+
+a = true;
+typeof a; // "boolean";
+
+a = undefined;
+typeof a; // "undefined";
+
+a = { b: 'c'};
+typeof a; // "object"
+
+
+```
+
+`Q002:` What is the `object` type?
+
+Answer: The `object` type refers to a compound value where you can set properties(named locations) that each hold their own values of any type.
+
+```
+const obj = {
+ a: 'Hello World" ,
+ b: 42,
+ c: true
+};
+
+obj.a;
+obj.b;
+obj.c;
+
+obj['a'];
+obj['b'];
+obj['c'];
+
+```
+
+`Q003:` Explain `arrays` in JavaScript.
+
+Answer: An `array` is an object that holds values (of any type) not particularly in named properties/keys, but rather in numerically indexed positions:
+
+```
+
+const arr = [
+ 'hello world',
+ 42,
+ true
+];
+
+arr[0]; // 'hello world';
+arr[1]; // 42
+arr[3]; // true
+arr.length? // 3
+
+
+typeof arr; // "object";
+
+```
+
+`Q004:` What is `scope` in JavaScript?
+
+Answer: In JavaScript, each function gets its own scope. Scope is basically a collection of variables as well as the rules for how those variables are accessed by name. Only code inside that function can access that function's scoped variables.
+
+1. A variable name has to be unique within the same scope.
+2. A scope can be nested inside another scope.
+3. If one scope is nested inside another, code inside the innermost scope can access variables from either scope.
+
+
+`Q005:` Explain `equality` in JavaScript.
+
+Answer: JavaScript has both strict and type converting comparisons:
+
+1. Strict comparison (`===`) checks for value quality without allowing coercion.
+
+`Q006:` Explain equality in JavaScript.
+
+
+Answer:
+`Q007:` Explain equality in JavaScript.
+
+
+Answer:
+`Q008:` Explain equality in JavaScript.
+
+
+Answer:
+`Q009:` Explain equality in JavaScript.
+
+
+Answer:
+`Q010:` Explain equality in JavaScript.
+
+
+Answer:
+
+
diff --git a/docs/problem-solving-in-programming.md b/docs/problem-solving-in-programming.md
new file mode 100644
index 0000000..39c2b3e
--- /dev/null
+++ b/docs/problem-solving-in-programming.md
@@ -0,0 +1,54 @@
+# [An Ultimate Guide That Helps You To Develop and Improve Problem Solving in Programming](https://www.simplilearn.com/tutorials/programming-tutorial/problem-solving-in-programming)
+
+## Table of Contents
+
+- What is Problem Solving in Programming?
+- How Does It Impact Your Career?
+- Problem Solving Skills in Programming
+- Steps Involved in Problem Solving
+- Steps to Improve Problem Solving in Programming
+- Benefits
+- Conclusion
+
+Coding and Programming skills hold a significant and critical role in implementing and developing various technologies and software. These programming and coding skills are essential for every person to improve problem solving skills.
+
+
+### What is Problem Solving in Programming?
+
+ Problem Solving is an essential skill that helps to solve problems in programming. There are specific steps to be carried out to solve problems in computer programming, and the success depends on how correctly and precisely we define a problem. This involves designing, identifying and implementing problems using certain steps to develop a computer.
+
+### How Does It Impact Your Career?
+
+Many companies look for candidates with excellent problem solving skills.
+- These skills help people manage the work and make candidates put more effort into the work, which results in finding solutions for complex problems in unexpected situations. এই দক্ষতাগুলি লোকেদের কাজ পরিচালনা করতে সাহায্য করে এবং প্রার্থীদের কাজে আরও বেশি পরিশ্রম করতে সাহায্য করে, যার ফলে অপ্রত্যাশিত পরিস্থিতিতে জটিল সমস্যার সমাধান খুঁজে পাওয়া যায়।
+
+- These skills also help to identify quick solutions when they arise and are identified. এই দক্ষতাগুলি যখন উদ্ভূত হয় এবং সনাক্ত করা হয় তখন দ্রুত সমাধানগুলি সনাক্ত করতেও সহায়তা করে৷
+- People with great problem solving skills also possess more thinking and analytical skills, বিরাট/বৃহৎ সমস্যা সমাধানের দক্ষতা সম্পন্ন ব্যক্তিদের আরও চিন্তাভাবনা এবং বিশ্লেষণাত্মক দক্ষতা রয়েছে, which makes them much more successful and confident in their career and able to work in any kind of environment. যা তাদের কর্মজীবনে অনেক বেশি সফল এবং আত্মবিশ্বাসী করে তোলে এবং যে কোনো পরিবেশে কাজ করতে সক্ষম হয়।
+
+
+### Problem Solving Skills in Programming
+
+Solving a question that is related to computers is more complicated than finding the solutions for other questions. কম্পিউটার সম্পর্কিত একটি প্রশ্ন সমাধান করা অন্যান্য প্রশ্নের সমাধান খোঁজার চেয়ে আরও জটিল। It requires excellent knowledge and much thinking power. এর জন্য প্রয়োজন চমৎকার জ্ঞান এবং অনেক চিন্তাশক্তি। Problem solving in programming skills is much needed for a person and holds a major advantage. প্রোগ্রামিং দক্ষতায় সমস্যা সমাধান একজন ব্যক্তির জন্য অনেক বেশি প্রয়োজন এবং এটি একটি বড় সুবিধা রাখে। For every question, there are specific steps to be followed to get a perfect solution. প্রতিটি প্রশ্নের জন্য, একটি নিখুঁত সমাধান পেতে নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হবে। By using those steps, it is possible to find a solution quickly. এই পদক্ষেপগুলি ব্যবহার করে, দ্রুত সমাধান খুঁজে পাওয়া সম্ভব।
+
+
+### Steps Involved in Problem Solving
+
+Before being ready to solve a problem, there are some steps and procedures to be followed to find the solution.
+
+Basically, they are divided into four categories:
+
+1. Analysing the problem: Every problem has a perfect solution; before we are ready to solve a problem, we must look over the question and understand it. When we know the question, it is easy to find the solution for it. If we are not ready with what we have to solve, then we end up with the question and cannot find the answer as expected. By analysing it, we can figure out the outputs and inputs to be carried out. Thus, when we analyse and are
+ready with the list, it is easy and helps us find the solution easily.
+
+2. Developing the algorithm: It is required to decide a solution before writing a program. The procedure of representing the solution in a natural language called an algorithm. We must design, develop and decide the final approach after a number of trials and errors, before actually writing the final code on an algorithm before we write the code. It captures and refines all the aspects of the desired solution.
+3. Coding.
+4. Testing and debugging.
+
+1. Analysing the problem.
+ Every
+2. Developing the algorithm.
+It is
+3. Coding.
+Once we
+
+4. Testing and debugging.
diff --git a/javascript-today-magazine/queue-data-structure.ts b/javascript-today-magazine/queue-data-structure.ts
deleted file mode 100644
index 35626d0..0000000
--- a/javascript-today-magazine/queue-data-structure.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * A Queue is a linear structure which follows a particular order in which the operations are performed.
- * The order is First In First Out (FIFO).
- * A good example of a queue would simply be a line at a grocery store. The customer in line (queue) first, will leave first.
- *
- * Here's a JavaScript implementation of a Queue data structure. 🔥
- */
-
-// A Queue Data Structure
-
-class Queue {
- private data = []
- constructor() {
- this.data = []
- }
-
- /**
- * add
- */
- public add(record: number| string | never) {
- this.data.unshift(record);
- }
-
- /**
- * remove
- */
- public remove() {
- return this.data.pop();
- }
-
-}
-
- // Driver code
- const arr = ["G", "e", "e", "k", "s", "f", "o",
- "r", "g", "e", "e", "k", "s"];
-
- const q = new Queue();
- q.add(1);
- q.add(3);
- q.add(4);
- console.log(q);
- q.remove();
- console.log(q);
diff --git a/jest.config.ts b/jest.config.ts
new file mode 100644
index 0000000..0515f1f
--- /dev/null
+++ b/jest.config.ts
@@ -0,0 +1,190 @@
+/*
+ * For a detailed explanation regarding each configuration property and type check, visit:
+ * https://jestjs.io/docs/configuration
+ */
+const { resolve } = require("path");
+export default {
+ // All imported modules in your tests should be mocked automatically
+ // automock: false,
+
+ // Stop running tests after `n` failures
+ bail: 0,
+
+ // The directory where Jest should store its cached dependency information
+ // cacheDirectory: "/private/var/folders/dw/v_7vt0z10dvgztgqz5cx1h3r0000gp/T/jest_dy",
+
+ // Automatically clear mock calls, instances, contexts and results before every test
+ clearMocks: true,
+
+ // Indicates whether the coverage information should be collected while executing the test
+ collectCoverage: true,
+
+ // An array of glob patterns indicating a set of files for which coverage information should be collected
+ // collectCoverageFrom: ["**/*.{ts,js}"],
+
+ // The directory where Jest should output its coverage files
+ coverageDirectory: "./coverage/",
+
+ // An array of regexp pattern strings used to skip coverage collection
+ coveragePathIgnorePatterns: ["/node_modules/"],
+
+ // Indicates which provider should be used to instrument code for coverage
+ // coverageProvider: "babel",
+
+ // A list of reporter names that Jest uses when writing coverage reports
+ coverageReporters: ["json", "text", "clover", "lcov", "text-summary"],
+
+ // An object that configures minimum threshold enforcement for coverage results
+ coverageThreshold: {
+ global: {
+ statements: 100,
+ branches: 95,
+ functions: 100,
+ lines: 100,
+ },
+ },
+
+ // A path to a custom dependency extractor
+ // dependencyExtractor: undefined,
+
+ // Make calling deprecated APIs throw helpful error messages
+ // errorOnDeprecated: false,
+
+ // The default configuration for fake timers
+ // fakeTimers: {
+ // "enableGlobally": false
+ // },
+
+ // Force coverage collection from ignored files using an array of glob patterns
+ // forceCoverageMatch: [],
+
+ // A path to a module which exports an async function that is triggered once before all test suites
+ // globalSetup: undefined,
+
+ // A path to a module which exports an async function that is triggered once after all test suites
+ // globalTeardown: undefined,
+
+ // A set of global variables that need to be available in all test environments
+ globals: {
+ URL: "http://localhost:8080",
+ window: {},
+ },
+
+ // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
+ // maxWorkers: "50%",
+
+ // An array of directory names to be searched recursively up from the requiring module's location
+ // moduleDirectories: [
+ // "node_modules"
+ // ],
+
+ // An array of file extensions your modules use
+ moduleFileExtensions: ["js", "ts"],
+
+ // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
+ // moduleNameMapper: {},
+
+ // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
+ // modulePathIgnorePatterns: [],
+
+ // Activates notifications for test results
+ // notify: false,
+
+ // An enum that specifies notification mode. Requires { notify: true }
+ // notifyMode: "failure-change",
+
+ // A preset that is used as a base for Jest's configuration
+ preset: "ts-jest",
+
+ // Run tests from one or more projects
+ // projects: undefined,
+
+ // Use this configuration option to add custom reporters to Jest
+ // reporters: undefined,
+
+ // Automatically reset mock state before every test
+ // resetMocks: false,
+
+ // Reset the module registry before running each individual test
+ // resetModules: false,
+
+ // A path to a custom resolver
+ // resolver: undefined,
+
+ // Automatically restore mock state and implementation before every test
+ // restoreMocks: false,
+
+ // The root directory that Jest should scan for tests and modules within
+
+ rootDir: resolve(__dirname, "."),
+
+ // A list of paths to directories that Jest should use to search for files in
+ roots: ["/src"],
+
+ // Allows you to use a custom runner instead of Jest's default test runner
+ // runner: "jest-runner",
+
+ // The paths to modules that run some code to configure or set up the testing environment before each test
+ // setupFiles: [],
+
+ // A list of paths to modules that run some code to configure or set up the testing framework before each test
+ setupFilesAfterEnv: [],
+
+ // The number of seconds after which a test is considered as slow and reported as such in the results.
+ // slowTestThreshold: 5,
+
+ // A list of paths to snapshot serializer modules Jest should use for snapshot testing
+ // snapshotSerializers: [],
+
+ // The test environment that will be used for testing
+ testEnvironment: "jest-environment-node",
+
+ // Options that will be passed to the testEnvironment
+ // testEnvironmentOptions: {},
+
+ // Adds a location field to test results
+ // testLocationInResults: false,
+
+ // The glob patterns Jest uses to detect test files
+ testMatch: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[tj]s?(x)"],
+
+ // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
+ testPathIgnorePatterns: ["/node_modules/", "/assets/"],
+
+ // The regexp pattern or array of patterns that Jest uses to detect test files
+ // testRegex: "\\.test.(js|jsx|ts|tsx)$",
+
+ // This option allows the use of a custom results processor
+ // testResultsProcessor: undefined,
+
+ // This option allows use of a custom test runner
+ // testRunner: "jest-circus/runner",
+
+ // A map from regular expressions to paths to transformers
+ transform: {
+ "^.+\\.(ts|tsx)?$": "ts-jest",
+ "^.+\\.[tj]sx?$": "babel-jest",
+ transform_regex: [
+ "ts-jest",
+ {
+ tsconfig: "tsconfig.json",
+ babelrc: true,
+ },
+ ],
+ },
+
+ // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
+ transformIgnorePatterns: ["/node_modules/", "\\.pnp\\.[^\\/]+$"],
+
+ // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
+ // unmockedModulePathPatterns: undefined,
+
+ // Indicates whether each individual test should be reported during the run
+ verbose: false,
+
+ // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
+ // watchPathIgnorePatterns: [],
+
+ // Whether to use watchman for file crawling
+ // watchman: true,
+};
diff --git a/package.json b/package.json
index 2caf5e9..768e15d 100644
--- a/package.json
+++ b/package.json
@@ -1,25 +1,47 @@
{
- "name": "npm",
- "version": "1.0.0",
- "description": "",
+ "name": "javascript-algorithms-and-data-structures",
+ "version": "0.0.1",
+ "description": "JavaScript based data-structures and Algorithms",
"main": "index.js",
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "test": "jest",
+ "coverage": "npm run test -- --coverage",
+ "watch": "tsc -w",
+ "dev": "nodemon dist/index.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/wakidurrahman/JavaScript-Algorithms-And-Data-Structures.git"
},
"keywords": [
- "prictice"
+ "algorithms",
+ "data-structures",
+ "javascript",
+ "algorithm",
+ "javascript-algorithms",
+ "unit-test",
+ "coverage"
],
- "author": "wakidurrahman",
+ "author": "Wakidur Rahman",
"license": "ISC",
"bugs": {
"url": "https://github.com/wakidurrahman/JavaScript-Algorithms-And-Data-Structures/issues"
},
"homepage": "https://github.com/wakidurrahman/JavaScript-Algorithms-And-Data-Structures#readme",
"devDependencies": {
+ "@babel/core": "^7.19.1",
+ "@babel/preset-env": "^7.19.1",
+ "@babel/preset-typescript": "^7.18.6",
+ "@types/jest": "^29.0.3",
+ "babel-jest": "^29.0.3",
+ "jest": "^29.0.3",
+ "nodemon": "^2.0.20",
+ "ts-jest": "^29.0.2",
+ "ts-node": "^10.9.1",
"typescript": "^4.8.3"
+ },
+ "engines": {
+ "node": ">=16.13.2",
+ "npm": ">=8.1.2"
}
}
diff --git a/section-big-o/sample-002.js b/section-big-o/sample-002.js
deleted file mode 100644
index 94037a3..0000000
--- a/section-big-o/sample-002.js
+++ /dev/null
@@ -1 +0,0 @@
-// Hello world
\ No newline at end of file
diff --git a/src/big-O-complexities/big-O-complexities-01.js b/src/big-O-complexities/big-O-complexities-01.js
new file mode 100644
index 0000000..de9d1f1
--- /dev/null
+++ b/src/big-O-complexities/big-O-complexities-01.js
@@ -0,0 +1,60 @@
+/**
+ * Big-O complexities
+ *
+ * O(1) is constant time.
+ * O(1) does not change with respect to input space.
+ * Hence, O(1) is referred to as being constant time.
+ * An example of an O(1) algorithm is accessing an item in the array by its index.
+ *
+ * O(n) is linear time.
+ * O(n) is linear time and applies to algorithms that must do n operations in the worst-case scenario.
+ *
+ * O(n2) is quadratic time,
+ *
+ * O(n3) is cubic time.
+ *
+ * logarithmic time complexity
+ * is printing elements that are a power of 2 between 2 and n
+
+
+ */
+// O(n) algorithm is printing numbers from 0 to n-1
+function printLinerTime(n) {
+ for (var i = 0; i < n; i++) {
+ console.log(i);
+ }
+}
+console.log(printLinerTime(100));
+// O(n2) is quadratic time,
+function printQuadraticTime(n) {
+ for (var i = 0; i < n; i++) {
+ // parent loop
+ for (var j = 0; j < n; j++) {
+ // children loop
+ console.log(i, j);
+ }
+ }
+} //
+console.log(printQuadraticTime(10));
+// O(n3) is cubic time
+function printCubicTime(array) {
+ for (var i = 0; i < array.length; i++) {
+ for (var j = i; j < array.length; j++) {
+ for (var k = j; k < array.length; k++) {
+ console.log(array[i], array[j], array[k]);
+ }
+ }
+ }
+}
+var cubicTimeArray = ['a', 'b', 'c', 'd', 'e', 'f'];
+console.log(printCubicTime(cubicTimeArray));
+/**
+ * The efficiency of logarithmic time complexities is apparent with large inputs such as a million items.
+ * Although n is a million, exampleLogarithmic will print only 19 items because log2(1,000,000) = 19.9315686.
+ */
+function printLogarithmic(n) {
+ for (var i = 2; i <= n; i = i * 2) {
+ console.log(i);
+ }
+}
+printLogarithmic(1000000);
diff --git a/src/big-O-complexities/big-O-complexities-01.ts b/src/big-O-complexities/big-O-complexities-01.ts
new file mode 100644
index 0000000..8e08667
--- /dev/null
+++ b/src/big-O-complexities/big-O-complexities-01.ts
@@ -0,0 +1,72 @@
+/**
+ * Big-O complexities
+ *
+ * O(1) is constant time.
+ * O(1) does not change with respect to input space.
+ * Hence, O(1) is referred to as being constant time.
+ * An example of an O(1) algorithm is accessing an item in the array by its index.
+ *
+ * O(n) is linear time.
+ * O(n) is linear time and applies to algorithms that must do n operations in the worst-case scenario.
+ *
+ * O(n2) is quadratic time,
+ *
+ * O(n3) is cubic time.
+ *
+ * O(log(n))
+ * logarithmic time complexity
+ * is printing elements that are a power of 2 between 2 and n
+
+
+ */
+
+// O(n) algorithm is printing numbers from 0 to n-1
+function printLinerTime(n: number) {
+ for (let i = 0; i < n; i++) {
+ console.log(i);
+ }
+}
+
+console.log(printLinerTime(100));
+
+// O(n2) is quadratic time,
+
+function printQuadraticTime(n: number) {
+ for (let i = 0; i < n; i++) {
+ // parent loop
+ for (let j = 0; j < n; j++) {
+ // children loop
+ console.log(i, j);
+ }
+ }
+} //
+
+console.log(printQuadraticTime(10));
+
+// O(n3) is cubic time
+
+function printCubicTime(array: string[]) {
+ for (let i = 0; i < array.length; i++) {
+ for (let j = i; j < array.length; j++) {
+ for (let k = j; k < array.length; k++) {
+ console.log(array[i], array[j], array[k]);
+ }
+ }
+ }
+}
+const cubicTimeArray = ['a', 'b', 'c', 'd', 'e', 'f'];
+console.log(printCubicTime(cubicTimeArray));
+
+/**
+ * O(log(n))
+ * The efficiency of logarithmic time complexities is apparent with large inputs such as a million items.
+ * Although n is a million, exampleLogarithmic will print only 19 items because log2(1,000,000) = 19.9315686.
+ */
+
+function printLogarithmic(n: number) {
+ for (let i = 2; i <= n; i = i * 2) {
+ console.log(i);
+ }
+}
+
+printLogarithmic(1000000);
diff --git a/src/big-O-complexities/big-o-cheat-sheet-01.txt b/src/big-O-complexities/big-o-cheat-sheet-01.txt
new file mode 100644
index 0000000..72b4fc3
--- /dev/null
+++ b/src/big-O-complexities/big-o-cheat-sheet-01.txt
@@ -0,0 +1,43 @@
+#Big O Cheat Sheet:
+---------------------
+
+-Big Os-
+
+1. O(1) Constant- no loops
+2. O(log N) Logarithmic- usually searching algorithms have log n if they are sorted (Binary Search)
+3. O(n) Linear- for loops, while loops through n items
+4. O(n log(n)) Log Liniear- usually sorting operations
+4. O(n^2) Quadratic- every element in a collection needs to be compared to ever other element. Two nested loops
+6. O(2^n) Exponential- recursive algorithms that solves a problem of size N
+7. O(n!) Factorial- you are adding a loop for every element
+
+
+**Iterating through half a collection is still O(n)
+**Two separate collections: O(a + b)
+**Two separate collections: O(a * b)
+
+
+-What can cause time in a function?-
+------------------------------------
+1. Operations (+, -, *, /)
+2. Comparisons (<, >, ==)
+3. Looping (for, while)
+4. Outside Function call (function())
+
+
+-Rule Book-
+------------
+
+Rule 1: Always worst Case
+Rule 2: Remove Constants
+Rule 3: Different inputs should have different variables. O(a+b). A and B arrays nested would be O(a*b)
++ for steps in order
+* for nested steps
+Rule 4: Drop Non-dominant terms
+
+
+-What causes Space complexity?-
+=> Variables
+=> Data Structures
+=> Function Call
+=> Allocations
\ No newline at end of file
diff --git a/src/big-O-complexities/big-o-exercise-1.js b/src/big-O-complexities/big-o-exercise-1.js
new file mode 100644
index 0000000..084069e
--- /dev/null
+++ b/src/big-O-complexities/big-o-exercise-1.js
@@ -0,0 +1,32 @@
+// What is the Big O of the below function? (Hint, you may want to go line by line)
+
+function bigOCalculationChallengeOne(input) {
+ let a = 10; // O(1) => 1
+ a = 50 + 3; // O(1) => 2
+
+ for (let i = 0; i < input.length; i++) {
+ // O(n) /O(input) /O(x) => 1
+ printHello(); // O(n) => 2
+ console.log(a);
+ const stranger = true; // O(n) => 3
+ a++; // Number of Operations O(n) => 4
+ }
+ console.log(a);
+ return a; // O(1) => 3
+}
+
+/**
+ * BIG O Calculation
+ * 3 "O(1)"
+ * n + n + n + n "O(n)"
+ * 3 + 4n
+ * BIG O(3 + 4n)
+ */
+
+function printHello() {
+ console.log("Hello World");
+}
+
+const inputArray = new Array(100).fill("a");
+
+bigOCalculationChallengeOne(inputArray);
diff --git a/src/big-O-complexities/big-o-exercise-2.js b/src/big-O-complexities/big-o-exercise-2.js
new file mode 100644
index 0000000..14787bb
--- /dev/null
+++ b/src/big-O-complexities/big-o-exercise-2.js
@@ -0,0 +1,39 @@
+// What is the Big O of the below function?
+// Hint, you may want to go line by line
+
+function bigOCalculationChallengeTwo(limit) {
+ const a = 5; // O(1)
+ const b = 10; // O(1)
+ const c = 50; // O(1)
+
+ for (let i = 0; i < limit; i++) {
+ // O(n) ***TODO:If we include for loop
+ let x = i + 1; // O(n)
+ let y = i + 1; // O(n)
+ let z = i + 1; // O(n)
+ }
+
+ for (let j = 0; j < limit; j++) {
+ // O(n) ***TODO:If we include for loop
+ let p = j * 2; // O(n)
+ let q = j * 2; // O(n)
+ }
+
+ const whoAmI = "I don't Know"; // O(1)
+}
+
+/**
+ * BIG O Calculation
+ * 4 => "O(1)" Four big O
+ * 7 => "O(n)" Seven big O n
+ * n + n + n + n + n + n + n => "O(n)"
+ * 4 + 7n
+ *
+ * BIG O(4 + 7n) TODO: if we calculate for loop step
+ * O(4 + 7n) === O(n) equivalence to O(n)
+ * n + n + n + n + n => "O(n)"
+ * BIG O(4 + 5n) TODO: no for loop
+ * O(4 + 5n) === O(n) equivalence to O(n)
+ */
+
+bigOCalculationChallengeTwo(12);
diff --git a/src/big-O-complexities/big-o-exercise-3.js b/src/big-O-complexities/big-o-exercise-3.js
new file mode 100644
index 0000000..06c342f
--- /dev/null
+++ b/src/big-O-complexities/big-o-exercise-3.js
@@ -0,0 +1,41 @@
+function bigOCalculationChallengeThree(items) {
+ console.log(items[0]); // O(1)
+
+ const middleIndex = Math.floor(items.length / 2);
+ const index = 0;
+
+ while (index < middleIndex) {
+ // O(n/2)
+ console.log(items[index]);
+ index++;
+ }
+
+ for (let i = 0; i < 100; i++) {
+ // O(100)
+ console.log("hi");
+ }
+}
+
+/**
+ * O(1 + n/2 + 100 )
+ * O(n/2 + 101) // Rule 2 : Drop constants
+ * O(n ) // Rule 2 : Drop constants
+ */
+
+function compressBoxesTwice(boxes) {
+ boxes.forEach((element) => {
+ // O(n)
+ console.log(element);
+ });
+
+ boxes.forEach((element) => {
+ // O(n)
+ console.log(element);
+ });
+}
+
+/**
+ * O(n + n)
+ * O(n + n) // Drop the constants
+ * O(n)
+ */
diff --git a/src/big-O-complexities/big-o-exercise-4.js b/src/big-O-complexities/big-o-exercise-4.js
new file mode 100644
index 0000000..3b39d5b
--- /dev/null
+++ b/src/big-O-complexities/big-o-exercise-4.js
@@ -0,0 +1,19 @@
+// Rule 3: Different term for input
+function compressBoxesTwice(boxes, items) {
+ // For boxes iteration
+ boxes.forEach((element) => {
+ // O(n)
+ console.log(element);
+ });
+
+ // For items iteration
+ items.forEach((element) => {
+ // O(n)
+ console.log(element);
+ });
+}
+
+/**
+ * O(n + n)
+ * O( a + b )
+ */
diff --git a/src/big-O-complexities/big-o-exercise-5.js b/src/big-O-complexities/big-o-exercise-5.js
new file mode 100644
index 0000000..ffaa0ff
--- /dev/null
+++ b/src/big-O-complexities/big-o-exercise-5.js
@@ -0,0 +1,29 @@
+// Log all Pairs of array
+
+const boxes = ["a", "b", "c", "d", "e", "f", "g"];
+function logAllPairsOfBoxes(boxes) {
+ for (let i = 0; i < boxes.length; i++) {
+ for (let j = 0; j < boxes.length; j++) {
+ console.log(boxes[i], boxes[j]);
+ }
+ }
+}
+
+// Print boxes combinations.
+logAllPairsOfBoxes(boxes);
+
+// Using ES5 syntax
+
+function logAllPairsOfBoxesEs5(boxes) {
+ boxes.forEach((firstBox) => {
+ boxes.forEach((secondBox) => {
+ console.log(firstBox, secondBox);
+ });
+ });
+}
+
+/**
+ * O(n * n)
+ * O(n^2)
+ * O(n^2) is called Quadratic Time
+ */
diff --git a/src/big-O-complexities/big-o-exercise-6.js b/src/big-O-complexities/big-o-exercise-6.js
new file mode 100644
index 0000000..332c75e
--- /dev/null
+++ b/src/big-O-complexities/big-o-exercise-6.js
@@ -0,0 +1,31 @@
+// Rule 4: Drop Non Dominant
+function printAllNumbersThenAllPairSums(numbers) {
+ console.log("These are the numbers: ");
+ numbers.forEach((element) => {
+ console.log(element);
+ });
+
+ console.log("And these are their sums: ");
+
+ numbers.forEach((firstNumber) => {
+ numbers.forEach((secondNumber) => {
+ console.log(firstNumber + secondNumber);
+ });
+ });
+}
+
+// Number array
+const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+// Print output
+printAllNumbersThenAllPairSums(numbers);
+
+/**
+ * O(n + n^2)
+ * O(n^2) Drop non dominants
+ *
+ * for example
+ * O(x^2+3x+100+x/2)
+ * O(x^5x+100+x/2)
+ * O(x^5x+100+x/2)
+ * O(n^2)
+ */
diff --git a/src/big-O-complexities/big-o-rule.ts b/src/big-O-complexities/big-o-rule.ts
new file mode 100644
index 0000000..7171e6d
--- /dev/null
+++ b/src/big-O-complexities/big-o-rule.ts
@@ -0,0 +1,219 @@
+/**
+ * Big-O is important for analyzing and comparing the efficiencies of algorithms.
+ * Big-O Rule
+ *
+ * 1. Coefficient rule
+ * 2. Sum rule
+ * 3. Product rule
+ * 4. Transitive rule
+ * 5. Polynomial rule
+ * 6. Log of a power rule
+ */
+
+/**
+ *
+ * 1. Coefficient Rule.
+ *
+ * Coefficient simply requires you to ignore any non-input-size-related constants.
+ * Coefficients in Big-O are negligible with large input sizes.
+ * Any constants are negligible in Big-O notation.
+ */
+
+// Coefficient Rule example 01
+function coefficientRuleOne(n: number) {
+ let count: number = 0; // O(1)
+ for (let i = 0; i < n; i++) {
+ // O(n)
+ count += 1; // O(n)
+ }
+ return count; // O(1)
+}
+
+/**
+ * BIG O Calculation
+ * 1 + 1 ==> "O(1)" is 2 times
+ * n + n ==> "O(n)" is 2 times.
+ * 2*2n
+ * O(n) ==> Remove constants/
+ */
+
+function coefficientRuleOneTwo(limit: number) {
+ const a: number = 5; // O(1)
+ const b: number = 10; // O(1)
+ const c: number = 50; // O(1)
+
+ for (let i = 0; i < limit; i++) {
+ // O(n) ***TODO:If we include for loop
+ let x = i + 1; // O(n)
+ let y = i + 1; // O(n)
+ let z = i + 1; // O(n)
+ }
+
+ for (let j = 0; j < limit; j++) {
+ // O(n) ***TODO:If we include for loop
+ let p = j * 2; // O(n)
+ let q = j * 2; // O(n)
+ }
+
+ const whoAmI = "I don't Know"; // O(1)
+}
+
+/**
+ * BIG O Calculation
+ * 4 => "O(1)" Four big O
+ * 7 => "O(n)" Seven big O n
+ * n + n + n + n + n + n + n => "O(n)"
+ * 4 + 7n
+ *
+ * BIG O(4 + 7n) TODO: if we calculate for loop step
+ * O(4 + 7n) === O(n) equivalence to O(n)
+ * n + n + n + n + n => "O(n)"
+ * BIG O(4 + 5n) TODO: no for loop
+ * O(4 + 5n) === O(n) equivalence to O(n)
+ */
+
+/**
+ * 2. Sum Rule
+ * Imagine a master algorithm that involves two other algorithms.
+ * The Big-O notation of that master algorithm is simply the sum of the other two Big-O notations.
+ */
+
+function sumRule(boxes: string[], items: number[]) {
+ // For boxes iteration
+ boxes.forEach(element => {
+ // O(n)
+ console.log(element);
+ });
+
+ // For items iteration
+ items.forEach(element => {
+ // O(n)
+ console.log(element);
+ });
+}
+
+/**
+ * BIG O Calculation
+ * O(n + n)
+ * O( a + b )
+ */
+
+/**
+ * 3. Product Rule
+ * The product rule simply states how Big-Os can be multiplied.
+ */
+
+function productRuleOne(boxes: string | number[]) {
+ for (let i = 0; i < boxes.length; i++) {
+ // O(n)
+ for (let j = 0; j < boxes.length; j++) {
+ // O(n)
+ console.log(boxes[i], boxes[j]);
+ }
+ }
+}
+
+function productRuleTwo(n: number) {
+ let count = 0;
+ for (let i = 0; i < n; i++) {
+ count += 1; // O(n)
+ for (let j = 0; j < 5 * n; j++) {
+ count += 1; // O(n)
+ }
+ }
+ return count;
+}
+
+/**
+ * BIG O Calculation
+ * O(n * n)
+ * O(n^2)
+ * O(n^2) is called Quadratic Time
+ */
+
+/**
+ * 4. Polynomial Rule
+ * If f(n) is a polynomial of degree k, then f(n) is O(nˆk).
+ * The following code block has only one for loop with quadratic time complexity f(n) = nˆ2 because line 4 runs n*n iterations
+ */
+
+function polynomialRule(n: number) {
+ let count = 0;
+ for (let i = 0; i < n * n; i++) {
+ count += 1;
+ }
+ return count;
+}
+
+// O(n^n)
+// O(n^2)
+
+/**
+ * Exercises
+ * Calculate the time complexities for each of the exercise code
+ */
+
+// Exercise 01
+
+function exercisesOne(n: number) {
+ for (let i = 0; i < n * 1000; i++) {
+ // O(n)
+ for (let j = 0; j < n * 2; j++) {
+ // O(n)
+ console.log(i, j);
+ }
+ }
+} // O(n^2)
+
+// Exercise 02
+function exercisesTwo(n: number) {
+ for (let i = 0; i < n; i++) {
+ // O(n)
+ for (let j = 0; j < n; j++) {
+ // O(n)
+ for (let k = 0; k < n; k++) {
+ // O(n)
+ for (let l = 0; l < 10; l++) {
+ // O(10) constant time iteration
+ console.log(i, j, k, l);
+ }
+ }
+ }
+ }
+}
+
+// O(n^3*10)
+// O(n^3)
+
+// Exercise 03
+
+function exercisesThree(): void {
+ for (let i = 0; i < 1000; i++) {
+ // O(1000) constant time iteration
+ console.log('Hi');
+ } //
+} // O(1)
+
+// Exercise 04
+function exercisesFour(n: number): void {
+ for (let i = 0; i < n * 10; i++) {
+ // O(n * 10)
+ console.log('Hi');
+ } //
+} // O(n * 10) === O(n) remove constant.
+
+// Exercise 05
+function exercisesFive(n: number): void {
+ for (let i = 0; i < n; i * 2) {
+ // O(log2n)
+ console.log(i);
+ } //
+} // O(log2n) log 2 base n. For a given n, this will operate only log2n times because i is incremented by multiplying by 2
+
+// Exercise 06
+function exercisesSix(): void {
+ while (true) {
+ // O(∞) Infinite loop
+ console.log('hello');
+ }
+} // O(∞)
diff --git a/section-big-o/note.txt b/src/big-O-complexities/note.txt
similarity index 100%
rename from section-big-o/note.txt
rename to src/big-O-complexities/note.txt
diff --git a/src/big-O-complexities/o-n-001.js b/src/big-O-complexities/o-n-001.js
new file mode 100644
index 0000000..ba91b97
--- /dev/null
+++ b/src/big-O-complexities/o-n-001.js
@@ -0,0 +1,16 @@
+const fish = ['dory', 'bruce', 'marlin', 'O_n-001'];
+const single = ['O_n-001'];
+const everyone = ['dory', 'bruce', 'marlin', 'O_n-001', 'gill', 'bloat', 'nigel', 'squirt', 'darla', 'hank'];
+const large = new Array(100000).fill('O_n-001');
+
+
+function findSpecificNameFromArray(array) {
+ for (let index = 0; index < array.length; index++) {
+ const element = array[index];
+ if (element === 'O_n-001') {
+ console.log('Found O_n-001');
+ }
+ }
+}
+
+findSpecificNameFromArray(single); // O(n) ----> Linear Time
\ No newline at end of file
diff --git a/section-big-o/sample-001.js b/src/big-O-complexities/sample-001.js
similarity index 100%
rename from section-big-o/sample-001.js
rename to src/big-O-complexities/sample-001.js
diff --git a/src/big-O-complexities/space-complexity.js b/src/big-O-complexities/space-complexity.js
new file mode 100644
index 0000000..a4d7da2
--- /dev/null
+++ b/src/big-O-complexities/space-complexity.js
@@ -0,0 +1,19 @@
+// Space complexity O(1)
+function boooo(n) {
+ for (let i = 0; i < n; i++) {
+ console.log("booooo");
+ }
+}
+
+boooo(8); // O(1)
+
+// Space complexity O(n)
+function arrayOfHiNTimes(n) {
+ var hiArray = []; // declare memory
+ for (let i = 0; i < n; i++) {
+ hiArray[i] = "hi"; // assigned value inside memory
+ }
+ return hiArray; // Return array
+}
+
+arrayOfHiNTimes(6); // O(n) memory use
diff --git a/src/code-challenges/bubble-sort.js b/src/code-challenges/bubble-sort.js
new file mode 100644
index 0000000..b5cf6d2
--- /dev/null
+++ b/src/code-challenges/bubble-sort.js
@@ -0,0 +1,192 @@
+/**
+ * 001: Explain How Bubble Sort works
+ * Bubble Sort: is based on the idea of repeatedly comparing pairs of adjacent elements and
+ * then swapping their positions if they are in the wrong order.
+ * Bubble sort is a stable, in-place sort algorithm.
+ */
+
+// Normal
+function bubbleSortVariationNormal(arr) {
+ const len = arr.length - 1;
+ let swaps;
+ do {
+ swaps = false;
+ for (let i = 0; i < len; i++) {
+ if (arr[i] > arr[i + 1]) {
+ // start with the first two elements and sort them in ascending order. (Compare the element to check which one is greater).
+ let temp = arr[i + 1]; // store second element for swap
+ arr[i + 1] = arr[i]; // Swap first element to second element
+ arr[i] = temp; // // Swap second element to first element
+ swaps = true; // true for loop continue until Compare not false condition
+ }
+ }
+ } while (swaps);
+
+ return arr;
+}
+
+bubbleSortVariationNormal([6, 5, 3, 1, 8, 7, 2, 4]);
+
+// Recursively
+const bubbleSortVariationRecursive = function (array, pointer = array.length - 1) {
+ // Base check
+ if (pointer === 0) {
+ return array;
+ }
+
+ for (let i = 0; i < pointer; i++) {
+ if (array[i] > array[i + 1]) {
+ let temp = array[i + 1];
+ array[i + 1] = array[i];
+ array[i] = temp;
+ }
+ }
+
+ // Recursive call on smaller portion of the array
+ return bubbleSortVariationRecursive(array, pointer - 1);
+};
+
+bubbleSortVariationRecursive([6, 5, 3, 1, 8, 7, 2, 4]);
+
+// 01: Exercise
+const bubbleSortExercise = array => {
+ let swaps;
+ do {
+ swaps = false;
+ for (let i = 0; i < array.length - 1; i++) {
+ if (array[i] > array[i + 1]) {
+ console.log('Swaps inner', swaps, array[i]);
+ let tempStore = array[i + 1];
+ array[i + 1] = array[i];
+ array[i] = tempStore;
+ swaps = true;
+ }
+ }
+ console.log('Swaps Outer', swaps);
+ } while (swaps);
+
+ return array;
+};
+
+bubbleSortExercise([6, 5, 3, 1, 8, 7, 2, 4]);
+
+// 02: Write a function called lucky_sevens which takes an array of integers and returns true if any three consecutive elements sum to 7.
+
+function luckySevensExercise(array) {
+ if (array.length < 3) {
+ return 'This challenge is not possible';
+ // console.log('This challenge is not possible');
+ }
+ for (let i = 2; i < array.length; i++) {
+ const element = array[i];
+ console.log(element);
+ if (array[i] + array[i - 1] + array[i - 2] === 7) {
+ return true;
+ }
+ }
+}
+
+luckySevensExercise([2, 3, 4, 5, 6, 1, 2, 4, 5, 2, 1, 5]);
+
+// 03
+
+function simpleClockAngleExercises(num) {
+ // total degrees 360
+ // total minute 60
+ // 60/360 = 6;
+ // any number multiple by 6 will return angle
+ return 6 * num;
+}
+
+simpleClockAngleExercises(30);
+
+// 04;
+function sumOfMultidimensionalArray(array) {
+ // Store sum
+ let sum = 0;
+ for (let i = 0; i < array.length; i++) {
+ for (let j = 0; j < array[i].length; j++) {
+ sum += array[i][j];
+ }
+ }
+ return sum;
+}
+
+sumOfMultidimensionalArray([[3, 2], [1], [4, 12]]);
+
+// using reduce
+
+function sumOfMultidimensionalArrayByReduce(array) {
+ return array.reduce((t, e) => t.concat(e)).reduce((t, e) => t + e);
+}
+
+// 05;
+
+function divisorsOfThree(low, high) {
+ let output = [];
+ for (let i = low; index < high; i++) {
+ // simply store the current number in the store
+ output.push(i);
+ // check if the current number is evenly divisible by 3
+ if (i % 3 === 0) output.push('div3');
+ }
+ return output;
+}
+
+function divisorsOfThree01(low, high) {
+ let result = [];
+ for (let i = low; i < high; i++) {
+ if (i % 3 === 0) {
+ result.push('div3');
+ } else {
+ result.push(i);
+ }
+ }
+ return result;
+}
+
+divisorsOfThree(2, 15);
+divisorsOfThree01(2, 15);
+
+// 06;
+
+function oddBallSub(numbers) {
+ let result;
+ for (let i = 0; i < numbers.length; i++) {
+ // we divide by 2, and if there is a remainder then
+ // the number must be odd so we add it to final_count
+ if (numbers[i] % 2 === 1) {
+ result += numbers[i];
+ }
+ }
+ return result;
+}
+function oddBallSub01(numbers) {
+ return numbers.reduce((total, item) => {
+ console.log('all', item);
+ if (item % 2 === 1) {
+ console.log(item);
+ return (total += item);
+ }
+ return total;
+ }, 0);
+}
+
+oddBallSub01([8, 2, 3, 4, 5]);
+
+// 07
+
+function plusOneSumExercises(array) {
+ return array.reduce((memo, num) => {
+ return memo + num;
+ }, array.length);
+}
+function plusOneSumExercises01(array) {
+ let result = array.length; // sum of all number for 1 plus for each number.
+ for (let i = 0; i < array.length; i++) {
+ result = array[i];
+ }
+ return;
+}
+
+// 08
diff --git a/src/code-challenges/code-challenges-002-010.js b/src/code-challenges/code-challenges-002-010.js
new file mode 100644
index 0000000..2ab5932
--- /dev/null
+++ b/src/code-challenges/code-challenges-002-010.js
@@ -0,0 +1,210 @@
+/**
+ * 002: Lucky Sevens
+ * Problem: Write a function called lucky_sevens which takes an array of integers and returns true if any three consecutive elements sum to 7.
+ */
+
+function luckySevensVariationOne(arrayOfIntegers) {
+ // Array length
+ const len = arrayOfIntegers.length;
+ // If array of length is less than 3 elements then this challenge is not possible.
+ if (len < 3) {
+ return 'Not possible';
+ }
+
+ // Because we know there are at least 3 elements we can
+ // Start the loop at the 3rd element in the array (i = 2);
+ // and check it along with the two previous elements (i - 1) and (i - 2)
+
+ for (let i = 0; i < len; i++) {
+ if (arrayOfIntegers[i] + arrayOfIntegers[i - 1] + arrayOfIntegers[i - 2] === 7) {
+ return true;
+ }
+ }
+
+ // if loop is finished and no elements summed to 7;
+ return false;
+}
+
+luckySevensVariationOne([2, 1, 5, 1, 0]);
+
+function luckySevensVariationTwo(array) {
+ const len = array.length;
+
+ // Iterate through the array.
+
+ for (let i = 0; i < len - 2; i++) {
+ let sum = array[i] + array[i + 1] + array[i + 2];
+
+ if (sum === 7) {
+ return true; // Found three consecutive elements that sum to 3;
+ }
+ }
+
+ return false; // No three consecutive elements sum to 7;
+}
+
+let numbersOfLuckySeven = [1, 2, 3, 4, 5, 6, 1];
+console.log(luckySevensVariationTwo(numbers)); // Output: true
+
+var numbers2OfLuckySeven = [1, 2, 3, 4, 5, 6, 2];
+console.log(luckySevensVariationTwo(numbers2OfLuckySeven)); // Output: false
+
+/**
+ * Q003: Simple clock angle
+ * Problem: You will be given a number N that represents where the minute hand currently is on a clock.
+ * Your program should return the angle that is formed by the minute hand and the 12 o'clock mark on the clock.
+ */
+
+function simpleClockAngle(number) {
+ // we got 6 because 360(degree)/60(minute) = 6;
+ // 360 represents the full number of a degrees in a circle and
+ // 60 is the number of minutes on a clock, so dividing these two numbers
+ // gives us the number of degrees for one minute
+ return 6 * number;
+}
+
+/**
+ * Q004: Sum of several arrays
+ * Problem: You will be given an array of several arrays that each contain integers and your goal is to write a function that will sum up all the numbers in all the arrays.
+ * For example, if the input is [[3, 2], [1], [4, 12]] then your program should output 22 because 3 + 2 + 1 + 4 + 12 = 22. Solve without and with reduce.
+ */
+
+// Normal
+function multiDimensionalSumOfSeveralArrayVariationNormal(array) {
+ // Store our final answer
+ let sum = 0;
+ // Loop through entire array.
+ for (let i = 0; i < array.length; i++) {
+ // Loop through each inner array.
+ for (let j = 0; j < array[i].length; j++) {
+ sum += array[i][j];
+ }
+ }
+
+ return sum;
+}
+
+multiDimensionalSumOfSeveralArrayVariationNormal([[3, 2], [1], [4, 12]]);
+// reduce
+
+function multiDimensionalSumOfSeveralArrayVariationReduce(array) {
+ return array.reduce((t, e) => t.concat(e)).reduce((t, e) => t + e);
+}
+multiDimensionalSumOfSeveralArrayVariationReduce([[3, 2], [1], [4, 12]]);
+
+/**
+ * Q005: Test divisors of three
+ * Problem: You will be given 2 parameters: a low and high number.
+ * Your goal is to print all numbers between low and high, and for each of these numbers print whether or not the number is divisible by 3.
+ * If the number is divisible by 3, print the word "div3" directly after the number.
+ */
+
+function testDivisors(low, high) {
+ // we'll store all numbers and strings within an array
+ // instead of printing directly to the console.
+ let output = [];
+
+ for (let i = low; i <= high; i++) {
+ // simply store the current number in the output array
+ output.push(i);
+
+ // Check if the current number is evenly divisible by 3
+ if (i % 3 === 0) output.push('div3');
+ }
+
+ // return all numbers and strings.
+ return output;
+}
+
+testDivisors(2, 10);
+
+/**
+ * Q006: Oddball sum
+ * Problem: Write a function called oddball_sum which takes in a list of numbers and returns the sum of all the odd elements.
+ * Try to solve with and without reduce function.
+ *
+ */
+
+function oddBallSumVariationNormal(numbs) {
+ // Final count of all odd numbers added up
+ let finalCount = 0;
+
+ // Loop through entire list
+ for (let i = 0; i < numbs.length; i++) {
+ // we divide by 2, and if there is a remainder then
+ // the number must be odd so we add it to finalCount.
+
+ if (numbs[i] % 2 === 1) {
+ finalCount += numbs[i];
+ }
+ }
+
+ return finalCount;
+}
+
+oddBallSumVariationNormal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
+
+function oddBallSumVariationReduce(numbs) {
+ return numbs.reduce((total, item) => {
+ if (item % 2 === 1) {
+ return (total += item);
+ }
+
+ return total;
+ }, 0);
+}
+
+oddBallSumVariationReduce([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
+
+/**
+ * Q007: Sum of Array Plus One
+ *
+ * Problem: Write a function that takes an array of integers and returns the sum of the integers after adding 1 to each.
+ *
+ */
+
+// ES5 method is nice and clean
+exports.es5 = function (array) {
+ return array.reduce((memo, num) => {
+ return memo + num;
+ }, array.length);
+};
+
+// Without array.reduce method isn't much different
+exports.iterative = function (array) {
+ let result = array.length;
+
+ for (let i = 0; i < array.length; i++) {
+ result += array[i];
+ }
+
+ return result;
+};
+
+/**
+ * Q008: String Rotation
+ * Problem: Find out if a string is a rotation of another string.
+ * E.g. 'ABCD' is a rotation of 'BCDA' but not 'ACBD'
+ */
+
+// First make sure 'a' and 'b' are of the same length.
+// Then check to see if 'b' is a substring of 'a' concatenated with 'a'
+
+module.exports = function (a, b) {
+ return a.length === b.length && (a + a).indexOf(b) > -1;
+};
+
+/**
+ * Q009: Return the N-th value of the Fibonacci sequence. Solve in O(n)
+ */
+
+// The easiest solution that comes to mind here is iteration.
+
+function fibonacciNumbers(n) {
+ let arr = [0, 1];
+
+ for (let i = 2; i < n + 1; i++) {
+ arr.push(arr[i - 2] + arr[i - 1]);
+ }
+ return arr[n];
+}
diff --git a/src/course-master-the-coding/data-structures/arrays/array-02.js b/src/course-master-the-coding/data-structures/arrays/array-02.js
new file mode 100644
index 0000000..ef9c357
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/arrays/array-02.js
@@ -0,0 +1,59 @@
+/**
+ * DataStructure: Array Implementation
+ * Arrays in JavaScript are just objects with integer based keys that act like indexes,
+ */
+
+class Array01 {
+ constructor() {
+ this.length = 0; // Declare length of the array
+ this.data = {}; // Store date inside array.
+ }
+
+ // Get Method O(1)
+ get(index) {
+ return this.data[index];
+ }
+
+ // Push method O(1)
+ push(item) {
+ this.data[this.length] = item; // Insert item into last index.
+ this.length++; // Increment index.
+ return this.data; // return array
+ }
+
+ // Pop method O(1)
+ pop() {
+ const lastItem = this.data[this.length - 1]; // last index
+ delete this.data[this.length - 1]; // delete last index
+ this.length--; // decrease length of the array.
+ return lastItem; // return last item
+ }
+
+ // Delete method O(n)
+ deleteAtIndex(index) {
+ const item = this.data[index]; // track item specific index
+ this.shiftItems(index); // ShiftItem place.
+ return item;
+ }
+
+ // Private function.
+ shiftItems(index) {
+ for (let i = index; i < this.length - 1; i++) {
+ this.data[i] = this.data[i + 1];
+ }
+ console.log(this.data[this.length - 1]);
+ delete this.data[this.length - 1]; // delete last index of the array
+ this.length--;
+ }
+}
+
+const myArray = new Array01();
+myArray.push("hi");
+myArray.push("you");
+myArray.push("!");
+myArray.pop();
+myArray.deleteAtIndex(0);
+myArray.push("are");
+myArray.push("nice");
+myArray.shiftItems(0);
+console.log(myArray);
diff --git a/src/course-master-the-coding/data-structures/arrays/array-03.js b/src/course-master-the-coding/data-structures/arrays/array-03.js
new file mode 100644
index 0000000..b3c5a7a
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/arrays/array-03.js
@@ -0,0 +1,37 @@
+/**
+ * Create a function that reverses a string
+ * 'Hello World'
+ * 'dlroW olleh'
+ *
+ */
+
+function reverseSolution(text) {
+ // check for valid input
+ if (!text || text.length < 2 || typeof text !== 'string')
+ return 'Something is wrong here!';
+
+ const backWards = [];
+ const totalItems = text.length - 1;
+ for (let i = totalItems; i >= 0; i--) {
+ backWards.push(text[i]);
+ }
+ return backWards.join(''); // convert array to string
+}
+
+function reverseSolution01(str) {
+ // check for valid input
+ if (!str || str.length < 2 || typeof str !== 'string')
+ return 'Something is wrong here!';
+ return str.split('').reverse().join('');
+}
+
+// Arrow function
+const reverseSolution02 = (str) => str.split('').reverse().join('');
+
+// Arrow function and Spread (...) Operator
+const reverseSolution03 = (str) => [...str].reverse().join('');
+
+console.log(reverseSolution('Single to Double Quote automatic replace it'));
+console.log(reverseSolution01('Single to Double Quote automatic replace it'));
+console.log(reverseSolution02('Single to Double Quote automatic replace it'));
+console.log(reverseSolution03('Single to Double Quote automatic replace it'));
diff --git a/src/course-master-the-coding/data-structures/arrays/exercise.js b/src/course-master-the-coding/data-structures/arrays/exercise.js
new file mode 100644
index 0000000..2752485
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/arrays/exercise.js
@@ -0,0 +1,49 @@
+// Reference type
+// Context
+// Scope
+// Instantiation
+
+/**
+ * Reference type
+ * Context
+ * Scope
+ * Instantiation
+ */
+
+// Reference
+const object1 = { value: 10 };
+const object2 = object1; // Reference: Objects are called the reference types an javascript.
+const object3 = { value: 15 };
+
+// Context
+
+const object4 = {
+ a: function () {
+ console.log(this);
+ },
+};
+
+// Instantiation
+
+class Player {
+ constructor(name, type) {
+ this.name = name;
+ this.type = type;
+ }
+
+ introduce() {
+ console.log(`Hi I am ${this.name}, I'm a ${this.type}`);
+ }
+}
+
+class Wizard extends Player {
+ constructor(name, type) {
+ super(name, type);
+ }
+
+ play() {
+ console.log(`WEEEEE I'm a ${this.type}`);
+ }
+}
+
+const wizardInit = new Wizard("Shelly", "Programmer"); // Instantiation.
diff --git a/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4-org.js b/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4-org.js
new file mode 100644
index 0000000..9f3f17a
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4-org.js
@@ -0,0 +1,30 @@
+function mergeSortedArrays(firstArray, secondArray) {
+ const mergedArray = []; // allocate empty array.
+ let firstArrayItem = firstArray[0]; // get Array firstArray Index 0 value
+ console.log(firstArrayItem);
+ let secondArrayItem = secondArray[0]; // Get Array Index 0 value.
+ console.log(secondArrayItem);
+ let i = 1;
+ let j = 1;
+
+ // We should actually move these 2 if statements to line 2 so that we do the checks before we do assignments in line 3 and 4!
+ if (firstArray.length === 0) return secondArray;
+ if (secondArray.length === 0) return firstArray;
+
+ while (firstArrayItem || secondArrayItem) {
+ console.log(firstArrayItem, secondArrayItem);
+ if (secondArrayItem === undefined || firstArrayItem < secondArrayItem) {
+ mergedArray.push(firstArrayItem);
+ firstArrayItem = firstArray[i];
+ i++;
+ } else {
+ mergedArray.push(secondArrayItem);
+ secondArrayItem = secondArray[j];
+ j++;
+ }
+ }
+
+ return mergedArray;
+}
+// mergeSortedArrays([0, 3, 4, 31], [3, 4, 6, 30]);
+console.log(mergeSortedArrays([0, 3, 4, 31], [3, 4, 6, 30]));
diff --git a/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4.js b/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4.js
new file mode 100644
index 0000000..08e4559
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4.js
@@ -0,0 +1,34 @@
+"use strict";
+exports.__esModule = true;
+exports.mergeSortedArrays = void 0;
+function mergeSortedArrays(firstArray, secondArray) {
+ var mergedArray = []; // allocate empty array.
+ var firstArrayItem = firstArray[0]; // get Array firstArray Index 0 value
+ console.log(firstArrayItem);
+ var secondArrayItem = secondArray[0]; // Get Array Index 0 value.
+ console.log(secondArrayItem);
+ var i = 1;
+ var j = 1;
+ // We should actually move these 2 if statements to line 2 so that we do the checks before we do assignments in line 3 and 4!
+ if (firstArray.length === 0)
+ return secondArray;
+ if (secondArray.length === 0)
+ return firstArray;
+ while (firstArrayItem || secondArrayItem) {
+ console.log(firstArrayItem, secondArrayItem);
+ if (secondArrayItem === undefined || firstArrayItem < secondArrayItem) {
+ mergedArray.push(firstArrayItem);
+ firstArrayItem = firstArray[i];
+ i++;
+ }
+ else {
+ mergedArray.push(secondArrayItem);
+ secondArrayItem = secondArray[j];
+ j++;
+ }
+ }
+ return mergedArray;
+}
+exports.mergeSortedArrays = mergeSortedArrays;
+// mergeSortedArrays([0, 3, 4, 31], [3, 4, 6, 30]);
+console.log(mergeSortedArrays([0, 3, 4, 31], [3, 4, 6, 30]));
diff --git a/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4.ts b/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4.ts
new file mode 100644
index 0000000..aa1c0de
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/arrays/mergeSortedArrays-array-4.ts
@@ -0,0 +1,33 @@
+export function mergeSortedArrays(
+ firstArray: number[],
+ secondArray: number[]
+): number[] {
+ const mergedArray: number[] = []; // allocate empty array.
+ let firstArrayItem: number | undefined = firstArray[0]; // get Array firstArray Index 0 value
+ console.log(firstArrayItem);
+ let secondArrayItem: number | undefined = secondArray[0]; // Get Array Index 0 value.
+ console.log(secondArrayItem);
+ let i: number = 1;
+ let j: number = 1;
+
+ // We should actually move these 2 if statements to line 2 so that we do the checks before we do assignments in line 3 and 4!
+ if (firstArray.length === 0) return secondArray;
+ if (secondArray.length === 0) return firstArray;
+
+ while (firstArrayItem || secondArrayItem) {
+ console.log(firstArrayItem, secondArrayItem);
+ if (secondArrayItem === undefined || firstArrayItem < secondArrayItem) {
+ mergedArray.push(firstArrayItem);
+ firstArrayItem = firstArray[i];
+ i++;
+ } else {
+ mergedArray.push(secondArrayItem);
+ secondArrayItem = secondArray[j];
+ j++;
+ }
+ }
+
+ return mergedArray;
+}
+// mergeSortedArrays([0, 3, 4, 31], [3, 4, 6, 30]);
+console.log(mergeSortedArrays([0, 3, 4, 31], [3, 4, 6, 30]));
diff --git a/src/course-master-the-coding/data-structures/hash-tables/hash-tables-01.js b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-01.js
new file mode 100644
index 0000000..b01c0ae
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-01.js
@@ -0,0 +1,13 @@
+var user = {
+ age: 34,
+ name: 'Hash Tables',
+ magic: true,
+ scream: function (message) {
+ console.log(message);
+ }
+};
+user.age;
+user.spell = 'Hello';
+user.scream('Hello World');
+// Map --> Gives you some order
+// Set --> No duplicate keys.
diff --git a/src/course-master-the-coding/data-structures/hash-tables/hash-tables-01.ts b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-01.ts
new file mode 100644
index 0000000..8eb0ccc
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-01.ts
@@ -0,0 +1,23 @@
+type userType = {
+ age: number;
+ name: string;
+ magic: boolean;
+ spell?: string;
+ scream: (message: string) => void;
+};
+
+const user: userType = {
+ age: 34,
+ name: 'Hash Tables',
+ magic: true,
+ scream: function (message) {
+ console.log(message);
+ },
+};
+
+user.age;
+user.spell = 'Hello';
+user.scream('Hello World');
+
+// Map --> Gives you some order
+// Set --> No duplicate keys.
diff --git a/src/course-master-the-coding/data-structures/hash-tables/hash-tables-03.js b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-03.js
new file mode 100644
index 0000000..6962d1e
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-03.js
@@ -0,0 +1,109 @@
+var HashTableMain = /** @class */ (function () {
+ function HashTableMain(size) {
+ this.data = [];
+ this.data = new Array(size);
+ }
+ HashTableMain.prototype.hash = function (key) {
+ var hash = 0;
+ for (var i = 0; i < key.length; i++) {
+ hash = (hash + key.charCodeAt(i) * i) % this.data.length;
+ }
+ return hash;
+ };
+ /**
+ * set
+ */
+ HashTableMain.prototype.set = function (key, value) {
+ var address = this.hash(key);
+ if (!this.data[address]) {
+ this.data[address] = [];
+ }
+ this.data[address].push([key, value]);
+ return this.data;
+ };
+ /**
+ * Get
+ */
+ HashTableMain.prototype.get = function (key) {
+ var getAddress = this.hash(key);
+ var currentBucket = this.data[getAddress];
+ if (currentBucket) {
+ for (var i = 0; i < currentBucket.length; i++) {
+ if (currentBucket[i][0] === key) {
+ return currentBucket[i][1];
+ }
+ }
+ }
+ return undefined;
+ };
+ /**
+ * keys
+ */
+ HashTableMain.prototype.keysOld = function () {
+ var keysArray = [];
+ console.log(this.data.length);
+ for (var i = 0; i < this.data.length; i++) {
+ console.log(this.data[i]);
+ if (this.data[i]) {
+ console.log(this.data[i][0]);
+ console.log(this.data[i][0][0]);
+ keysArray.push(this.data[i][0][0]);
+ }
+ }
+ return keysArray;
+ };
+ HashTableMain.prototype.keys = function () {
+ if (!this.data.length) {
+ return undefined;
+ }
+ var result = [];
+ // loop through all the elements
+ for (var i = 0; i < this.data.length; i++) {
+ // if it's not an empty memory cell
+ if (this.data[i] && this.data[i].length) {
+ // but also loop through all the potential collisions
+ if (this.data.length > 1) {
+ for (var j = 0; j < this.data[i].length; j++) {
+ result.push(this.data[i][j][0]);
+ }
+ }
+ else {
+ result.push(this.data[i][0]);
+ }
+ }
+ }
+ return result;
+ };
+ return HashTableMain;
+}());
+// Example
+var myHashTable01 = new HashTableMain(50);
+myHashTable01.set('grapes', 10000);
+myHashTable01.get('grapes');
+myHashTable01.set('apples', 9);
+myHashTable01.get('apples');
+myHashTable01.set('banana', 'Nice foots');
+myHashTable01.get('banana');
+myHashTable01.keys();
+console.log(myHashTable01.data);
+console.log(myHashTable01.keys());
+/**
+ *
+ *
+ *
+ [
+ [
+ [ 'a', 'Nice foots' ],
+ [ 'b', 'Nice foots' ],
+ [ 'c', 'Nice foots' ],
+ [ 'd', 'Nice foots' ],
+ [ 'e', 'Nice foots' ],
+ [ 'f', 'Nice foots' ],
+ [ 'g', 'Nice foots' ]
+ ],
+ <2 empty items>,
+ [ [ 'grapes', 10000 ], [ 'banana', 'Nice foots' ] ],
+ <5 empty items>,
+ [ [ 'apples', 9 ] ]
+]
+ */
diff --git a/src/course-master-the-coding/data-structures/hash-tables/hash-tables-03.ts b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-03.ts
new file mode 100644
index 0000000..3bde124
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-03.ts
@@ -0,0 +1,115 @@
+class HashTableMain {
+ public data: [] | [string, number | string][][] = [];
+ constructor(size: number) {
+ this.data = new Array(size);
+ }
+
+ private hash(key: string): number {
+ let hash: number = 0;
+ for (let i = 0; i < key.length; i++) {
+ hash = (hash + key.charCodeAt(i) * i) % this.data.length;
+ }
+ return hash;
+ }
+
+ /**
+ * set
+ */
+ public set(key: string, value: number | string) {
+ let address = this.hash(key);
+ if (!this.data[address]) {
+ this.data[address] = [];
+ }
+ this.data[address].push([key, value]);
+ return this.data;
+ }
+
+ /**
+ * Get
+ */
+ public get(key: string): undefined | string | number {
+ const getAddress = this.hash(key);
+ const currentBucket = this.data[getAddress];
+
+ if (currentBucket) {
+ for (let i = 0; i < currentBucket.length; i++) {
+ if (currentBucket[i][0] === key) {
+ return currentBucket[i][1];
+ }
+ }
+ }
+ return undefined;
+ }
+
+ /**
+ * keys
+ */
+ public keysOld(): (number | string)[] {
+ const keysArray: (number | string)[] = [];
+ console.log(this.data.length);
+ for (let i = 0; i < this.data.length; i++) {
+ console.log(this.data[i]);
+ if (this.data[i]) {
+ console.log(this.data[i][0]);
+ console.log(this.data[i][0][0]);
+ keysArray.push(this.data[i][0][0]);
+ }
+ }
+ return keysArray;
+ }
+
+ public keys(): undefined | (string | [string, string | number])[] {
+ if (!this.data.length) {
+ return undefined;
+ }
+ let result: (string | [string, string | number])[] = [];
+ // loop through all the elements
+ for (let i = 0; i < this.data.length; i++) {
+ // if it's not an empty memory cell
+ if (this.data[i] && this.data[i].length) {
+ // but also loop through all the potential collisions
+ if (this.data.length > 1) {
+ for (let j = 0; j < this.data[i].length; j++) {
+ result.push(this.data[i][j][0]);
+ }
+ } else {
+ result.push(this.data[i][0]);
+ }
+ }
+ }
+ return result;
+ }
+}
+
+// Example
+const myHashTable01 = new HashTableMain(50);
+myHashTable01.set('grapes', 10000);
+myHashTable01.get('grapes');
+myHashTable01.set('apples', 9);
+myHashTable01.get('apples');
+myHashTable01.set('banana', 'Nice foots');
+myHashTable01.get('banana');
+myHashTable01.keys();
+console.log(myHashTable01.data);
+console.log(myHashTable01.keys());
+
+/**
+ *
+ *
+ *
+ [
+ [
+ [ 'a', 'Nice foots' ],
+ [ 'b', 'Nice foots' ],
+ [ 'c', 'Nice foots' ],
+ [ 'd', 'Nice foots' ],
+ [ 'e', 'Nice foots' ],
+ [ 'f', 'Nice foots' ],
+ [ 'g', 'Nice foots' ]
+ ],
+ <2 empty items>,
+ [ [ 'grapes', 10000 ], [ 'banana', 'Nice foots' ] ],
+ <5 empty items>,
+ [ [ 'apples', 9 ] ]
+]
+ */
diff --git a/src/course-master-the-coding/data-structures/hash-tables/hash-tables-04.js b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-04.js
new file mode 100644
index 0000000..2e29935
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-04.js
@@ -0,0 +1,51 @@
+// Google Question
+/**
+ * Given an array = [2, 5, 1, 2, 3, 5, 1, 2, 4]: It should return 2
+ *
+ * Given an array = [2, 1, 1, 2, 3, 5, 1, 2, 4]: It should return 1
+ *
+ * Given an array = [2, 3, 4, 5]: It should return undefined
+ *
+ */
+// Solution 01:
+function firstRecurringCharacter(array) {
+ for (var i = 0; i < array.length; i++) {
+ var element = array[i];
+ console.log('first : ', element);
+ for (var j = i + 1; j < array.length; j++) {
+ var element_1 = array[j];
+ console.log('Second : ', element_1);
+ if (array[i] === array[j]) {
+ console.log(array[i]);
+ return array[i];
+ }
+ }
+ }
+ console.log('Nothing match : undefined');
+ return undefined;
+}
+// Solution 02:
+function firstRecurringCharacter2(array) {
+ var KeysMap = {};
+ for (var i = 0; i < array.length; i++) {
+ var element = array[i];
+ console.log(element);
+ console.log(KeysMap);
+ if (KeysMap[array[i]] !== undefined) {
+ // if (KeysMap[array[i]] !== i) {
+ console.log(KeysMap[array[i]], i);
+ console.log(array[i]);
+ return array[i];
+ } else {
+ KeysMap[array[i]] = i;
+ }
+ }
+
+ return undefined;
+}
+var array01 = [2, 5, 1, 2, 3, 5, 1, 2, 4];
+var array02 = [2, 1, 1, 2, 3, 5, 1, 2, 4];
+var array03 = [2, 3, 4, 5];
+// Call function
+// firstRecurringCharacter(array01);
+firstRecurringCharacter2(array02);
diff --git a/src/course-master-the-coding/data-structures/hash-tables/hash-tables-04.ts b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-04.ts
new file mode 100644
index 0000000..85f3928
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/hash-tables/hash-tables-04.ts
@@ -0,0 +1,62 @@
+// Google Question
+/**
+ * Given an array = [2, 5, 1, 2, 3, 5, 1, 2, 4]: It should return 2
+ *
+ * Given an array = [2, 1, 1, 2, 3, 5, 1, 2, 4]: It should return 1
+ *
+ * Given an array = [2, 3, 4, 5]: It should return undefined
+ *
+ */
+
+// Solution 01:
+function firstRecurringCharacter(array: number[]): number | undefined {
+ for (let i = 0; i < array.length; i++) {
+ const element = array[i];
+ console.log('first : ', element);
+ for (let j = i + 1; j < array.length; j++) {
+ const element = array[j];
+ console.log('Second : ', element);
+ if (array[i] === array[j]) {
+ console.log(array[i]);
+ return array[i];
+ }
+ }
+ }
+ console.log('Nothing match : undefined');
+ return undefined;
+} // O(n^2)
+
+// Solution 02:
+function firstRecurringCharacter2(array: number[]): undefined | number {
+ let KeysMap: { [key: number]: number } = {};
+ for (let i = 0; i < array.length; i++) {
+ const element = array[i];
+ console.log(element);
+ console.log(KeysMap);
+ if (KeysMap[array[i]] !== undefined) {
+ console.log(KeysMap[array[i]], i);
+ return array[i];
+ } else {
+ KeysMap[array[i]] = i;
+ }
+ }
+ return undefined;
+} // O(n)
+
+// Solution 02:
+const firstRecurringCharacter3 = (array: number[]): undefined | number => {
+ const set: Set = new Set();
+ for (let i = 0; i < array.length; i++) {
+ if (set.has(array[i])) return array[i];
+
+ set.add(array[i]);
+ }
+ return undefined;
+}; // O(n)
+
+const array01 = [2, 5, 1, 2, 3, 5, 1, 2, 4];
+const array02 = [2, 1, 1, 2, 3, 5, 1, 2, 4];
+const array03 = [2, 3, 4, 5];
+// Call function
+// firstRecurringCharacter(array01);
+firstRecurringCharacter2(array02);
diff --git a/src/course-master-the-coding/data-structures/hash-tables/implementation-1.ts b/src/course-master-the-coding/data-structures/hash-tables/implementation-1.ts
new file mode 100644
index 0000000..0898407
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/hash-tables/implementation-1.ts
@@ -0,0 +1,20 @@
+class HashTable {
+ private data: number[];
+ constructor(size: number) {
+ this.data = new Array(size);
+ }
+
+ _hash(key: string) {
+ let hash = 0;
+ for (let i = 0; i < key.length; i++) {
+ hash = (hash + key.charCodeAt(i) * i) % this.data.length;
+ }
+ return hash;
+ }
+}
+
+const myHashTable = new HashTable(50);
+// myHashTable.set('grapes', 10000);
+// myHashTable.get('grapes');
+// myHashTable.set('apples', 9);
+// myHashTable.get('apples');
diff --git a/src/course-master-the-coding/data-structures/linked-lists/linked-lists-01.ts b/src/course-master-the-coding/data-structures/linked-lists/linked-lists-01.ts
new file mode 100644
index 0000000..06374c1
--- /dev/null
+++ b/src/course-master-the-coding/data-structures/linked-lists/linked-lists-01.ts
@@ -0,0 +1,104 @@
+// add a method remove() to the linked list that deletes a node to the specified index.
+
+type Tail = {
+ value: string | number;
+ next: null;
+};
+
+type Head = {
+ value: string | number;
+ next: null;
+};
+
+class LinkedList {
+ head: { value: string | number; next: null };
+ tail: { value: string | number; next: Tail | null };
+ length: number;
+ constructor(value: any) {
+ this.head = {
+ value: value,
+ next: null,
+ };
+ this.tail = this.head;
+ this.length = 1;
+ }
+
+ append(value: number) {
+ const newNode = {
+ value: value,
+ next: null,
+ };
+ this.tail.next = newNode;
+ this.tail = newNode;
+ this.length++;
+ return this;
+ }
+
+ prepend(value: number) {
+ const newNode: any = {
+ value: value,
+ next: null,
+ };
+
+ newNode.next = this.head;
+ this.head = newNode;
+ this.length++;
+ return this;
+ }
+
+ printList() {
+ const array: (string | number)[] = [];
+ let currentNode: any = this.head;
+ while (currentNode !== null) {
+ array.push(currentNode.value);
+ currentNode = currentNode.next;
+ }
+ return array;
+ }
+
+ insert(index: number, value: number) {
+ //Check for proper parameters;
+ if (index >= this.length) {
+ console.log('yes');
+ return this.append(value);
+ }
+
+ const newNode: any = {
+ value: value,
+ next: null,
+ };
+ const leader = this.traverseToIndex(index - 1);
+ const holdingPointer = leader.next;
+ leader.next = newNode;
+ newNode.next = holdingPointer;
+ this.length++;
+ return this.printList();
+ }
+ traverseToIndex(index: number) {
+ //Check parameters
+ let counter = 0;
+ let currentNode: any = this.head;
+ while (counter !== index) {
+ currentNode = currentNode.next;
+ counter++;
+ }
+ return currentNode;
+ }
+
+ remove(index: number) {
+ // Check Parameters
+ const leader = this.traverseToIndex(index - 1);
+ const unwantedNode = leader.next;
+ leader.next = unwantedNode.next;
+ this.length--;
+ return this.printList();
+ }
+}
+
+let myLinkedList = new LinkedList(10);
+myLinkedList.append(5);
+myLinkedList.append(16);
+myLinkedList.prepend(1);
+myLinkedList.insert(2, 99);
+myLinkedList.insert(20, 88);
+myLinkedList.remove(2);
diff --git a/src/data-structure/linked-list/linked-list-node-original.js b/src/data-structure/linked-list/linked-list-node-original.js
new file mode 100644
index 0000000..d136e86
--- /dev/null
+++ b/src/data-structure/linked-list/linked-list-node-original.js
@@ -0,0 +1,10 @@
+export default class LinkedListNode {
+ constructor(value, next = null) {
+ this.value = value;
+ this.next = next;
+ }
+
+ toString(callback) {
+ return callback ? callback(this.value) : `${this.value}`;
+ }
+}
diff --git a/src/data-structure/linked-list/linked-list-original.js b/src/data-structure/linked-list/linked-list-original.js
new file mode 100644
index 0000000..bb5cc38
--- /dev/null
+++ b/src/data-structure/linked-list/linked-list-original.js
@@ -0,0 +1,98 @@
+import LinkedListNode from "./linked-list-node-original.js";
+import Comparator from "../../utils/comparator-original.js";
+
+export default class LinkedList {
+ /**
+ * @param {Function} [comparatorFunction]
+ */
+ constructor(comparatorFunction) {
+ /** @var LinkedListNode */
+ this.head = null;
+ /** @var LinkedListNode */
+ this.tail = null;
+
+ this.compare = new Comparator(comparatorFunction);
+ }
+
+ /**
+ * @param {*} value
+ * @returns {LinkedList}
+ */
+ prepend(value) {
+ // Make new node to be a head.
+ const newNode = new LinkedListNode(value, this.head);
+ this.head = newNode;
+
+ // If there is no tail yet let's make new node a tail.
+ if (!this.tail) {
+ this.tail = newNode;
+ }
+ return this;
+ }
+
+ /**
+ *
+ * @param {*} value
+ * @returns {LinkedList}
+ */
+ append(value) {
+ const newNode = new LinkedListNode(value);
+
+ // If there is no head yet let's make new node a head.
+ if (!this.head) {
+ this.head = newNode;
+ this.tail = newNode;
+ return this;
+ }
+
+ // Attach new node to the end of linked list.
+ this.tail.next = newNode;
+ this.tail = newNode;
+
+ return this;
+ }
+
+ /**
+ *
+ * @returns {LinkedListNode}
+ */
+ deleteHead() {
+ if (!this.head) {
+ return null;
+ }
+
+ const deletedHead = this.head;
+ if (this.head.next) {
+ this.head = this.head.next;
+ } else {
+ this.head = null;
+ this.tail = null;
+ }
+
+ return deletedHead;
+ }
+
+ /**
+ * @return {LinkedListNode[]}
+ */
+ toArray() {
+ const nodes = [];
+
+ let currentNode = this.head;
+ while (currentNode) {
+ nodes.push(currentNode);
+ currentNode = currentNode.next;
+ }
+ return nodes;
+ }
+
+ /**
+ * @param {function} [callback]
+ * @returns {string}
+ */
+ toString(callback) {
+ return this.toArray()
+ .map((node) => node.toString(callback))
+ .toString();
+ }
+}
diff --git a/src/data-structure/queue/note.txt b/src/data-structure/queue/note.txt
new file mode 100644
index 0000000..d3ddc8a
--- /dev/null
+++ b/src/data-structure/queue/note.txt
@@ -0,0 +1,4 @@
+/** Queue **/
+A queue is a particular kind of abstract data type or collection in which the entities in the collection are kept in order. The principle operations on the collection are the addition of entities to the backside/ behind/ back/ rear terminal position, known as enqueue, and removal of entities from the front terminal position, known as dequeue.This makes the queue a First-In-First-Out (FIFO) data structure.
+=> In a FIFO data structure, the first element added to the queue will be the first one to be removed.
+=> This is equivalent to the requirement that once a new element is added all elements that were added before have to be removed before the new element can be removed.
\ No newline at end of file
diff --git a/src/data-structure/queue/queue-original.js b/src/data-structure/queue/queue-original.js
new file mode 100644
index 0000000..c4730de
--- /dev/null
+++ b/src/data-structure/queue/queue-original.js
@@ -0,0 +1,68 @@
+import LinkedList from "../linked-list/linked-list-original.js";
+
+export default class Queue {
+ constructor() {
+ /**
+ * We're going to implement Queue based on LinkedList since the two
+ * structure are quite similar. Namely, they both operate mostly on
+ * the element at the beginning and the end. Compare enqueue/dequeue
+ * operations of Queue with append/deleteHead operations of LinkedList
+ */
+ this.linkedList = new LinkedList();
+ }
+
+ /**
+ *
+ * @returns {boolean}
+ */
+ isEmpty() {
+ return !this.linkedList.head;
+ }
+
+ /**
+ * Read the element at the front of the queue without removing it.
+ * @returns {*}
+ */
+ peek() {
+ if (this.isEmpty()) {
+ return null;
+ }
+
+ return this.linkedList.head.value;
+ }
+
+ /**
+ * Add a new element to the end of the queue (the tail of the linked list).
+ * This element will be processed after all elements ahead of it.
+ * @param {*} value
+ */
+ enqueue(value) {
+ this.linkedList.append(value);
+ }
+
+ /**
+ * Remove the element at the front of the queue (the head of the linked list)
+ * If the queue is empty, return null.
+ * @returns {*}
+ */
+ dequeue() {
+ const removedHead = this.linkedList.deleteHead();
+ return removedHead ? removedHead.value : null;
+ }
+
+ /**
+ * @param [callback]
+ * @returns {string}
+ */
+ toString(callback) {
+ // Return string representation of the queue's linked list.
+ return this.linkedList.toString(callback);
+ }
+}
+
+const queue = new Queue();
+
+queue.enqueue(1);
+queue.enqueue(2);
+
+console.log(queue);
diff --git a/src/data-structure/queue/queue.test.js b/src/data-structure/queue/queue.test.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/exercises/arrays/array-01.ts b/src/exercises/arrays/array-01.ts
new file mode 100644
index 0000000..9d06da0
--- /dev/null
+++ b/src/exercises/arrays/array-01.ts
@@ -0,0 +1,23 @@
+// Introducing Arrays
+const arrayInit: number[] = [1, 2, 3, 4];
+
+// insertion
+const array_insertion: number[] = [1, 2, 3, 4];
+array_insertion.push(5);
+array_insertion.push(7);
+array_insertion.push(2);
+
+// Deletion
+// This .pop() method removes the last-added element of the array.
+const array_deletion: number[] = [1, 2, 3, 4];
+array_deletion.pop();
+array_deletion.pop();
+
+// This .shift() method will remove the first element and return it.
+array_deletion.shift();
+array_deletion.shift();
+
+// Access
+const array_access = [1, 2, 3, 4];
+array_access[0];
+array_access[1];
diff --git a/src/exercises/number/isPrime-01.ts b/src/exercises/number/isPrime-01.ts
new file mode 100644
index 0000000..d7ccc3e
--- /dev/null
+++ b/src/exercises/number/isPrime-01.ts
@@ -0,0 +1,64 @@
+/**
+ *
+ * Number Algorithms
+ * One of the most discussed algorithms involving numbers is for testing whether a number is a prime number..
+ * @returns
+ */
+// Algorithm 01: A primality test can be done by iterating from 2 to n, checking whether modulus division (remainder) is equal to zero.
+// 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
+function isPrimeOne(n: number) {
+ if (n <= 1) {
+ return false;
+ }
+
+ // check from 2 to n - 1;
+ for (let i = 2; i < n; i++) {
+ if (n % i == 0) {
+ return false;
+ }
+ }
+
+ return true;
+} // Time complexity: O(n)
+
+function isPrimeTwo(n: number) {
+ if (n <= 1) return false;
+ if (n <= 3) return true;
+
+ // This is checked so that we can skip
+ // Middle five numbers in below loop
+
+ if (n % 2 == 0 || n % 3 == 0) return false;
+
+ for (let i = 5; i * i <= n; i = i + 6) {
+ if (n % i == 0 || n % (i + 2) == 0) return false;
+ }
+ return true;
+} // O(sqrt(n))
+
+function primeFactors(n: number) {
+ // Print the number of 2s that divide n
+ while (n % 2 == 0) {
+ console.log(2);
+ n = n / 2;
+ }
+
+ // n must be odd at this point. So we can skip one element
+ // note i = i + 2;
+ for (let i = 3; i * i <= n; i = i + 2) {
+ // While i divides n, print i and divide n
+ while (n % i == 0) {
+ console.log(i);
+ n = n / i;
+ }
+ }
+ // This condition is to handle the case when n is a prime number greater than 2
+ if (n > 2) {
+ console.log(n);
+ }
+} // O(sqrt(n))
+
+// Random Number Generator
+Math.random() * 100; // floats between 0 and 100;
+Math.random() * 25 + 5; // floats between 5 and 30
+Math.random() * 10 - 100; // floats between -100 and -90
diff --git a/src/exercises/number/isPrime.ts b/src/exercises/number/isPrime.ts
new file mode 100644
index 0000000..e594983
--- /dev/null
+++ b/src/exercises/number/isPrime.ts
@@ -0,0 +1,30 @@
+// A primality test can be done by iterating from 2 to n, checking whether modulus division (remainder) is equal to zero.
+function isPrime(n: number) {
+ if (n <= 1) {
+ return false;
+ }
+
+ // check from 2 to n - 1;
+ for (let i = 2; i < n; i++) {
+ if (n % i == 0) {
+ return false;
+ }
+ }
+
+ return true;
+} // Time complexity: O(n)
+
+function isPrime01(n: number) {
+ if (n <= 1) return false;
+ if (n <= 3) return true;
+
+ // This is checked so that we can skip
+ // Middle five numbers in below loop
+
+ if (n % 2 == 0 || n % 3 == 0) return false;
+
+ for (let i = 5; i * i <= n; i = i + 6) {
+ if (n % i == 0 || n % (i + 2) == 0) return false;
+ }
+ return true;
+} // O(sqrt(n))
diff --git a/src/exercises/number/modularExponentiation.ts b/src/exercises/number/modularExponentiation.ts
new file mode 100644
index 0000000..a2cf8d4
--- /dev/null
+++ b/src/exercises/number/modularExponentiation.ts
@@ -0,0 +1,107 @@
+/**
+ * 1.
+ * Given three numbers x, y, and p, compute (xˆy) % p. (This is modular exponentiation.)
+ * Here, x is the base, y is exponent, and p is the modulus.
+ * Modular exponentiation is a type of exponentiation performed over a modulus,
+ * which is useful in computer science and used in the field of public-key encryption algorithms
+ *
+ * @param base
+ * @param exponent
+ * @param modulus
+ * @returns
+ */
+function modularExponentiation(base: number, exponent: number, modulus: number): number {
+ return Math.pow(base, exponent) % modulus;
+}
+
+function modularExponentiation01(base: number, exponent: number, modulus: number): number {
+ if (modulus == 1) return 0;
+
+ let value = 1;
+
+ for (let i = 0; i < exponent; i++) {
+ value = (value * base) % modulus;
+ }
+
+ return value;
+}
+
+/**
+ * 2.
+ * Print all primes lass than n.
+ *
+ * Simply iterate from 0 to n and print any prime numbers where isPrime() evaluates to true.
+ *
+ */
+
+function allPrimesLessThanN(n: number): void {
+ for (let i = 0; i < n; i++) {
+ if (isPrimeNumber(i)) {
+ console.log(i);
+ }
+ }
+} // time complexity of O(n sqrt(n)) is run n times.
+
+function isPrimeNumber(number: number): boolean {
+ if (number <= 1) return false;
+ if (number <= 3) return true;
+
+ // This is checked so that we can skip
+ // middle five number in below loop
+
+ for (let i = 5; i * i < number; i = i + 6) {
+ if (number % i == 0 || number % (i + 2) == 0) {
+ return false;
+ }
+ }
+
+ return true;
+} // time complexity of O(sqrt(n)) is run n times.
+
+/**
+ * 3.
+ *
+ * Check for a set of prime factors.
+ *
+ * The time complexity of maxDivide is a logarithmic function which depends on divisor and the number.
+ * When testing primes of 2, 3, and 5, the logarithmic of 2 (log2 (n)) yields the highest time complexity.
+ */
+
+function maxDivide(number: number, divisor: number): number {
+ while (number % divisor == 0) {
+ number /= divisor;
+ }
+ return number;
+} // Time Complexity for maxDivide(number, divisor): O(logdivisor(number))
+
+function isUgly(number: number): boolean {
+ number = maxDivide(number, 2);
+ number = maxDivide(number, 3);
+ number = maxDivide(number, 5);
+
+ return number === 1;
+} // Time Complexity for isUgly: O(log2(n))
+
+/**
+ * Iterate this over n, and now the list of ugly numbers can be returned.
+ * @param n
+ * @returns
+ *
+ * The isUgly function is limited by the time complexity of maxDivide(number, 2).
+ * Hence, arrayNUglyNumbers has n times that time complexity.
+ */
+
+function arrayNUglyNumbers(n: number): number[] {
+ let counter: number = 0;
+ let currentNumber: number = 1;
+ let uglyNumbers: number[] = [];
+
+ while (counter != n) {
+ if (isUgly(currentNumber)) {
+ counter++;
+ uglyNumbers.push(currentNumber);
+ }
+ currentNumber++;
+ }
+ return uglyNumbers;
+} // Time Complexity for arrayNUglyNumbers: O(n(log2(n)))
diff --git a/src/exercises/regular-expressions/regular-expressions-101.ts b/src/exercises/regular-expressions/regular-expressions-101.ts
new file mode 100644
index 0000000..74d1960
--- /dev/null
+++ b/src/exercises/regular-expressions/regular-expressions-101.ts
@@ -0,0 +1,61 @@
+/**
+ * Regular Expressions
+ *
+ * Regular expressions (regexes) are a set of characters that define a search pattern.
+ *
+ * The constructor for the RegExp object takes two parameters:
+ * the regular expression and the optional match settings, as shown here:
+ *
+ * i ==> Perform case-insensitive matching
+ * g ==> Perform a global match (find all matches rather than stopping after first match)
+ * m ==> Perform multiline matching
+ *
+ * RegExp has the following two functions:
+ * 1. search(): Tests for matches in a string. This returns the index of the match.
+ * 2. match(): Tests for matches. This returns all the matches.
+ *
+ * The JavaScript String object also has the following two regex-related functions that accept the RegExp object as an argument:
+ * 1. exec(): Tests for matches in a string. This returns the first match.
+ * 2. test(): Tests for matches in a string. This returns true or false.
+ */
+
+// The following are five regexes that developers often use.
+
+// 1. Any Numeric Characters
+const numeric = /\d+/;
+numeric.test('123444'); // returns true
+numeric.test('333ass'); // returns true
+numeric.test('5asdasd'); // returns true
+numeric.test('asdasd'); // returns false
+
+// 2. Only Numeric Characters
+const onlyNumeric = /^\d+$/;
+onlyNumeric.test('123'); // true
+onlyNumeric.test('123a'); // false
+onlyNumeric.test('a'); // false
+
+// 3. Floating Numeric Characters
+const floatNumeric = /^[0-9]*.[0-9]*[1-9]+$/;
+
+floatNumeric.test('12'); // true
+floatNumeric.test('1'); // false
+floatNumeric.test('12.3'); // true
+
+// 4. Only Alpha Numeric Characters
+const alphaNumeric = /[a-zA-Z0-9]/;
+alphaNumeric.test('somethingELSE'); // true
+alphaNumeric.test('hello'); // true
+alphaNumeric.test('112a'); // true
+alphaNumeric.test('112'); // true
+alphaNumeric.test('^'); // false
+
+// 5. Query String
+
+const url = 'http://your.domain/product.aspx?category=4&product_id=2140&query=lcd+tv';
+let queryString = {};
+url.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'), function ($0, $1, $2, $3) {
+ queryString[$1] = $3;
+});
+console.log(queryString);
+
+// http://your.domain/product.aspx: undefined, category: '4', product_id: '2140', query: 'lcd+tv'
diff --git a/src/exercises/string/exercise-01.ts b/src/exercises/string/exercise-01.ts
new file mode 100644
index 0000000..539a16a
--- /dev/null
+++ b/src/exercises/string/exercise-01.ts
@@ -0,0 +1,65 @@
+/**
+ * JavaScript String Primitive
+ * JavaScript's native String primitive comes with various common string functions.
+ *
+ * 1. String Access
+ * 2. String Comparison
+ * 3. String Search
+ * 4. String Decomposition
+ * 5. String Replace
+ */
+
+// 1. String Access
+'Hello world'.charAt(1); // returns 'e';
+'YouTube'.substring(1, 2); // returns 'o' : multiple-character access.
+'YouTube'.substring(3, 7); // returns 'Tube'
+'YouTube'.substring(1); // returns 'ouTube'
+
+// 2. String Comparison
+const a = 'a';
+const b = 'b';
+
+console.log(a < b); // Prints true;
+
+const c = 'add';
+const d = 'ab';
+
+console.log(a < b); // Prints 'false'
+
+// 3. String Search
+
+'Red Dragon'.indexOf('Red'); // returns 0;
+'Red Dragon'.indexOf('RedScale'); // returns -1
+'Red Dragon'.indexOf('Dragon', 0); // returns 4
+
+function existsInString(stringValue: string, search: string) {
+ return stringValue.indexOf(search) !== -1;
+}
+
+console.log(existsInString('red', 'r')); // prints 'true';
+console.log(existsInString('red', 'b')); // prints 'false';
+
+const stringLong = 'He is my king from this day until his last day';
+let count = 0;
+let pos = stringLong.indexOf('a');
+
+while (pos !== -1) {
+ count++;
+ pos = stringLong.indexOf('a', pos + 1);
+}
+
+console.log(count);
+
+'Red Dragon'.startsWith('Red'); // Returns true
+'Red Dragon'.endsWith('Dragon'); // Returns true
+
+// 04. String Decomposition
+const commaString = 'chicken,noodle,soup,broth';
+commaString.split(','); // returns ["chicken", "noodle", "soup", "broth"]
+
+const onlyString = 'chicken';
+onlyString.split('');
+
+// 05. String Replace
+// .replace(string, replaceString) replaces a specified string within a string variable with another string.
+'Wizard of Oz'.replace('Wizard', 'Witch'); // 'Witch of Oz';
diff --git a/src/exercises/string/shortening-by-decode-id.ts b/src/exercises/string/shortening-by-decode-id.ts
new file mode 100644
index 0000000..1cc3997
--- /dev/null
+++ b/src/exercises/string/shortening-by-decode-id.ts
@@ -0,0 +1,15 @@
+const DICTIONARY01 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.split('');
+
+function decodeId(id: string) {
+ const base: number = DICTIONARY01.length;
+ let decoded: string | number = 0;
+
+ for (let i = 0; i < id.split('').length; i++) {
+ decoded = decoded * base + DICTIONARY01.indexOf(id.charAt(i));
+ }
+
+ return decoded;
+}
+
+console.log(encodeId(11231230)); // prints 'VhU2'
+console.log(decodeId('VhU2')); // prints '11231230'
diff --git a/src/exercises/string/shortening-by-encode-id.ts b/src/exercises/string/shortening-by-encode-id.ts
new file mode 100644
index 0000000..a95c269
--- /dev/null
+++ b/src/exercises/string/shortening-by-encode-id.ts
@@ -0,0 +1,33 @@
+/**
+ * Have you ever wondered how URL-shortening sites such as Bit.ly work? A simplified URL compression algorithm follows a certain structure,
+ *
+ * For the shortening part, the following algorithm can be used.
+ * There are 62 possible letters and numbers,
+ * consisting of 26 lowercase letters, 26 uppercase letters, and 10 numbers (0 to 9).
+ */
+
+const DICTIONARY = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.split('');
+
+function encodeId(id: number) {
+ const base = DICTIONARY.length;
+ let encoded: string | number = '';
+
+ if (id === 0) {
+ return DICTIONARY[0];
+ }
+
+ while (id > 0) {
+ encoded += DICTIONARY[id % base];
+ id = Math.floor(id / base);
+ }
+
+ return reverseWord(encoded);
+}
+
+function reverseWord(str: string) {
+ let reversed: string = '';
+ for (let i = str.length - 1; i >= 0; i--) {
+ reversed += str.charAt(i);
+ }
+ return reversed;
+}
diff --git a/src/hackerrank/problem-solving/algorithms-001-003.ts b/src/hackerrank/problem-solving/algorithms-001-003.ts
new file mode 100644
index 0000000..eae6702
--- /dev/null
+++ b/src/hackerrank/problem-solving/algorithms-001-003.ts
@@ -0,0 +1,76 @@
+//001. sum of two integers
+function solveMeFirst(a: number, b: number) {
+ // Hint: Type return a+b below
+ return a + b;
+}
+// 002. Sum of an Array
+// Calculate the Sum of an Array Using the reduce() Method in JavaScript
+/*
+ * Complete the 'simpleArraySum' function below.
+ *
+ * The function is expected to return an INTEGER.
+ * The function accepts INTEGER_ARRAY ar as parameter.
+ */
+
+function simpleArraySum(ar: number[]): number {
+ // Write your code here
+ // parameter 'ar' ar: an array of integers
+ const sum: number = ar.reduce((accumulator, currentValue) => {
+ return accumulator + currentValue;
+ }, 0);
+ // Return the sum of the array
+ return sum;
+}
+
+// 003: compare the triplets
+
+/*
+ * Complete the 'compareTriplets' function below.
+ *
+ * The function is expected to return an INTEGER_ARRAY.
+ * The function accepts following parameters:
+ * 1. INTEGER_ARRAY a
+ * 2. INTEGER_ARRAY b
+ */
+
+function compareTriplets(a: number[], b: number[]): number[] {
+ const score: number[] = [];
+ let pointOfAlice: number = 0;
+ let pointOfBob: number = 0;
+ // Alice and Bob
+ // input a = [1, 2, 3] , b = [3, 4, 1]
+ // comparison a[i] > b[i], a[i] < b[i] , a[i] == b[i]
+ // retrun array [1, 1] pointOfAlice and Bob score position
+
+ for (let i = 0; i <= 2; i++) {
+ if (a[i] == b[i]) {
+ pointOfAlice;
+ pointOfBob;
+ } else if (a[i] > b[i]) {
+ pointOfAlice += 1;
+ } else if (a[i] < b[i]) {
+ pointOfBob += 1;
+ }
+ }
+
+ return score.concat(pointOfAlice, pointOfBob);
+}
+
+function compareTripletsVariationOne(a: number[], b: number[]): number[] {
+ let pointOfAlice: number = 0;
+ let pointOfBob: number = 0;
+ // Alice and Bob
+ // input a = [1, 2, 3] , b = [3, 4, 1]
+ // comparison a[i] > b[i], a[i] < b[i] , a[i] == b[i]
+ // retrun array [1, 1] pointOfAlice and Bob score position
+
+ for (let i = 0; i < a.length; i++) {
+ if (a[i] > b[i]) {
+ pointOfAlice += 1;
+ } else if (a[i] < b[i]) {
+ pointOfBob += 1;
+ }
+ }
+
+ return [pointOfAlice, pointOfBob];
+}
diff --git a/src/hackerrank/problem-solving/algorithms-004-010.js b/src/hackerrank/problem-solving/algorithms-004-010.js
new file mode 100644
index 0000000..1a85c96
--- /dev/null
+++ b/src/hackerrank/problem-solving/algorithms-004-010.js
@@ -0,0 +1,246 @@
+// 004. Sum of an Array
+
+/*
+ * Complete the 'aVeryBigSum' function below.
+ *
+ * The function is expected to return a LONG_INTEGER.
+ * The function accepts LONG_INTEGER_ARRAY ar as parameter.
+ */
+
+function aVeryBigSum(ar) {
+ // Write your code here
+ const sum = ar.reduce((acct, curr) => {
+ return acct + curr;
+ }, 0);
+ return sum;
+}
+
+// 004: Diagonal Difference
+
+function diagonalDifference(arr) {
+ const lengthOfArray = arr.length; // Length of the array
+ let leftToRight = 0;
+ let rightToLeft = 0;
+
+ for (let i = 0; i < lengthOfArray; i++) {
+ for (let j = 0; j < lengthOfArray; j++) {
+ // Find The left-to-right diagonal
+ if (i === j) {
+ leftToRight += arr[i][j];
+ }
+ // Find The right to left diagonal diagonal
+ if (i + j === lengthOfArray - 1) {
+ rightToLeft += arr[i][j];
+ }
+ }
+ }
+
+ // calculate the absolute difference between the sums of its diagonals.
+ return Math.abs(leftToRight - rightToLeft);
+}
+
+const myArray = [
+ [0, 1, 2, 3],
+ [4, 5, 6, 7],
+ [8, 9, 0, 0],
+ [4, 5, 6, 7],
+];
+diagonalDifference(myArray);
+
+// 005: Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero. Print the decimal value of each fraction on a new line with places after the decimal.
+/*
+ * Complete the 'plusMinus' function below.
+ *
+ * The function accepts INTEGER_ARRAY arr as parameter.
+ */
+
+function plusMinus(arr) {
+ const arrLength = arr.length;
+ let positiveCount = 0;
+ let negativeCount = 0;
+ let zeroCount = 0;
+ for (let i = 0; i < arrLength; i++) {
+ if (arr[i] === 0) {
+ zeroCount += 1;
+ } else if (arr[i] > 0) {
+ positiveCount += 1;
+ } else if (arr[i] < 0) {
+ negativeCount += 1;
+ }
+ }
+ const calculatePos = (positiveCount / arrLength).toFixed(6);
+ const calculateNeg = (negativeCount / arrLength).toFixed(6);
+ const calculateZero = (zeroCount / arrLength).toFixed(6);
+ console.log(calculatePos + '\n' + calculateNeg + '\n' + calculateZero);
+}
+arrayOfIntegers = [-4, 3, -9, 0, 4, 1];
+plusMinus(arrayOfIntegers);
+
+/**
+ * 006:
+ * Given an array of bird sightings where every element represents a bird type id,
+ * determine the id of the most frequently sighted type.
+ * If more than 1 type has been spotted that maximum amount, return the smallest of their ids.
+ * @param {*} arr == [1, 4, 4, 4, 5, 3]
+ * @returns smallest of their ids.
+ */
+function migratoryBirds(arr) {
+ // Array Length declaration
+ const arrayLength = arr.length;
+ // Story hash map object where object will be store like [1, 4, 4, 4, 5, 3] => {1: 1, 3: 1, 4: 3, 5: 1}
+ let hashMap = {};
+
+ // determine the id of the most frequently sighted type
+ for (let i = 0; i < arrayLength; i++) {
+ let num = arr[i]; // array value
+ if (!hashMap[num]) {
+ hashMap[num] = 1; // assign object key when object key is not available inside 'hashMap'
+ } else {
+ hashMap[num]++; // Increment object key value when keys are the same;
+ }
+ }
+ let freq = 0; // Store Key value
+ let freqNum = null; // Store Key
+ // If more than 1 type has been spotted that maximum amount,
+ // return the smallest of their ids.
+ for (let num in hashMap) {
+ if (hashMap[num] > freq) {
+ freq = hashMap[num]; // Assign key value
+ freqNum = num; // story key
+ }
+ }
+ return freqNum; // return l
+}
+
+const arrayOfBirdSightings = [1, 4, 4, 4, 5, 3];
+
+migratoryBirds(arrayOfBirdSightings);
+
+// 007: Staircase detail
+
+function staircase(n) {
+ const line = Array(n + 1).fill(' ');
+ for (let i = n - 1; i >= 0; i--) {
+ line[i] = '#';
+ console.log(line[i]);
+ }
+}
+
+staircase(6);
+
+/**
+ * 008
+ * Given five positive integers,
+ * find the minimum and maximum values that can be calculated by summing exactly four of the five integers.
+ * Then print the respective minimum and maximum values as a single line of two space-separated long integers.
+ * @param {*} arr = [1, 2, 3, 7, 5, 9];
+ * Complete the 'miniMaxSum' function below.
+ *
+ * The function accepts INTEGER_ARRAY arr as parameter.
+ */
+
+function miniMaxSum(arr) {
+ // Array Length
+ const arrayLength = arr.length;
+ // minimum sum
+ let minSum = 0;
+ // maximum sum
+ let maxSum = 0;
+ // sort an array of integers array.
+ arr.sort((a, b) => a - b);
+
+ for (let i = 0; i < arrayLength; i++) {
+ // Iterate starting from the 0 index and finish before the last index
+ if (i < arrayLength - 1) {
+ minSum += arr[i];
+ }
+
+ // Iterate starting from the 1 index and finish the last index
+ if (i > 0 && i < arrayLength) {
+ maxSum += arr[i];
+ }
+ }
+
+ console.log(`${minSum} ${maxSum}`);
+}
+
+const miniMaxSumArray = [1, 2, 3, 7, 5, 9];
+miniMaxSum(miniMaxSumArray);
+
+/**
+ * 009
+ * You are in charge of the cake for a child's birthday.
+ * You have decided the cake will have one candle for each year of their total age.
+ * They will only be able to blow out the tallest of the candles.
+ * Count how many candles are tallest.
+ *
+ * Complete the 'birthdayCakeCandles' function below.
+ * The function is expected to return an INTEGER.
+ * The function accepts INTEGER_ARRAY candles as parameter.
+ */
+
+function birthdayCakeCandles(candles) {
+ // array length
+ const arrayLength = candles.length;
+ // tallest candle
+ const arrayMaxValue = Math.max(...candles);
+ // the number of candles that are tallest
+ let tallestCandles = 0;
+ for (let i = 0; i < arrayLength; i++) {
+ // check array max value and iterate value are same
+ if (candles[i] === arrayMaxValue) tallestCandles += 1;
+ }
+ // console.log(tallestCandles);
+ return tallestCandles;
+}
+
+/**
+ * 010
+ * Given a year, Y , find the date of the 256th day of that year according to the official Russian calendar during that year.
+ * Then print it in the format dd.mm.yyyy, where dd is the two-digit day, mm is the two-digit month, and yyyy is .
+ *
+ * Complete the 'dayOfProgrammer' function below.
+ *
+ * The function is expected to return a STRING
+ *
+ * The function accepts INTEGER year as parameter
+ */
+
+function dayOfProgrammer(year) {
+ let day = 13; // by default
+
+ // The transition from the Julian to Gregorian calendar system occurred in 1918
+ if (year === 1918) {
+ day += 13;
+ }
+ // From 1700 to 1917, Russia's official calendar was the Julian calendar;
+ else if (year < 1918) {
+ /**
+ * In the Julian calendar,
+ *
+ * **leap years are divisible by 4
+ */
+
+ if (year % 4 === 0) {
+ day = 12;
+ } else {
+ day = 13;
+ }
+ }
+ // since 1919 they used the Gregorian calendar system.
+ else if (year > 1918) {
+ /**
+ * in the Gregorian calendar, leap years are either of the following:
+ * ** Divisible by 400.
+ * ** Divisible by 4 and not divisible by 100.
+ */
+ if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
+ day = 12;
+ } else {
+ day = 13;
+ }
+ }
+
+ return `${day}.09.${year}`;
+}
+dayOfProgrammer(1917);
diff --git a/src/hackerrank/problem-solving/algorithms-011-020.js b/src/hackerrank/problem-solving/algorithms-011-020.js
new file mode 100644
index 0000000..b4d87b8
--- /dev/null
+++ b/src/hackerrank/problem-solving/algorithms-011-020.js
@@ -0,0 +1,62 @@
+/**
+ * 011: Given a time in 12-hour AM/PM format, convert it to military (24-hour) time.
+ */
+
+/*
+ * Complete the 'timeConversion' function below.
+ *
+ * The function is expected to return a STRING.
+ * The function accepts STRING s as parameter.
+ */
+
+function timeConversion(s) {
+ // get time slice
+ // const [hours, minutes, modifier] = s.split(':');
+ // console.log(hours,minutes,modifier)
+ const time = s.match(/(\d+):(\d+):(\d+)(\w+)/);
+ let hours = time[1];
+ const minutes = time[2];
+ const seconds = time[3];
+ const modifier = time[4];
+
+ if (hours === '12') {
+ hours = '00';
+ }
+
+ if (modifier === 'PM') {
+ hours = parseInt(hours, 10) + 12;
+ }
+
+ return `${hours}:${minutes}:${seconds}`;
+}
+
+/**
+ * 012: HackerLand University has the following grading policy:
+ *
+ * Every student receives a grade in the inclusive range from 0 to 100.
+ * Any grade less than 40 is a failing grade.
+ *
+ * Sam is a professor at the university and likes to round each student's grade according to these rules:
+ * If the difference between the grade and the next multiple of 5 is less than 3, round grade up to the next multiple of 5.
+ * If the value of grade is less than 38, no rounding occurs as the result will still be a failing grade.
+ */
+
+function gradingStudents(grades) {
+ let count = [];
+ for (let i = 0; i < grades.length; i++) {
+ if (grades[i] % 5 == 3 && grades[i] >= 38) {
+ count.push(grades[i] + 2);
+ } else if (grades[i] % 5 == 4 && grades[i] >= 38) {
+ count.push(grades[i] + 1);
+ } else {
+ count.push(grades[i]);
+ }
+ }
+ return count;
+}
+
+/**
+ * 013: HackerLand University has the following grading policy:
+ *
+ *
+ */
diff --git a/src/hackerrank/simple-array-sum.ts b/src/hackerrank/simple-array-sum.ts
new file mode 100644
index 0000000..d80ee28
--- /dev/null
+++ b/src/hackerrank/simple-array-sum.ts
@@ -0,0 +1,17 @@
+// Calculate the Sum of an Array Using the reduce() Method in JavaScript
+/*
+ * Complete the 'simpleArraySum' function below.
+ *
+ * The function is expected to return an INTEGER.
+ * The function accepts INTEGER_ARRAY ar as parameter.
+ */
+
+function SimpleArraySum(ar: number[]): number {
+ // Write your code here
+ // parameter 'ar' ar: an array of integers
+ const sum: number = ar.reduce((accumulator, currentValue) => {
+ return accumulator + currentValue;
+ }, 0);
+ // Return the sum of the array
+ return sum;
+}
diff --git a/src/interview/interview-01.js b/src/interview/interview-01.js
new file mode 100644
index 0000000..c1dbaaf
--- /dev/null
+++ b/src/interview/interview-01.js
@@ -0,0 +1,131 @@
+/**
+ * Given 2 arrays,
+ * create a function that let's a user know (true/false) whether these two arrays contain any common items.
+ *
+ * For example
+ * const array1 = ['a', 'b', 'c', 'd', 'f'];
+ * const array2 = ['z', 'y', 'x'];
+ * Should return true
+ *
+ * 2 parameters - arrays - no size limit
+ * return true or false
+ */
+
+const array1 = ["a", "b", "c", "d"];
+const array2 = ["w", "x", "y", "z"];
+// Way 1:
+function containsCommonItem(users, items) {
+ for (let i = 0; i < users.length; i++) {
+ for (let j = 0; j < items.length; j++) {
+ if (users[i] === items[j]) return true;
+ }
+ }
+ return false;
+}
+
+// O(users * items)
+// O(1) - Space complexity
+
+//containsCommonItem(array1, array2);
+
+// Way 2:
+
+function containsCommonItem2(users, items) {
+ // Loop through first array and create object where properties === items in the array
+ // Can we assume always 2 params?
+
+ let map = {};
+ for (let i = 0; i < users.length; i++) {
+ if (!map[users[i]]) {
+ const item = users[i];
+ map[item] = true;
+ }
+ }
+
+ // Loop through second array and check if item in second array exist on created object.
+ for (let j = 0; j < items.length; j++) {
+ if (map[items[j]]) return true;
+ }
+ return false;
+}
+
+// O(a + b)
+// O(users, items)
+// O(users) - space complexity
+
+// Way 3
+function containsCommonItem3(arr1, arr2) {
+ return arr1.some((item) => arr2.includes(item));
+}
+
+containsCommonItem(array1, array2);
+containsCommonItem2(array1, array2);
+containsCommonItem3(array1, array2);
+
+
+Std_arr.sort((a, b) => a.name.localeCompare(b.name));
+
+function orderByName(users) {
+ // // Sort the array of objects based on the 'name' property
+ users.sort((a, b) => a.name.localeCompare(b.name));
+}
+
+orderByName([{name: "Charles"}, {name: "Alice"}, {name: "bob"}])
+# => [{name: "Alice"}, {name: "bob"}, {name: "Charles"}]
+
+
+
+const getReferrers = function (user_list) {
+ const users = JSON.parse(JSON.stringify(user_list));
+ let referrerUsers = [];
+ for (i = 0; i < users.length; i++) {
+ users[i].referrer = users.find( (user) => {
+ if (user.id == users[i]["referrerId"]) {
+ return true;
+ }
+ })
+ users[i].referrer = users[i].referrer && users[i].referrer.name || null;
+ referrerUsers.push(users[i])
+ }
+
+ return referrerUsers;
+}
+
+
+
+
+getReferrers([
+ { id: 1, referrerId: 1, name: "Joe" },
+ { id: 2, referrerId: 2, name: "Jane" },
+ { id: 3, referrerId: null, name: "Liane" },
+ { id: 4, referrerId: null, name: "Aane" },
+])
+Please write a program to build a list containing the numbers from 1 to 100,
+except that multiples of 3 are replaced by "Fizz",
+the multiples of 5 are removed,
+and multiples of 15 are replaced by "FizzBuzz".
+
+
+function listOfContainWithFizzBuzz() {
+ // Storage of list.
+ const lists = [];
+
+ for (let i = 1; i <= 100; i++) {
+ if (i % 15 === 0) { // multiples of 15 are replaced by "FizzBuzz"
+ lists.push("FizzBuzz");
+ } else if (i % 3 === 0) { // multiples of 3 are replaced by "Fizz"
+ lists.push("Fizz");
+ } else if (i % 5 === 0) { // multiples of 5 are removed
+ continue;
+ } else {
+ lists.push(i); // Normal case without apply any logic.
+ }
+ }
+
+ return lists;
+}
+
+const result = buildList();
+console.log(result);
+
+
diff --git a/src/interview/interview-02.js b/src/interview/interview-02.js
new file mode 100644
index 0000000..df9d5d0
--- /dev/null
+++ b/src/interview/interview-02.js
@@ -0,0 +1,48 @@
+// Naive
+function hasPairWithSum(arr, sum) {
+ const len = arr.length;
+ let count = 0;
+
+ for (let i = 0; i < len - 1; i++) {
+ console.log("arr[i] ", arr[i]);
+ for (let j = i + 1; j < len; j++) {
+ console.log("arr[j] ", arr[j]);
+ if (arr[i] + arr[j] === sum) {
+ console.log("Sum ", arr[i] + arr[j]);
+ count = count + 1; // Match count.
+ console.log("count ", count);
+ // return true;
+ }
+ }
+ }
+
+ return false;
+}
+
+const array = [6, 3, 3, 2, 1, 7];
+const sum = 9;
+
+// hasPairWithSum(array, sum);
+
+// Better way
+
+function hasPairWithSum2(arr, sum) {
+ const setFun = new Set();
+ console.log("setFun ", setFun);
+ const len = arr.length;
+ for (let i = 0; i < len; i++) {
+ console.log(`arr ${i} `, arr[i]);
+ console.log("setFun ", setFun);
+ if (setFun.has(arr[i])) {
+ console.log("setFun.has ", setFun.has(arr[i]));
+ // return true;
+ }
+ setFun.add(sum - arr[i]);
+ console.log("setFun.add ", setFun.add(sum - arr[i]));
+ }
+ return false;
+}
+
+// hasPairWithSum2(array, sum);
+hasPairWithSum2([1, 2, 3, 4, 5], sum);
+hasPairWithSum([1, 2, 3, 4, 5], sum);
diff --git a/javascript-today-magazine/bubble-sort.js b/src/javascript-today-magazine/bubble-sort.js
similarity index 100%
rename from javascript-today-magazine/bubble-sort.js
rename to src/javascript-today-magazine/bubble-sort.js
diff --git a/javascript-today-magazine/bubble-sort.ts b/src/javascript-today-magazine/bubble-sort.ts
similarity index 100%
rename from javascript-today-magazine/bubble-sort.ts
rename to src/javascript-today-magazine/bubble-sort.ts
diff --git a/javascript-today-magazine/merge-sort.js b/src/javascript-today-magazine/merge-sort.js
similarity index 100%
rename from javascript-today-magazine/merge-sort.js
rename to src/javascript-today-magazine/merge-sort.js
diff --git a/javascript-today-magazine/merge-sort.ts b/src/javascript-today-magazine/merge-sort.ts
similarity index 100%
rename from javascript-today-magazine/merge-sort.ts
rename to src/javascript-today-magazine/merge-sort.ts
diff --git a/javascript-today-magazine/note.txt b/src/javascript-today-magazine/note.txt
similarity index 98%
rename from javascript-today-magazine/note.txt
rename to src/javascript-today-magazine/note.txt
index 9538d93..5b08c7e 100644
--- a/javascript-today-magazine/note.txt
+++ b/src/javascript-today-magazine/note.txt
@@ -2,7 +2,7 @@
JavaScript Today Magazine
short: JavaScriptTM
[JavaScriptTM] Bubble Sort
-
+[DataStructuresAlgorithms]
17.09.2022: Some common algorithms implemented in JavaScript: Bubble Sort, Selection Sort, and Merge Sort.
1. Bubble Sort
2. Selection Sort
diff --git a/javascript-today-magazine/queue-data-structure.js b/src/javascript-today-magazine/queue-data-structure.js
similarity index 100%
rename from javascript-today-magazine/queue-data-structure.js
rename to src/javascript-today-magazine/queue-data-structure.js
diff --git a/src/javascript-today-magazine/queue-data-structure.ts b/src/javascript-today-magazine/queue-data-structure.ts
new file mode 100644
index 0000000..073fde5
--- /dev/null
+++ b/src/javascript-today-magazine/queue-data-structure.ts
@@ -0,0 +1,42 @@
+/**
+ * In computer science, a queue is a particular kind of abstract data type or collection in which the entities in the collection are kept in order and the principle (or only) operations on the collection are the addition of entities to the rear terminal position, known as enqueue, and removal of entities from the front terminal position, known as dequeue. This makes the queue a First-In-First-Out (FIFO) data structure. In a FIFO data structure, the first element added to the queue will be the first one to be removed. This is equivalent to the requirement that once a new element is added, all elements that were added before have to be removed before the new element can be removed. Often a peek or front operation is also entered, returning the value of the front element without dequeuing it. A queue is an example of a linear data structure, or more abstractly a sequential collection.
+ * A good example of a queue would simply be a line at a grocery store. The customer in line (queue) first, will leave first.
+ *
+ * Here's a JavaScript implementation of a Queue data structure. 🔥
+ */
+
+// A Queue Data Structure
+
+class Queue {
+ private data = []
+ constructor() {
+ this.data = []
+ }
+
+ /**
+ * add
+ */
+ public add(record: number| string | never) {
+ this.data.unshift(record);
+ }
+
+ /**
+ * remove
+ */
+ public remove() {
+ return this.data.pop();
+ }
+
+}
+
+ // Driver code
+ const arr = ["G", "e", "e", "k", "s", "f", "o",
+ "r", "g", "e", "e", "k", "s"];
+
+ const q = new Queue();
+ q.add(1);
+ q.add(3);
+ q.add(4);
+ console.log(q);
+ q.remove();
+ console.log(q);
diff --git a/src/javascript-today-magazine/returns-the-number-of-vowels-in-a-string.js b/src/javascript-today-magazine/returns-the-number-of-vowels-in-a-string.js
new file mode 100644
index 0000000..5afab6b
--- /dev/null
+++ b/src/javascript-today-magazine/returns-the-number-of-vowels-in-a-string.js
@@ -0,0 +1,29 @@
+/**
+ * Write a function that returns the number of vowels in a string.
+ *
+ * Another common interview question: Write a function that returns the number of vowels in a string.
+ * Here we have two solutions,
+ * one makes use of a regular expression, and
+ * another uses an iterative approach, a for-of loop.
+ *
+ * Used in a string. Vowels are the characters "a", "e", "i", "o" and "u"
+ */
+// Solution 1: using regular expression
+// function vowelsHandleByReg(characters: string) {
+// const matches = characters.match(/[aeiou]/gi);
+// return matches ? matches.length : 0;
+// }
+// Solution 2: uses an iterative approach, a for-of loop.
+function vowelsHandleByIterative(characters) {
+ var count = 0;
+ var checker = ["a", "e", "i", "0", "u"];
+ for (var _i = 0, _a = characters.toLowerCase(); _i < _a.length; _i++) {
+ var char = _a[_i];
+ if (checker.includes(char)) {
+ count++;
+ }
+ }
+ return count;
+}
+// console.log(vowelsHandleByReg("Wakidur"));
+console.log(vowelsHandleByIterative("Munni"));
diff --git a/src/javascript-today-magazine/returns-the-number-of-vowels-in-a-string.ts b/src/javascript-today-magazine/returns-the-number-of-vowels-in-a-string.ts
new file mode 100644
index 0000000..9b8d10c
--- /dev/null
+++ b/src/javascript-today-magazine/returns-the-number-of-vowels-in-a-string.ts
@@ -0,0 +1,34 @@
+/**
+ * Write a function that returns the number of vowels in a string.
+ *
+ * Another common interview question: Write a function that returns the number of vowels in a string.
+ * Here we have two solutions,
+ * one makes use of a regular expression, and
+ * another uses an iterative approach, a for-of loop.
+ *
+ * Used in a string. Vowels are the characters "a", "e", "i", "o" and "u"
+ */
+
+// Solution 1: using regular expression
+
+// function vowelsHandleByReg(characters: string) {
+// const matches = characters.match(/[aeiou]/gi);
+// return matches ? matches.length : 0;
+// }
+
+// Solution 2: uses an iterative approach, a for-of loop.
+function vowelsHandleByIterative(characters: string) {
+ let count: number = 0;
+ const checker: string[] = ["a", "e", "i", "0", "u"];
+
+ for (let char of characters.toLowerCase()) {
+ if (checker.includes(char)) {
+ count++;
+ }
+ }
+ return count;
+}
+
+
+// console.log(vowelsHandleByReg("Wakidur"));
+console.log(vowelsHandleByIterative("Munni"));
\ No newline at end of file
diff --git a/src/javascript-today-magazine/reverse-a-string.ts b/src/javascript-today-magazine/reverse-a-string.ts
new file mode 100644
index 0000000..200c993
--- /dev/null
+++ b/src/javascript-today-magazine/reverse-a-string.ts
@@ -0,0 +1,34 @@
+/**
+ * Reverse a string. It's a common interview question, and it's quite simple.
+ * However, if you really want to impress your interviewer, you'd be well-off to understand multiple solutions to the problem.
+ * Rather than using built-in methods like ".reverse()" (which is fine, but you may be asked to neglect using it), 👍
+ * demonstrate your ability to solve it in different ways.
+ *
+ * Here are three solutions to reversing a string in JavaScript.👏
+ *
+ *
+ * Directions
+ * Given a string, return a new string with the reversed order of characters
+ */
+
+// Solution 1:
+
+function reverseStringSolutionOne(str: string) {
+ return str.split("").reverse().join("");
+}
+
+// Solution 2:
+
+function reverseStringSolutionTwo(str: string) {
+ let reversed: string = "";
+ for (let character of str) {
+ reversed = character + reversed;
+ }
+ return reversed;
+}
+
+// Solution 3:
+
+function reverseStringSolutionThree(str: string) {
+ return str.split("").reduce((rev, char) => char + rev, "");
+}
diff --git a/javascript-today-magazine/selection-sort.js b/src/javascript-today-magazine/selection-sort.js
similarity index 100%
rename from javascript-today-magazine/selection-sort.js
rename to src/javascript-today-magazine/selection-sort.js
diff --git a/javascript-today-magazine/selection-sort.ts b/src/javascript-today-magazine/selection-sort.ts
similarity index 100%
rename from javascript-today-magazine/selection-sort.ts
rename to src/javascript-today-magazine/selection-sort.ts
diff --git a/javascript-today-magazine/stack-data-structure.js b/src/javascript-today-magazine/stack-data-structure.js
similarity index 100%
rename from javascript-today-magazine/stack-data-structure.js
rename to src/javascript-today-magazine/stack-data-structure.js
diff --git a/javascript-today-magazine/stack-data-structure.ts b/src/javascript-today-magazine/stack-data-structure.ts
similarity index 100%
rename from javascript-today-magazine/stack-data-structure.ts
rename to src/javascript-today-magazine/stack-data-structure.ts
diff --git a/src/javascript-today-magazine/string-and-array-methods.ts b/src/javascript-today-magazine/string-and-array-methods.ts
new file mode 100644
index 0000000..0642fa7
--- /dev/null
+++ b/src/javascript-today-magazine/string-and-array-methods.ts
@@ -0,0 +1,3 @@
+// Array and String Methods
+const str: string = 'Hello world';
+str.toLowerCase();
\ No newline at end of file
diff --git a/problems/calculates-the-sum-of-all-numbers.js b/src/problems/calculates-the-sum-of-all-numbers.js
similarity index 100%
rename from problems/calculates-the-sum-of-all-numbers.js
rename to src/problems/calculates-the-sum-of-all-numbers.js
diff --git a/problems/how-do-you-reverse-a-string.js b/src/problems/how-do-you-reverse-a-string.js
similarity index 100%
rename from problems/how-do-you-reverse-a-string.js
rename to src/problems/how-do-you-reverse-a-string.js
diff --git a/src/problems/is-equivalent-object.ts b/src/problems/is-equivalent-object.ts
new file mode 100644
index 0000000..4f9dd7a
--- /dev/null
+++ b/src/problems/is-equivalent-object.ts
@@ -0,0 +1,25 @@
+// implementation of some property-based equality checking where each property of the object is compared.
+
+function isEquivalentObj(a: { [key: string]: number | string }, b: { [key: string]: number | string }) {
+ // Arrays of property names.
+ const aProps = Object.getOwnPropertyNames(a);
+ const bProps = Object.getOwnPropertyNames(b);
+
+ // If their property lengths are different, they're different objects
+ if (aProps.length != bProps.length) {
+ return false;
+ }
+
+ for (let i = 0; i < aProps.length; i++) {
+ let propName = aProps[i];
+ // If the values of the property are different, not equal
+ if (a[propName] !== b[propName]) {
+ return false;
+ }
+ }
+
+ // If everything matched, correct
+ return true;
+}
+// However, this would still work for objects that have only a string or a number as the property.
+isEquivalentObj({ hi: 12 }, { hi: 12 }); // Return true.
diff --git a/src/sum.js b/src/sum.js
new file mode 100644
index 0000000..ad705b8
--- /dev/null
+++ b/src/sum.js
@@ -0,0 +1,4 @@
+export function sum(a, b) {
+ return a + b;
+}
+// module.exports = sum;
diff --git a/src/sum.test.js b/src/sum.test.js
new file mode 100644
index 0000000..1bca057
--- /dev/null
+++ b/src/sum.test.js
@@ -0,0 +1,8 @@
+import { describe, expect, test } from "@jest/globals";
+import { sum } from "./sum";
+
+describe("sum module", () => {
+ test("adds 1 + 2 to equal 3", () => {
+ expect(sum(1, 2)).toBe(3);
+ });
+});
diff --git a/src/utils/comparator-original.js b/src/utils/comparator-original.js
new file mode 100644
index 0000000..f514555
--- /dev/null
+++ b/src/utils/comparator-original.js
@@ -0,0 +1,102 @@
+export default class Comparator {
+ /**
+ * Constructor.
+ * @param {function(a: *, b: *)} [compareFunction] - It may be custom compare function that,
+ * let's say may compare custom objects together.
+ */
+
+ constructor(compareFunction) {
+ this.compare = compareFunction || Comparator.defaultCompareFunction;
+ }
+
+ /**
+ * Default comparison function. It just assumes that 'a' and 'b' are strings or numbers.
+ * @param {(string|number)} a
+ * @param {(string|number)} b
+ * @returns {number}
+ */
+ static defaultCompareFunction(a, b) {
+ if (a === b) {
+ return 0;
+ }
+
+ return a < b ? -1 : 1;
+ }
+
+ /**
+ * Checks if two variables are equal.
+ * @param {*} a
+ * @param {*} b
+ * @return {boolean}
+ */
+ // Traditional function
+ equal(a, b) {
+ return this.compare(a, b) === 0;
+ }
+ // Arrow function
+ // equal = (a, b) => this.compare(a, b) === 0;
+
+ /**
+ * Checks if variable "a" is less than "b"
+ * @param {*} a
+ * @param {*} b
+ * @returns {boolean}
+ */
+ // Traditional function
+ lessThan(a, b) {
+ return this.compare(a, b) < 0;
+ }
+ // Arrow function
+ // lessThan = (a, b) => this.compare(a, b) < 0;
+
+ /**
+ * Checks if variable "a" is greater than "b".
+ * @param {*} a
+ * @param {*} b
+ * @returns {boolean}
+ */
+ // Traditional function
+ greaterThan(a, b) {
+ return this.compare(a, b) > 0;
+ }
+ // Arrow function
+ // greaterThan = (a, b) => this.compare(a, b) > 0;
+
+ /**
+ * Checks if variable "a" is less than or equal to "b".
+ * @param {*} a
+ * @param {*} b
+ * @returns {boolean}
+ */
+ // Traditional function
+ lessThanOrEqual(a, b) {
+ return this.lessThan(a, b) || this.equal(a, b);
+ }
+ // Arrow function
+ // lessThanOrEqual = (a, b) => this.lessThan(a, b) || this.equal(a, b);
+
+ /**
+ * Checks if variable "a" is greater than or equal to "b"l
+ * @param {*} a
+ * @param {*} b
+ * @returns {boolean}
+ */
+ // Traditional function
+ greaterThanOrEqual(a, b) {
+ return this.greaterThan(a, b) || this.equal(a, b);
+ }
+
+ //Arrow Function
+ // greaterThanOrEqual = (a, b) => this.greaterThan(a, b) || this.equal(a, b);
+
+ /**
+ * Reverses the comparison order.
+ */
+
+ reverse() {
+ const compareOriginal = this.compare;
+ this.compare = (a, b) => compareOriginal(b, a);
+ }
+}
+
+const instanceA = new Comparator();
diff --git a/src/utils/comparator.ts b/src/utils/comparator.ts
new file mode 100644
index 0000000..7512b68
--- /dev/null
+++ b/src/utils/comparator.ts
@@ -0,0 +1,29 @@
+export default class Comparator {
+ [x: string]: (a: any, b: any) => 0 | 1 | -1;
+ /**
+ * Constructor.
+ * @param {function(a: *, b: *)} [compareFunction] - It may be custom compare function that, let's
+ * say may compare custom objects together.
+ */
+
+ constructor(compareFunction: (a: any, b: any) => 0 | 1 | -1) {
+ this.compare = compareFunction || Comparator.defaultCompareFunction;
+ }
+
+ /**
+ * Default comparison function. It just assumes that 'a' and 'b' are strings or numbers.
+ * @param {(string|number)} a
+ * @param {(string|number)} b
+ * @returns {number}
+ */
+ static defaultCompareFunction(a: number, b: number) {
+ if (a === b) {
+ return 0;
+ }
+
+ return a < b ? -1 : 1;
+ }
+
+
+ }
+
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 851b942..f1d39bd 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -12,7 +12,7 @@
/* Language and Environment */
"target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
- // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
+ "lib": ["es2016.Array.Include", "es2016", "es6", "esnext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
// "jsx": "preserve", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
@@ -25,21 +25,21 @@
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
/* Modules */
- "module": "commonjs", /* Specify what module code is generated. */
- // "rootDir": "./", /* Specify the root folder within your source files. */
- // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
- // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
+ "module": "esnext", /* Specify what module code is generated. */
+ "rootDir": "./", /* Specify the root folder within your source files. */
+ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
+ "baseUrl": "src", /* Specify the base directory to resolve non-relative module names. */
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
- // "resolveJsonModule": true, /* Enable importing .json files. */
+ "resolveJsonModule": true, /* Enable importing .json files. */
// "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
/* JavaScript Support */
- // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
+ "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
@@ -47,14 +47,14 @@
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
- // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
+ "sourceMap": true, /* Create source map files for emitted JavaScript files. */
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
// "outDir": "./", /* Specify an output folder for all emitted files. */
- // "removeComments": true, /* Disable emitting comments. */
- // "noEmit": true, /* Disable emitting files from a compilation. */
+ "removeComments": true, /* Disable emitting comments. */
+ "noEmit": true, /* Disable emitting files from a compilation. */
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
- // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
+ "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
@@ -69,15 +69,15 @@
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
/* Interop Constraints */
- // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
- // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
+ "isolatedModules": false, /* Ensure that each file can be safely transpiled without relying on other imports. */
+ "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
/* Type Checking */
"strict": true, /* Enable all strict type-checking options. */
- // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
+ "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
@@ -89,7 +89,7 @@
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
- // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
+ "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
@@ -97,7 +97,14 @@
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
/* Completeness */
- // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
+ "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */
+ },
+ "include": ["src"],
+ "exclude": ["node_modules", "assets",],
+ "ts-node": {
+ "compilerOptions": {
+ "module": "CommonJS"
+ }
}
}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..204090f
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,3155 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.1.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
+ integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.1.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
+ integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
+ dependencies:
+ "@babel/highlight" "^7.18.6"
+
+"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
+ integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==
+
+"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.1":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113"
+ integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.20.5"
+ "@babel/helper-compilation-targets" "^7.20.0"
+ "@babel/helper-module-transforms" "^7.20.2"
+ "@babel/helpers" "^7.20.5"
+ "@babel/parser" "^7.20.5"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.20.5"
+ "@babel/types" "^7.20.5"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.1"
+ semver "^6.3.0"
+
+"@babel/generator@^7.20.5", "@babel/generator@^7.7.2":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95"
+ integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==
+ dependencies:
+ "@babel/types" "^7.20.5"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ jsesc "^2.5.1"
+
+"@babel/helper-annotate-as-pure@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb"
+ integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb"
+ integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.18.6"
+ "@babel/types" "^7.18.9"
+
+"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0":
+ version "7.20.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a"
+ integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==
+ dependencies:
+ "@babel/compat-data" "^7.20.0"
+ "@babel/helper-validator-option" "^7.18.6"
+ browserslist "^4.21.3"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.2", "@babel/helper-create-class-features-plugin@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz#327154eedfb12e977baa4ecc72e5806720a85a06"
+ integrity sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-member-expression-to-functions" "^7.18.9"
+ "@babel/helper-optimise-call-expression" "^7.18.6"
+ "@babel/helper-replace-supers" "^7.19.1"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca"
+ integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ regexpu-core "^5.2.1"
+
+"@babel/helper-define-polyfill-provider@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a"
+ integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.17.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+ semver "^6.1.2"
+
+"@babel/helper-environment-visitor@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
+ integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
+
+"@babel/helper-explode-assignable-expression@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096"
+ integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
+ integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/types" "^7.19.0"
+
+"@babel/helper-hoist-variables@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
+ integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-member-expression-to-functions@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815"
+ integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==
+ dependencies:
+ "@babel/types" "^7.18.9"
+
+"@babel/helper-module-imports@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
+ integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712"
+ integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-simple-access" "^7.20.2"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.20.1"
+ "@babel/types" "^7.20.2"
+
+"@babel/helper-optimise-call-expression@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe"
+ integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@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.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
+ integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
+
+"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519"
+ integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-wrap-function" "^7.18.9"
+ "@babel/types" "^7.18.9"
+
+"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78"
+ integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-member-expression-to-functions" "^7.18.9"
+ "@babel/helper-optimise-call-expression" "^7.18.6"
+ "@babel/traverse" "^7.19.1"
+ "@babel/types" "^7.19.0"
+
+"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
+ integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
+ dependencies:
+ "@babel/types" "^7.20.2"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.18.9":
+ version "7.20.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684"
+ integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==
+ dependencies:
+ "@babel/types" "^7.20.0"
+
+"@babel/helper-split-export-declaration@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
+ integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-string-parser@^7.19.4":
+ version "7.19.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
+ integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+
+"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
+"@babel/helper-validator-option@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
+ integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
+
+"@babel/helper-wrap-function@^7.18.9":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3"
+ integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==
+ dependencies:
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.20.5"
+ "@babel/types" "^7.20.5"
+
+"@babel/helpers@^7.20.5":
+ version "7.20.6"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763"
+ integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.20.5"
+ "@babel/types" "^7.20.5"
+
+"@babel/highlight@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
+ integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.18.6"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
+ integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
+ integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50"
+ integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
+ "@babel/plugin-proposal-optional-chaining" "^7.18.9"
+
+"@babel/plugin-proposal-async-generator-functions@^7.20.1":
+ version "7.20.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9"
+ integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-remap-async-to-generator" "^7.18.9"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-proposal-class-properties@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3"
+ integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-proposal-class-static-block@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020"
+ integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
+"@babel/plugin-proposal-dynamic-import@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94"
+ integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-proposal-export-namespace-from@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203"
+ integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b"
+ integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23"
+ integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1"
+ integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75"
+ integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d"
+ integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==
+ dependencies:
+ "@babel/compat-data" "^7.20.1"
+ "@babel/helper-compilation-targets" "^7.20.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.20.1"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb"
+ integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-proposal-optional-chaining@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993"
+ integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea"
+ integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-proposal-private-property-in-object@^7.18.6":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135"
+ integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-create-class-features-plugin" "^7.20.5"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e"
+ integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@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.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-class-static-block@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@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-import-assertions@^7.20.0":
+ version "7.20.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4"
+ integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.19.0"
+
+"@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.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.7.2":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
+ integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@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.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.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.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.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-private-property-in-object@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2":
+ version "7.20.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7"
+ integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.19.0"
+
+"@babel/plugin-transform-arrow-functions@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe"
+ integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-async-to-generator@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615"
+ integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==
+ dependencies:
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-remap-async-to-generator" "^7.18.6"
+
+"@babel/plugin-transform-block-scoped-functions@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8"
+ integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-block-scoping@^7.20.2":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz#401215f9dc13dc5262940e2e527c9536b3d7f237"
+ integrity sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
+"@babel/plugin-transform-classes@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2"
+ integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-compilation-targets" "^7.20.0"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-optimise-call-expression" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-replace-supers" "^7.19.1"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e"
+ integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+
+"@babel/plugin-transform-destructuring@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792"
+ integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
+"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8"
+ integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-duplicate-keys@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e"
+ integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+
+"@babel/plugin-transform-exponentiation-operator@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd"
+ integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-for-of@^7.18.8":
+ version "7.18.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1"
+ integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-function-name@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0"
+ integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.18.9"
+ "@babel/helper-function-name" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.18.9"
+
+"@babel/plugin-transform-literals@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc"
+ integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+
+"@babel/plugin-transform-member-expression-literals@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e"
+ integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-modules-amd@^7.19.6":
+ version "7.19.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd"
+ integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.19.6"
+ "@babel/helper-plugin-utils" "^7.19.0"
+
+"@babel/plugin-transform-modules-commonjs@^7.19.6":
+ version "7.19.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c"
+ integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.19.6"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-simple-access" "^7.19.4"
+
+"@babel/plugin-transform-modules-systemjs@^7.19.6":
+ version "7.19.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d"
+ integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-module-transforms" "^7.19.6"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-validator-identifier" "^7.19.1"
+
+"@babel/plugin-transform-modules-umd@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9"
+ integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8"
+ integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.20.5"
+ "@babel/helper-plugin-utils" "^7.20.2"
+
+"@babel/plugin-transform-new-target@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8"
+ integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-object-super@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c"
+ integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-replace-supers" "^7.18.6"
+
+"@babel/plugin-transform-parameters@^7.20.1":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz#f8f9186c681d10c3de7620c916156d893c8a019e"
+ integrity sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+
+"@babel/plugin-transform-property-literals@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3"
+ integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-regenerator@^7.18.6":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d"
+ integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+ regenerator-transform "^0.15.1"
+
+"@babel/plugin-transform-reserved-words@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a"
+ integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-shorthand-properties@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9"
+ integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-spread@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6"
+ integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
+
+"@babel/plugin-transform-sticky-regex@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc"
+ integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-template-literals@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e"
+ integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+
+"@babel/plugin-transform-typeof-symbol@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0"
+ integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+
+"@babel/plugin-transform-typescript@^7.18.6":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz#91515527b376fc122ba83b13d70b01af8fe98f3f"
+ integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.20.2"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-typescript" "^7.20.0"
+
+"@babel/plugin-transform-unicode-escapes@^7.18.10":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246"
+ integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.9"
+
+"@babel/plugin-transform-unicode-regex@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca"
+ integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/preset-env@^7.19.1":
+ version "7.20.2"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506"
+ integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==
+ dependencies:
+ "@babel/compat-data" "^7.20.1"
+ "@babel/helper-compilation-targets" "^7.20.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-validator-option" "^7.18.6"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9"
+ "@babel/plugin-proposal-async-generator-functions" "^7.20.1"
+ "@babel/plugin-proposal-class-properties" "^7.18.6"
+ "@babel/plugin-proposal-class-static-block" "^7.18.6"
+ "@babel/plugin-proposal-dynamic-import" "^7.18.6"
+ "@babel/plugin-proposal-export-namespace-from" "^7.18.9"
+ "@babel/plugin-proposal-json-strings" "^7.18.6"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6"
+ "@babel/plugin-proposal-numeric-separator" "^7.18.6"
+ "@babel/plugin-proposal-object-rest-spread" "^7.20.2"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.18.6"
+ "@babel/plugin-proposal-optional-chaining" "^7.18.9"
+ "@babel/plugin-proposal-private-methods" "^7.18.6"
+ "@babel/plugin-proposal-private-property-in-object" "^7.18.6"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.18.6"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-import-assertions" "^7.20.0"
+ "@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-private-property-in-object" "^7.14.5"
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
+ "@babel/plugin-transform-arrow-functions" "^7.18.6"
+ "@babel/plugin-transform-async-to-generator" "^7.18.6"
+ "@babel/plugin-transform-block-scoped-functions" "^7.18.6"
+ "@babel/plugin-transform-block-scoping" "^7.20.2"
+ "@babel/plugin-transform-classes" "^7.20.2"
+ "@babel/plugin-transform-computed-properties" "^7.18.9"
+ "@babel/plugin-transform-destructuring" "^7.20.2"
+ "@babel/plugin-transform-dotall-regex" "^7.18.6"
+ "@babel/plugin-transform-duplicate-keys" "^7.18.9"
+ "@babel/plugin-transform-exponentiation-operator" "^7.18.6"
+ "@babel/plugin-transform-for-of" "^7.18.8"
+ "@babel/plugin-transform-function-name" "^7.18.9"
+ "@babel/plugin-transform-literals" "^7.18.9"
+ "@babel/plugin-transform-member-expression-literals" "^7.18.6"
+ "@babel/plugin-transform-modules-amd" "^7.19.6"
+ "@babel/plugin-transform-modules-commonjs" "^7.19.6"
+ "@babel/plugin-transform-modules-systemjs" "^7.19.6"
+ "@babel/plugin-transform-modules-umd" "^7.18.6"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1"
+ "@babel/plugin-transform-new-target" "^7.18.6"
+ "@babel/plugin-transform-object-super" "^7.18.6"
+ "@babel/plugin-transform-parameters" "^7.20.1"
+ "@babel/plugin-transform-property-literals" "^7.18.6"
+ "@babel/plugin-transform-regenerator" "^7.18.6"
+ "@babel/plugin-transform-reserved-words" "^7.18.6"
+ "@babel/plugin-transform-shorthand-properties" "^7.18.6"
+ "@babel/plugin-transform-spread" "^7.19.0"
+ "@babel/plugin-transform-sticky-regex" "^7.18.6"
+ "@babel/plugin-transform-template-literals" "^7.18.9"
+ "@babel/plugin-transform-typeof-symbol" "^7.18.9"
+ "@babel/plugin-transform-unicode-escapes" "^7.18.10"
+ "@babel/plugin-transform-unicode-regex" "^7.18.6"
+ "@babel/preset-modules" "^0.1.5"
+ "@babel/types" "^7.20.2"
+ babel-plugin-polyfill-corejs2 "^0.3.3"
+ babel-plugin-polyfill-corejs3 "^0.6.0"
+ babel-plugin-polyfill-regenerator "^0.4.1"
+ core-js-compat "^3.25.1"
+ semver "^6.3.0"
+
+"@babel/preset-modules@^0.1.5":
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
+ integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
+ 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-typescript@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399"
+ integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-validator-option" "^7.18.6"
+ "@babel/plugin-transform-typescript" "^7.18.6"
+
+"@babel/runtime@^7.8.4":
+ version "7.20.6"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3"
+ integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==
+ dependencies:
+ regenerator-runtime "^0.13.11"
+
+"@babel/template@^7.18.10", "@babel/template@^7.3.3":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
+ integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/parser" "^7.18.10"
+ "@babel/types" "^7.18.10"
+
+"@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.7.2":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133"
+ integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.20.5"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/parser" "^7.20.5"
+ "@babel/types" "^7.20.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84"
+ integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.19.4"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ 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==
+
+"@cspotcode/source-map-support@^0.8.0":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
+ integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
+ dependencies:
+ "@jridgewell/trace-mapping" "0.3.9"
+
+"@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@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.3.1.tgz#3e3f876e4e47616ea3b1464b9fbda981872e9583"
+ integrity sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==
+ dependencies:
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^29.3.1"
+ jest-util "^29.3.1"
+ slash "^3.0.0"
+
+"@jest/core@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.3.1.tgz#bff00f413ff0128f4debec1099ba7dcd649774a1"
+ integrity sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==
+ dependencies:
+ "@jest/console" "^29.3.1"
+ "@jest/reporters" "^29.3.1"
+ "@jest/test-result" "^29.3.1"
+ "@jest/transform" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ jest-changed-files "^29.2.0"
+ jest-config "^29.3.1"
+ jest-haste-map "^29.3.1"
+ jest-message-util "^29.3.1"
+ jest-regex-util "^29.2.0"
+ jest-resolve "^29.3.1"
+ jest-resolve-dependencies "^29.3.1"
+ jest-runner "^29.3.1"
+ jest-runtime "^29.3.1"
+ jest-snapshot "^29.3.1"
+ jest-util "^29.3.1"
+ jest-validate "^29.3.1"
+ jest-watcher "^29.3.1"
+ micromatch "^4.0.4"
+ pretty-format "^29.3.1"
+ slash "^3.0.0"
+ strip-ansi "^6.0.0"
+
+"@jest/environment@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.3.1.tgz#eb039f726d5fcd14698acd072ac6576d41cfcaa6"
+ integrity sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==
+ dependencies:
+ "@jest/fake-timers" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ jest-mock "^29.3.1"
+
+"@jest/expect-utils@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6"
+ integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==
+ dependencies:
+ jest-get-type "^29.2.0"
+
+"@jest/expect@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.3.1.tgz#456385b62894349c1d196f2d183e3716d4c6a6cd"
+ integrity sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==
+ dependencies:
+ expect "^29.3.1"
+ jest-snapshot "^29.3.1"
+
+"@jest/fake-timers@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.3.1.tgz#b140625095b60a44de820876d4c14da1aa963f67"
+ integrity sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==
+ dependencies:
+ "@jest/types" "^29.3.1"
+ "@sinonjs/fake-timers" "^9.1.2"
+ "@types/node" "*"
+ jest-message-util "^29.3.1"
+ jest-mock "^29.3.1"
+ jest-util "^29.3.1"
+
+"@jest/globals@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.3.1.tgz#92be078228e82d629df40c3656d45328f134a0c6"
+ integrity sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==
+ dependencies:
+ "@jest/environment" "^29.3.1"
+ "@jest/expect" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ jest-mock "^29.3.1"
+
+"@jest/reporters@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.3.1.tgz#9a6d78c109608e677c25ddb34f907b90e07b4310"
+ integrity sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==
+ dependencies:
+ "@bcoe/v8-coverage" "^0.2.3"
+ "@jest/console" "^29.3.1"
+ "@jest/test-result" "^29.3.1"
+ "@jest/transform" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@jridgewell/trace-mapping" "^0.3.15"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-instrument "^5.1.0"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.1.3"
+ jest-message-util "^29.3.1"
+ jest-util "^29.3.1"
+ jest-worker "^29.3.1"
+ slash "^3.0.0"
+ string-length "^4.0.1"
+ strip-ansi "^6.0.0"
+ v8-to-istanbul "^9.0.1"
+
+"@jest/schemas@^29.0.0":
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a"
+ integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==
+ dependencies:
+ "@sinclair/typebox" "^0.24.1"
+
+"@jest/source-map@^29.2.0":
+ version "29.2.0"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744"
+ integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.15"
+ callsites "^3.0.0"
+ graceful-fs "^4.2.9"
+
+"@jest/test-result@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.3.1.tgz#92cd5099aa94be947560a24610aa76606de78f50"
+ integrity sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==
+ dependencies:
+ "@jest/console" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
+"@jest/test-sequencer@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz#fa24b3b050f7a59d48f7ef9e0b782ab65123090d"
+ integrity sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==
+ dependencies:
+ "@jest/test-result" "^29.3.1"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^29.3.1"
+ slash "^3.0.0"
+
+"@jest/transform@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d"
+ integrity sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@jest/types" "^29.3.1"
+ "@jridgewell/trace-mapping" "^0.3.15"
+ babel-plugin-istanbul "^6.1.1"
+ chalk "^4.0.0"
+ convert-source-map "^2.0.0"
+ fast-json-stable-stringify "^2.1.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^29.3.1"
+ jest-regex-util "^29.2.0"
+ jest-util "^29.3.1"
+ micromatch "^4.0.4"
+ pirates "^4.0.4"
+ slash "^3.0.0"
+ write-file-atomic "^4.0.1"
+
+"@jest/types@^29.3.1":
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3"
+ integrity sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==
+ dependencies:
+ "@jest/schemas" "^29.0.0"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^17.0.8"
+ chalk "^4.0.0"
+
+"@jridgewell/gen-mapping@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
+ integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.0"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
+ integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
+ integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
+
+"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.14"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
+ integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+
+"@jridgewell/trace-mapping@0.3.9":
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
+ integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.17"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
+ integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
+ dependencies:
+ "@jridgewell/resolve-uri" "3.1.0"
+ "@jridgewell/sourcemap-codec" "1.4.14"
+
+"@sinclair/typebox@^0.24.1":
+ version "0.24.51"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f"
+ integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==
+
+"@sinonjs/commons@^1.7.0":
+ version "1.8.6"
+ resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9"
+ integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==
+ dependencies:
+ type-detect "4.0.8"
+
+"@sinonjs/fake-timers@^9.1.2":
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c"
+ integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==
+ dependencies:
+ "@sinonjs/commons" "^1.7.0"
+
+"@tsconfig/node10@^1.0.7":
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
+ integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
+
+"@tsconfig/node12@^1.0.7":
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
+ integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
+
+"@tsconfig/node14@^1.0.0":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
+ integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
+
+"@tsconfig/node16@^1.0.2":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e"
+ integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
+
+"@types/babel__core@^7.1.14":
+ version "7.1.20"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359"
+ integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==
+ 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.4"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
+ integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
+ integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
+ version "7.18.3"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d"
+ integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/graceful-fs@^4.1.3":
+ 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/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
+ integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
+
+"@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.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff"
+ integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==
+ dependencies:
+ "@types/istanbul-lib-report" "*"
+
+"@types/jest@^29.0.3":
+ version "29.2.3"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.3.tgz#f5fd88e43e5a9e4221ca361e23790d48fcf0a211"
+ integrity sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==
+ dependencies:
+ expect "^29.0.0"
+ pretty-format "^29.0.0"
+
+"@types/node@*":
+ version "18.11.9"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
+ integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
+
+"@types/prettier@^2.1.5":
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e"
+ integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==
+
+"@types/stack-utils@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
+ integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
+
+"@types/yargs-parser@*":
+ version "21.0.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
+ integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
+
+"@types/yargs@^17.0.8":
+ version "17.0.15"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.15.tgz#5b62c89fb049e2fc8378394a2861a593055f0866"
+ integrity sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==
+ dependencies:
+ "@types/yargs-parser" "*"
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+acorn-walk@^8.1.1:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
+ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
+
+acorn@^8.4.1:
+ version "8.8.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
+ integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
+
+ansi-escapes@^4.2.1:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+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"
+
+ansi-styles@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
+ integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
+
+anymatch@^3.0.3, anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+arg@^4.1.0:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+ integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
+
+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"
+
+babel-jest@^29.0.3, babel-jest@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44"
+ integrity sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==
+ dependencies:
+ "@jest/transform" "^29.3.1"
+ "@types/babel__core" "^7.1.14"
+ babel-plugin-istanbul "^6.1.1"
+ babel-preset-jest "^29.2.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ slash "^3.0.0"
+
+babel-plugin-istanbul@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
+ integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@istanbuljs/load-nyc-config" "^1.0.0"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-instrument "^5.0.4"
+ test-exclude "^6.0.0"
+
+babel-plugin-jest-hoist@^29.2.0:
+ version "29.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094"
+ integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==
+ dependencies:
+ "@babel/template" "^7.3.3"
+ "@babel/types" "^7.3.3"
+ "@types/babel__core" "^7.1.14"
+ "@types/babel__traverse" "^7.0.6"
+
+babel-plugin-polyfill-corejs2@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122"
+ integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==
+ dependencies:
+ "@babel/compat-data" "^7.17.7"
+ "@babel/helper-define-polyfill-provider" "^0.3.3"
+ semver "^6.1.1"
+
+babel-plugin-polyfill-corejs3@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a"
+ integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.3"
+ core-js-compat "^3.25.1"
+
+babel-plugin-polyfill-regenerator@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747"
+ integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.3"
+
+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@^29.2.0:
+ version "29.2.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc"
+ integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==
+ dependencies:
+ babel-plugin-jest-hoist "^29.2.0"
+ babel-preset-current-node-syntax "^1.0.0"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+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==
+
+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@^3.0.2, 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"
+
+browserslist@^4.21.3, browserslist@^4.21.4:
+ version "4.21.4"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
+ integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
+ dependencies:
+ caniuse-lite "^1.0.30001400"
+ electron-to-chromium "^1.4.251"
+ node-releases "^2.0.6"
+ update-browserslist-db "^1.0.9"
+
+bs-logger@0.x:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
+ integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
+ dependencies:
+ fast-json-stable-stringify "2.x"
+
+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.2"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+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==
+
+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.2.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-lite@^1.0.30001400:
+ version "1.0.30001435"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz#502c93dbd2f493bee73a408fe98e98fb1dad10b2"
+ integrity sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA==
+
+chalk@^2.0.0:
+ 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@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ 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==
+
+chokidar@^3.5.2:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+ci-info@^3.2.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef"
+ integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==
+
+cjs-module-lexer@^1.0.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
+ integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
+
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
+
+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==
+
+color-convert@^1.9.0:
+ 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 sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+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==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+ integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
+
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+core-js-compat@^3.25.1:
+ version "3.26.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df"
+ integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==
+ dependencies:
+ browserslist "^4.21.4"
+
+create-require@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
+ integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
+
+cross-spawn@^7.0.3:
+ 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"
+
+debug@^3.2.7:
+ 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.1.0, debug@^4.1.1:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
+
+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==
+
+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==
+
+diff-sequences@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e"
+ integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==
+
+diff@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
+ integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
+
+electron-to-chromium@^1.4.251:
+ version "1.4.284"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
+ integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
+
+emittery@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
+ integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
+
+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==
+
+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"
+
+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-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 sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+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==
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+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==
+
+execa@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.0"
+ human-signals "^2.1.0"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.1"
+ onetime "^5.1.2"
+ signal-exit "^3.0.3"
+ strip-final-newline "^2.0.0"
+
+exit@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+ integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
+
+expect@^29.0.0, expect@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6"
+ integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==
+ dependencies:
+ "@jest/expect-utils" "^29.3.1"
+ jest-get-type "^29.2.0"
+ jest-matcher-utils "^29.3.1"
+ jest-message-util "^29.3.1"
+ jest-util "^29.3.1"
+
+fast-json-stable-stringify@2.x, 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==
+
+fb-watchman@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
+ integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
+ dependencies:
+ bser "2.1.1"
+
+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"
+
+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"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+fsevents@^2.3.2, fsevents@~2.3.2:
+ 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==
+
+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.5:
+ 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-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@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+glob-parent@~5.1.2:
+ 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.1.3, glob@^7.1.4:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+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==
+
+graceful-fs@^4.2.9:
+ version "4.2.10"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
+ integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+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@^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"
+
+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==
+
+human-signals@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+
+ignore-by-default@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
+ integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==
+
+import-local@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
+ integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
+ 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 sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+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-core-module@^2.9.0:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
+ integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+ dependencies:
+ has "^1.0.3"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+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@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+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-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
+ integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
+
+istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
+ integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/parser" "^7.14.7"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.2.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.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
+ integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^3.0.0"
+ source-map "^0.6.1"
+
+istanbul-reports@^3.1.3:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae"
+ integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==
+ dependencies:
+ html-escaper "^2.0.0"
+ istanbul-lib-report "^3.0.0"
+
+jest-changed-files@^29.2.0:
+ version "29.2.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289"
+ integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==
+ dependencies:
+ execa "^5.0.0"
+ p-limit "^3.1.0"
+
+jest-circus@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.3.1.tgz#177d07c5c0beae8ef2937a67de68f1e17bbf1b4a"
+ integrity sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==
+ dependencies:
+ "@jest/environment" "^29.3.1"
+ "@jest/expect" "^29.3.1"
+ "@jest/test-result" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ dedent "^0.7.0"
+ is-generator-fn "^2.0.0"
+ jest-each "^29.3.1"
+ jest-matcher-utils "^29.3.1"
+ jest-message-util "^29.3.1"
+ jest-runtime "^29.3.1"
+ jest-snapshot "^29.3.1"
+ jest-util "^29.3.1"
+ p-limit "^3.1.0"
+ pretty-format "^29.3.1"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+
+jest-cli@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.3.1.tgz#e89dff427db3b1df50cea9a393ebd8640790416d"
+ integrity sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==
+ dependencies:
+ "@jest/core" "^29.3.1"
+ "@jest/test-result" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ import-local "^3.0.2"
+ jest-config "^29.3.1"
+ jest-util "^29.3.1"
+ jest-validate "^29.3.1"
+ prompts "^2.0.1"
+ yargs "^17.3.1"
+
+jest-config@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.3.1.tgz#0bc3dcb0959ff8662957f1259947aedaefb7f3c6"
+ integrity sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@jest/test-sequencer" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ babel-jest "^29.3.1"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ deepmerge "^4.2.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ jest-circus "^29.3.1"
+ jest-environment-node "^29.3.1"
+ jest-get-type "^29.2.0"
+ jest-regex-util "^29.2.0"
+ jest-resolve "^29.3.1"
+ jest-runner "^29.3.1"
+ jest-util "^29.3.1"
+ jest-validate "^29.3.1"
+ micromatch "^4.0.4"
+ parse-json "^5.2.0"
+ pretty-format "^29.3.1"
+ slash "^3.0.0"
+ strip-json-comments "^3.1.1"
+
+jest-diff@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527"
+ integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^29.3.1"
+ jest-get-type "^29.2.0"
+ pretty-format "^29.3.1"
+
+jest-docblock@^29.2.0:
+ version "29.2.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82"
+ integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==
+ dependencies:
+ detect-newline "^3.0.0"
+
+jest-each@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.3.1.tgz#bc375c8734f1bb96625d83d1ca03ef508379e132"
+ integrity sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==
+ dependencies:
+ "@jest/types" "^29.3.1"
+ chalk "^4.0.0"
+ jest-get-type "^29.2.0"
+ jest-util "^29.3.1"
+ pretty-format "^29.3.1"
+
+jest-environment-node@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.3.1.tgz#5023b32472b3fba91db5c799a0d5624ad4803e74"
+ integrity sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==
+ dependencies:
+ "@jest/environment" "^29.3.1"
+ "@jest/fake-timers" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ jest-mock "^29.3.1"
+ jest-util "^29.3.1"
+
+jest-get-type@^29.2.0:
+ version "29.2.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408"
+ integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==
+
+jest-haste-map@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.3.1.tgz#af83b4347f1dae5ee8c2fb57368dc0bb3e5af843"
+ integrity sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==
+ dependencies:
+ "@jest/types" "^29.3.1"
+ "@types/graceful-fs" "^4.1.3"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.9"
+ jest-regex-util "^29.2.0"
+ jest-util "^29.3.1"
+ jest-worker "^29.3.1"
+ micromatch "^4.0.4"
+ walker "^1.0.8"
+ optionalDependencies:
+ fsevents "^2.3.2"
+
+jest-leak-detector@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz#95336d020170671db0ee166b75cd8ef647265518"
+ integrity sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==
+ dependencies:
+ jest-get-type "^29.2.0"
+ pretty-format "^29.3.1"
+
+jest-matcher-utils@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572"
+ integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^29.3.1"
+ jest-get-type "^29.2.0"
+ pretty-format "^29.3.1"
+
+jest-message-util@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb"
+ integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^29.3.1"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^29.3.1"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+
+jest-mock@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e"
+ integrity sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==
+ dependencies:
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ jest-util "^29.3.1"
+
+jest-pnp-resolver@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
+ integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
+
+jest-regex-util@^29.2.0:
+ version "29.2.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b"
+ integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==
+
+jest-resolve-dependencies@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz#a6a329708a128e68d67c49f38678a4a4a914c3bf"
+ integrity sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==
+ dependencies:
+ jest-regex-util "^29.2.0"
+ jest-snapshot "^29.3.1"
+
+jest-resolve@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.3.1.tgz#9a4b6b65387a3141e4a40815535c7f196f1a68a7"
+ integrity sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==
+ dependencies:
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^29.3.1"
+ jest-pnp-resolver "^1.2.2"
+ jest-util "^29.3.1"
+ jest-validate "^29.3.1"
+ resolve "^1.20.0"
+ resolve.exports "^1.1.0"
+ slash "^3.0.0"
+
+jest-runner@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.3.1.tgz#a92a879a47dd096fea46bb1517b0a99418ee9e2d"
+ integrity sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==
+ dependencies:
+ "@jest/console" "^29.3.1"
+ "@jest/environment" "^29.3.1"
+ "@jest/test-result" "^29.3.1"
+ "@jest/transform" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ emittery "^0.13.1"
+ graceful-fs "^4.2.9"
+ jest-docblock "^29.2.0"
+ jest-environment-node "^29.3.1"
+ jest-haste-map "^29.3.1"
+ jest-leak-detector "^29.3.1"
+ jest-message-util "^29.3.1"
+ jest-resolve "^29.3.1"
+ jest-runtime "^29.3.1"
+ jest-util "^29.3.1"
+ jest-watcher "^29.3.1"
+ jest-worker "^29.3.1"
+ p-limit "^3.1.0"
+ source-map-support "0.5.13"
+
+jest-runtime@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.3.1.tgz#21efccb1a66911d6d8591276a6182f520b86737a"
+ integrity sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==
+ dependencies:
+ "@jest/environment" "^29.3.1"
+ "@jest/fake-timers" "^29.3.1"
+ "@jest/globals" "^29.3.1"
+ "@jest/source-map" "^29.2.0"
+ "@jest/test-result" "^29.3.1"
+ "@jest/transform" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ cjs-module-lexer "^1.0.0"
+ collect-v8-coverage "^1.0.0"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^29.3.1"
+ jest-message-util "^29.3.1"
+ jest-mock "^29.3.1"
+ jest-regex-util "^29.2.0"
+ jest-resolve "^29.3.1"
+ jest-snapshot "^29.3.1"
+ jest-util "^29.3.1"
+ slash "^3.0.0"
+ strip-bom "^4.0.0"
+
+jest-snapshot@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.3.1.tgz#17bcef71a453adc059a18a32ccbd594b8cc4e45e"
+ integrity sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@babel/generator" "^7.7.2"
+ "@babel/plugin-syntax-jsx" "^7.7.2"
+ "@babel/plugin-syntax-typescript" "^7.7.2"
+ "@babel/traverse" "^7.7.2"
+ "@babel/types" "^7.3.3"
+ "@jest/expect-utils" "^29.3.1"
+ "@jest/transform" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/babel__traverse" "^7.0.6"
+ "@types/prettier" "^2.1.5"
+ babel-preset-current-node-syntax "^1.0.0"
+ chalk "^4.0.0"
+ expect "^29.3.1"
+ graceful-fs "^4.2.9"
+ jest-diff "^29.3.1"
+ jest-get-type "^29.2.0"
+ jest-haste-map "^29.3.1"
+ jest-matcher-utils "^29.3.1"
+ jest-message-util "^29.3.1"
+ jest-util "^29.3.1"
+ natural-compare "^1.4.0"
+ pretty-format "^29.3.1"
+ semver "^7.3.5"
+
+jest-util@^29.0.0, jest-util@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1"
+ integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==
+ dependencies:
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ graceful-fs "^4.2.9"
+ picomatch "^2.2.3"
+
+jest-validate@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.3.1.tgz#d56fefaa2e7d1fde3ecdc973c7f7f8f25eea704a"
+ integrity sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==
+ dependencies:
+ "@jest/types" "^29.3.1"
+ camelcase "^6.2.0"
+ chalk "^4.0.0"
+ jest-get-type "^29.2.0"
+ leven "^3.1.0"
+ pretty-format "^29.3.1"
+
+jest-watcher@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.3.1.tgz#3341547e14fe3c0f79f9c3a4c62dbc3fc977fd4a"
+ integrity sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==
+ dependencies:
+ "@jest/test-result" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ emittery "^0.13.1"
+ jest-util "^29.3.1"
+ string-length "^4.0.1"
+
+jest-worker@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.3.1.tgz#e9462161017a9bb176380d721cab022661da3d6b"
+ integrity sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==
+ dependencies:
+ "@types/node" "*"
+ jest-util "^29.3.1"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+jest@^29.0.3:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-29.3.1.tgz#c130c0d551ae6b5459b8963747fed392ddbde122"
+ integrity sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==
+ dependencies:
+ "@jest/core" "^29.3.1"
+ "@jest/types" "^29.3.1"
+ import-local "^3.0.2"
+ jest-cli "^29.3.1"
+
+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"
+
+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 sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
+
+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==
+
+json5@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
+ integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+
+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==
+
+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==
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+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.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+
+lodash.memoize@4.x:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
+
+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"
+
+make-dir@^3.0.0:
+ 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"
+
+make-error@1.x, make-error@^1.1.1:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+ integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+
+makeerror@1.0.12:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
+ integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
+ dependencies:
+ tmpl "1.0.5"
+
+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==
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+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==
+
+minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+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==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+ integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
+
+node-releases@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
+ integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
+
+nodemon@^2.0.20:
+ version "2.0.20"
+ resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.20.tgz#e3537de768a492e8d74da5c5813cb0c7486fc701"
+ integrity sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==
+ dependencies:
+ chokidar "^3.5.2"
+ debug "^3.2.7"
+ ignore-by-default "^1.0.1"
+ minimatch "^3.1.2"
+ pstree.remy "^1.1.8"
+ semver "^5.7.1"
+ simple-update-notifier "^1.0.7"
+ supports-color "^5.5.0"
+ touch "^3.1.0"
+ undefsafe "^2.0.5"
+
+nopt@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
+ integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==
+ dependencies:
+ abbrev "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==
+
+npm-run-path@^4.0.1:
+ 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"
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+onetime@^5.1.2:
+ 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"
+
+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.1.0:
+ 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@^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-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==
+
+parse-json@^5.2.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"
+
+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 sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+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.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pirates@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
+ integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
+
+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"
+
+pretty-format@^29.0.0, pretty-format@^29.3.1:
+ version "29.3.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da"
+ integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==
+ dependencies:
+ "@jest/schemas" "^29.0.0"
+ ansi-styles "^5.0.0"
+ react-is "^18.0.0"
+
+prompts@^2.0.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
+ integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
+pstree.remy@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
+ integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
+
+react-is@^18.0.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
+ integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+regenerate-unicode-properties@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c"
+ integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+ 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.13.11:
+ version "0.13.11"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
+regenerator-transform@^0.15.1:
+ version "0.15.1"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56"
+ integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regexpu-core@^5.2.1:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc"
+ integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.1.0"
+ regjsgen "^0.7.1"
+ regjsparser "^0.9.1"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.1.0"
+
+regjsgen@^0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6"
+ integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==
+
+regjsparser@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709"
+ integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==
+ dependencies:
+ jsesc "~0.5.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+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@^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.exports@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
+ integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
+
+resolve@^1.14.2, resolve@^1.20.0:
+ version "1.22.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
+ integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+semver@7.x, semver@^7.3.5:
+ version "7.3.8"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
+ integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^5.7.1:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+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.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
+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@^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==
+
+signal-exit@^3.0.3, signal-exit@^3.0.7:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+simple-update-notifier@^1.0.7:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82"
+ integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==
+ dependencies:
+ semver "~7.0.0"
+
+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==
+
+source-map-support@0.5.13:
+ version "0.5.13"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
+ integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+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==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
+stack-utils@^2.0.3:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
+ integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
+ dependencies:
+ escape-string-regexp "^2.0.0"
+
+string-length@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
+ integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
+ dependencies:
+ char-regex "^1.0.2"
+ strip-ansi "^6.0.0"
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+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-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-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==
+
+supports-color@^5.3.0, supports-color@^5.5.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@^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-color@^8.0.0:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+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"
+
+tmpl@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
+ integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
+
+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 sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+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"
+
+touch@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
+ integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==
+ dependencies:
+ nopt "~1.0.10"
+
+ts-jest@^29.0.2:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.0.3.tgz#63ea93c5401ab73595440733cefdba31fcf9cb77"
+ integrity sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==
+ dependencies:
+ bs-logger "0.x"
+ fast-json-stable-stringify "2.x"
+ jest-util "^29.0.0"
+ json5 "^2.2.1"
+ lodash.memoize "4.x"
+ make-error "1.x"
+ semver "7.x"
+ yargs-parser "^21.0.1"
+
+ts-node@^10.9.1:
+ version "10.9.1"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
+ integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
+ dependencies:
+ "@cspotcode/source-map-support" "^0.8.0"
+ "@tsconfig/node10" "^1.0.7"
+ "@tsconfig/node12" "^1.0.7"
+ "@tsconfig/node14" "^1.0.0"
+ "@tsconfig/node16" "^1.0.2"
+ acorn "^8.4.1"
+ acorn-walk "^8.1.1"
+ arg "^4.1.0"
+ create-require "^1.1.0"
+ diff "^4.0.1"
+ make-error "^1.1.1"
+ v8-compile-cache-lib "^3.0.1"
+ yn "3.1.1"
+
+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.21.3:
+ version "0.21.3"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+typescript@^4.8.3:
+ version "4.9.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db"
+ integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==
+
+undefsafe@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c"
+ integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
+
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
+unicode-match-property-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0"
+ integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
+ integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+
+update-browserslist-db@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
+ integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+v8-compile-cache-lib@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
+ integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
+
+v8-to-istanbul@^9.0.1:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4"
+ integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.12"
+ "@types/istanbul-lib-coverage" "^2.0.1"
+ convert-source-map "^1.6.0"
+
+walker@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
+ integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
+ dependencies:
+ makeerror "1.0.12"
+
+which@^2.0.1:
+ 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"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ 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 sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+write-file-atomic@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
+ integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
+ dependencies:
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.7"
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+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==
+
+yargs-parser@^21.0.1, yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
+yargs@^17.3.1:
+ version "17.6.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541"
+ integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
+yn@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
+ integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+
+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==