From 3d81ef9bc460b30b10d17c89da7195eed1e1bdf6 Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Sat, 9 Apr 2022 16:16:39 -0500
Subject: [PATCH 01/16] Poner nombre
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9d4a8dcf2..b0c2a6e61 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Launch X Node JS Playbook 🚀 de @explorername
+# Launch X Node JS Playbook 🚀 de @RMEstefania
From 4623ac2067be66ae2f5a6be980df489d9ebd2404 Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Wed, 13 Apr 2022 15:40:47 -0500
Subject: [PATCH 02/16] Ejercicios
---
weekly_mission_1/example1/main.js | 30 ++++++++++++++++++
weekly_mission_1/example10/main.js | 4 +++
weekly_mission_1/example10/package.json | 13 ++++++++
weekly_mission_1/example10/pokemon.js | 0
weekly_mission_1/example2/logger.js | 17 ++++++++++
weekly_mission_1/example2/main.js | 6 ++++
weekly_mission_1/example3/logger_1.js | 14 +++++++++
weekly_mission_1/example3/logger_2.js | 19 +++++++++++
weekly_mission_1/example3/main.js | 9 ++++++
weekly_mission_1/example4/logger.js | 21 +++++++++++++
weekly_mission_1/example4/main.js | 10 ++++++
weekly_mission_1/example5/logger.js | 14 +++++++++
weekly_mission_1/example5/main.js | 10 ++++++
weekly_mission_1/example6/logger.js | 14 +++++++++
weekly_mission_1/example6/main.js | 4 +++
weekly_mission_1/example6/patcher.js | 10 ++++++
weekly_mission_1/example7/logger.js | 40 ++++++++++++++++++++++++
weekly_mission_1/example7/main.js | 3 ++
weekly_mission_1/example7/main_2.js | 3 ++
weekly_mission_1/example7/main_module.js | 4 +++
weekly_mission_1/example7/package.json | 13 ++++++++
weekly_mission_1/example8/logger.js | 15 +++++++++
weekly_mission_1/example8/main.js | 5 +++
weekly_mission_1/example8/main_2.js | 4 +++
weekly_mission_1/example8/package.json | 13 ++++++++
weekly_mission_1/example9/main.js | 18 +++++++++++
weekly_mission_1/example9/pokemon.js | 9 ++++++
27 files changed, 322 insertions(+)
create mode 100644 weekly_mission_1/example1/main.js
create mode 100644 weekly_mission_1/example10/main.js
create mode 100644 weekly_mission_1/example10/package.json
create mode 100644 weekly_mission_1/example10/pokemon.js
create mode 100644 weekly_mission_1/example2/logger.js
create mode 100644 weekly_mission_1/example2/main.js
create mode 100644 weekly_mission_1/example3/logger_1.js
create mode 100644 weekly_mission_1/example3/logger_2.js
create mode 100644 weekly_mission_1/example3/main.js
create mode 100644 weekly_mission_1/example4/logger.js
create mode 100644 weekly_mission_1/example4/main.js
create mode 100644 weekly_mission_1/example5/logger.js
create mode 100644 weekly_mission_1/example5/main.js
create mode 100644 weekly_mission_1/example6/logger.js
create mode 100644 weekly_mission_1/example6/main.js
create mode 100644 weekly_mission_1/example6/patcher.js
create mode 100644 weekly_mission_1/example7/logger.js
create mode 100644 weekly_mission_1/example7/main.js
create mode 100644 weekly_mission_1/example7/main_2.js
create mode 100644 weekly_mission_1/example7/main_module.js
create mode 100644 weekly_mission_1/example7/package.json
create mode 100644 weekly_mission_1/example8/logger.js
create mode 100644 weekly_mission_1/example8/main.js
create mode 100644 weekly_mission_1/example8/main_2.js
create mode 100644 weekly_mission_1/example8/package.json
create mode 100644 weekly_mission_1/example9/main.js
create mode 100644 weekly_mission_1/example9/pokemon.js
diff --git a/weekly_mission_1/example1/main.js b/weekly_mission_1/example1/main.js
new file mode 100644
index 000000000..684b60640
--- /dev/null
+++ b/weekly_mission_1/example1/main.js
@@ -0,0 +1,30 @@
+// 1. Creación de un objeto con propiedades
+
+let myCar = new Object(); // Creación de un objeto
+myCar.make = 'Ford'; // Guardando un valor dentro del objeto creado
+myCar.model = 'Mustang';
+myCar.year = 1969;
+
+console.log(myCar) // Imprimiendo objeto
+
+// 2. Declaración de un objeto con variables locales y públicas
+
+const myModule = (() => {
+
+// Variables de contexto local
+ const privateFoo = "Soy un valor privado, solo me usan dentro de este objeto"
+ const privateBar = [1,2,3,4]
+ const baz = "Soy un valor que va a ser expuesto"
+
+// Variable para guardar las variables locales
+ const exported = {
+ publicFoo: "Valor público, pueden verme desde donde me llamen",
+ publicBar: "Otro valor público",
+ publicBaz: baz
+ }
+
+// Exposición de variables locales
+ return exported
+})()
+
+console.log(myModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example10/main.js b/weekly_mission_1/example10/main.js
new file mode 100644
index 000000000..e48c1c4f3
--- /dev/null
+++ b/weekly_mission_1/example10/main.js
@@ -0,0 +1,4 @@
+import MyPokemon from './pokemon.js'
+
+const pikachu = new MyPokemon('Pikachu')
+pikachu.sayHello()
\ No newline at end of file
diff --git a/weekly_mission_1/example10/package.json b/weekly_mission_1/example10/package.json
new file mode 100644
index 000000000..d44e02716
--- /dev/null
+++ b/weekly_mission_1/example10/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "esm-syntax",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "type": "module",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example10/pokemon.js b/weekly_mission_1/example10/pokemon.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/weekly_mission_1/example2/logger.js b/weekly_mission_1/example2/logger.js
new file mode 100644
index 000000000..e00e7d713
--- /dev/null
+++ b/weekly_mission_1/example2/logger.js
@@ -0,0 +1,17 @@
+// logger.js
+
+// Esta es una función que se guardara en este módulo como info
+exports.info = (message) => {
+ console.log(`info: ${message}`)
+}
+
+// Esta es una función que se guardara en este módulo como verbose
+exports.verbose = (message) => {
+ console.log(`verbose: ${message}`)
+}
+
+/*
+ const logger = require('./logger')
+ logger.info('This is an informational message')
+ logger.verbose('This is a verbose message')
+ * */
diff --git a/weekly_mission_1/example2/main.js b/weekly_mission_1/example2/main.js
new file mode 100644
index 000000000..a092fb4d6
--- /dev/null
+++ b/weekly_mission_1/example2/main.js
@@ -0,0 +1,6 @@
+// node main.js
+
+const logger = require('./logger')
+
+logger.info('This is an informational message')
+logger.verbose('This is a verbose message')
diff --git a/weekly_mission_1/example3/logger_1.js b/weekly_mission_1/example3/logger_1.js
new file mode 100644
index 000000000..f7a131b0f
--- /dev/null
+++ b/weekly_mission_1/example3/logger_1.js
@@ -0,0 +1,14 @@
+/*
+ Esto también es la declaración de una función
+
+ module.exports hará que puedas invocar esta función en otro script como:
+ > const logger = require('./logger')
+
+ y usarla como:
+
+ > logger("Heeey!")
+*/
+
+module.exports = (message) => {
+ console.log(`info: ${message}`)
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example3/logger_2.js b/weekly_mission_1/example3/logger_2.js
new file mode 100644
index 000000000..1858e94a8
--- /dev/null
+++ b/weekly_mission_1/example3/logger_2.js
@@ -0,0 +1,19 @@
+
+/*
+ Al exportar una función/objeto así:
+
+ > module.exports.verbose
+
+ Estaremos exportando el contenido con el nombre `verbose`
+
+ module.exports hará que puedas invocar esta función en otro script como:
+ > const logger = require('./logger')
+
+ y usarla como:
+
+ > logger.verbose("Heeey!")
+*/
+
+module.exports.verbose = (message) => {
+ console.log(`verbose: ${message}`)
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example3/main.js b/weekly_mission_1/example3/main.js
new file mode 100644
index 000000000..0c1b87566
--- /dev/null
+++ b/weekly_mission_1/example3/main.js
@@ -0,0 +1,9 @@
+/*
+ node main.js
+*/
+
+const logger1 = require('./logger_1')
+const logger2 = require('./logger_2')
+
+logger1('This is an informational message')
+logger2.verbose('This is a verbose message')
diff --git a/weekly_mission_1/example4/logger.js b/weekly_mission_1/example4/logger.js
new file mode 100644
index 000000000..40b1ee15e
--- /dev/null
+++ b/weekly_mission_1/example4/logger.js
@@ -0,0 +1,21 @@
+class Logger {
+ constructor(name) {
+ // this es una variable para referenciar el valor del contexto local de esta clase
+ this.name = name // Estás variables se le conocen como atributos
+ }
+
+ // método
+ // this.name es la variable que se guarda en el contexto local
+ // message es una variable que se le pasa al ejecutar este método
+ info (message) {
+ console.log(`[Objeto con nombre: ${this.name}] info: ${message}`)
+ }
+
+ // método
+ verbose (message) {
+ console.log(`[Objeto con nombre: ${this.name}] verbose: ${message}`)
+ }
+}
+
+// Esta clase se exporta en este módulo
+module.exports = Logger
\ No newline at end of file
diff --git a/weekly_mission_1/example4/main.js b/weekly_mission_1/example4/main.js
new file mode 100644
index 000000000..e00a93511
--- /dev/null
+++ b/weekly_mission_1/example4/main.js
@@ -0,0 +1,10 @@
+const Logger = require('./logger') // Invocas el módulo que contiene la clase
+
+// Creación de un objeto
+const dbLogger = new Logger('DB') // Creas un objeto nuevo, esto llama por default el constructor de la clase
+// invocación del método
+dbLogger.info('This is an informational message')
+
+// Creación de otro objeto
+const accessLogger = new Logger('ACCESS')
+accessLogger.verbose('This is a verbose message')
\ No newline at end of file
diff --git a/weekly_mission_1/example5/logger.js b/weekly_mission_1/example5/logger.js
new file mode 100644
index 000000000..c04eba8cd
--- /dev/null
+++ b/weekly_mission_1/example5/logger.js
@@ -0,0 +1,14 @@
+class Logger {
+ constructor(name){
+ // Al crear este objeto se guardarán estos valores
+ this.count = 0
+ this.name = name
+ }
+
+ log(message) {
+ this.count++ // se aumenta el contador interno al llamar este método
+ console.log('[' + this.name + '] ' + message)
+ }
+}
+
+module.exports = new Logger('DEFAULT') // Instanciación del objeto y se exporta
\ No newline at end of file
diff --git a/weekly_mission_1/example5/main.js b/weekly_mission_1/example5/main.js
new file mode 100644
index 000000000..86e6b567e
--- /dev/null
+++ b/weekly_mission_1/example5/main.js
@@ -0,0 +1,10 @@
+const logger = require('./logger')
+
+// Ya se puede usar directamente el objeto instanciado en el módulo logger
+logger.log('This is an informational message')
+
+/*
+También pueder instanciar uno nuevo de esta manera:
+ const customLogger = new logger.constructor('CUSTOM')
+ customLogger.log('This is an informational message')
+*/
\ No newline at end of file
diff --git a/weekly_mission_1/example6/logger.js b/weekly_mission_1/example6/logger.js
new file mode 100644
index 000000000..e36a4b8ba
--- /dev/null
+++ b/weekly_mission_1/example6/logger.js
@@ -0,0 +1,14 @@
+class Logger {
+ constructor (name) {
+ this.count = 0
+ this.name = name
+ }
+
+ log (message) {
+ this.count++
+ console.log('[' + this.name + '] ' + message)
+ }
+}
+
+module.exports = new Logger('DEFAULT') // Nuevo objeto instanciado
+module.exports.Logger = Logger // Clase
\ No newline at end of file
diff --git a/weekly_mission_1/example6/main.js b/weekly_mission_1/example6/main.js
new file mode 100644
index 000000000..311c2395a
--- /dev/null
+++ b/weekly_mission_1/example6/main.js
@@ -0,0 +1,4 @@
+require('./patcher') // Llamas este módulo que modifica el objeto instanciado
+const logger = require('./logger') // Al llamar el módulo en logger.js te dará el objeto modificado
+
+logger.customMessage()
\ No newline at end of file
diff --git a/weekly_mission_1/example6/patcher.js b/weekly_mission_1/example6/patcher.js
new file mode 100644
index 000000000..1c492e8ac
--- /dev/null
+++ b/weekly_mission_1/example6/patcher.js
@@ -0,0 +1,10 @@
+/*
+ * Ten en cuenta:
+ * - require('./logger') te dará el objeto creado
+ * - require('./logger').Logger te regresará la clase
+ *
+ * En este caso estamos agregando una función más al objeto instanciado, no a la clase.
+ * */
+require('./logger').customMessage = function () {
+ console.log('This is a new functionality')
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example7/logger.js b/weekly_mission_1/example7/logger.js
new file mode 100644
index 000000000..a8b066c1c
--- /dev/null
+++ b/weekly_mission_1/example7/logger.js
@@ -0,0 +1,40 @@
+/*
+ Este modulo se comporta como si fuera un objeto que contiene todo lo definido
+
+ [Module: null prototype] {
+ DEFAULT_LEVEL: 'info',
+ LEVELS: { error: 0, debug: 1, warn: 2, data: 3, info: 4, verbose: 5 },
+ Logger: [class Logger],
+ log: [Function: log]
+ }
+
+*/
+
+// exports a function
+export function log (message) {
+ console.log(message)
+}
+
+// exports a constant
+export const DEFAULT_LEVEL = 'info'
+
+// exports an object
+export const LEVELS = {
+ error: 0,
+ debug: 1,
+ warn: 2,
+ data: 3,
+ info: 4,
+ verbose: 5
+}
+
+// exports a class
+export class Logger {
+ constructor (name) {
+ this.name = name
+ }
+
+ log (message) {
+ console.log(`[${this.name}] ${message}`)
+ }
+}
diff --git a/weekly_mission_1/example7/main.js b/weekly_mission_1/example7/main.js
new file mode 100644
index 000000000..9cfb8a9bc
--- /dev/null
+++ b/weekly_mission_1/example7/main.js
@@ -0,0 +1,3 @@
+import * as loggerModule from './logger.js'
+
+console.log(loggerModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example7/main_2.js b/weekly_mission_1/example7/main_2.js
new file mode 100644
index 000000000..734dae51f
--- /dev/null
+++ b/weekly_mission_1/example7/main_2.js
@@ -0,0 +1,3 @@
+import { log } from './logger.js'
+
+log('Hello world')
\ No newline at end of file
diff --git a/weekly_mission_1/example7/main_module.js b/weekly_mission_1/example7/main_module.js
new file mode 100644
index 000000000..192429da9
--- /dev/null
+++ b/weekly_mission_1/example7/main_module.js
@@ -0,0 +1,4 @@
+/* Importando el módulo */
+import * as loggerModule from './logger.js'
+
+console.log(loggerModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example7/package.json b/weekly_mission_1/example7/package.json
new file mode 100644
index 000000000..959f7a6e2
--- /dev/null
+++ b/weekly_mission_1/example7/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "esm-syntax",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "type": "module",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/weekly_mission_1/example8/logger.js b/weekly_mission_1/example8/logger.js
new file mode 100644
index 000000000..98b00c5c1
--- /dev/null
+++ b/weekly_mission_1/example8/logger.js
@@ -0,0 +1,15 @@
+/*
+ export default nos permite exportar esta clase e importara
+
+ import MyLogger from './logger.js'
+*/
+
+export default class Logger {
+ constructor (name) {
+ this.name = name
+ }
+
+ log (message) {
+ console.log(`[${this.name}] ${message}`)
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example8/main.js b/weekly_mission_1/example8/main.js
new file mode 100644
index 000000000..16ad5a654
--- /dev/null
+++ b/weekly_mission_1/example8/main.js
@@ -0,0 +1,5 @@
+// Importando la clase MyLogger
+import MyLogger from './logger.js'
+
+const Logger = new MyLogger('info')
+Logger.log('Hello World')
\ No newline at end of file
diff --git a/weekly_mission_1/example8/main_2.js b/weekly_mission_1/example8/main_2.js
new file mode 100644
index 000000000..192429da9
--- /dev/null
+++ b/weekly_mission_1/example8/main_2.js
@@ -0,0 +1,4 @@
+/* Importando el módulo */
+import * as loggerModule from './logger.js'
+
+console.log(loggerModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example8/package.json b/weekly_mission_1/example8/package.json
new file mode 100644
index 000000000..d44e02716
--- /dev/null
+++ b/weekly_mission_1/example8/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "esm-syntax",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "type": "module",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example9/main.js b/weekly_mission_1/example9/main.js
new file mode 100644
index 000000000..326fc252a
--- /dev/null
+++ b/weekly_mission_1/example9/main.js
@@ -0,0 +1,18 @@
+const Pokemon = require('./pokemon')
+
+const pikachu = new Pokemon("pikachu")
+const bulbasaur = new Pokemon("bulbasaur")
+const squirtle = new Pokemon("squirtle")
+const charmander = new Pokemon("charmander")
+
+pikachu.sayHello()
+pikachu.sayMessage("Heey!")
+
+bulbasaur.sayHello()
+bulbasaur.sayMessage("Heey!")
+
+charmander.sayHello()
+charmander.sayMessage("Heey!")
+
+squirtle.sayHello()
+squirtle.sayMessage("Heey!")
\ No newline at end of file
diff --git a/weekly_mission_1/example9/pokemon.js b/weekly_mission_1/example9/pokemon.js
new file mode 100644
index 000000000..720581802
--- /dev/null
+++ b/weekly_mission_1/example9/pokemon.js
@@ -0,0 +1,9 @@
+export default class Pok {
+ constructor (Pokemon) {
+ this.Pokemon = Pokemon
+ }
+ sayHello(Message){
+ console.sayHello(`[${this.Pokemon}] ${Message}`)
+ }
+
+}
\ No newline at end of file
From 046c09bdd7eedaaad7f52694535b80ea502150af Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Wed, 13 Apr 2022 16:13:06 -0500
Subject: [PATCH 03/16] Carpeta
---
weekly_mission_1/example1 | 1 +
1 file changed, 1 insertion(+)
create mode 100644 weekly_mission_1/example1
diff --git a/weekly_mission_1/example1 b/weekly_mission_1/example1
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/weekly_mission_1/example1
@@ -0,0 +1 @@
+
From a6acaa87a580853f57479e88676a91ae4b0df0fa Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Wed, 13 Apr 2022 16:13:34 -0500
Subject: [PATCH 04/16] Prueba
---
weekly_mission_1/example1 | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 weekly_mission_1/example1
diff --git a/weekly_mission_1/example1 b/weekly_mission_1/example1
deleted file mode 100644
index 8b1378917..000000000
--- a/weekly_mission_1/example1
+++ /dev/null
@@ -1 +0,0 @@
-
From a2c773225768acac98ebd6da66b87ba82ea34236 Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Wed, 13 Apr 2022 16:27:03 -0500
Subject: [PATCH 05/16] Ejercicios
---
weekly_mission_1/example1/main.js | 30 ++++++++++++++++++
weekly_mission_1/example2/logger.js | 17 ++++++++++
weekly_mission_1/example2/main.js | 6 ++++
weekly_mission_1/example3/logger_1.js | 14 +++++++++
weekly_mission_1/example3/logger_2.js | 19 +++++++++++
weekly_mission_1/example3/main.js | 9 ++++++
weekly_mission_1/example4/logger.js | 21 +++++++++++++
weekly_mission_1/example4/main.js | 10 ++++++
weekly_mission_1/example5/logger.js | 14 +++++++++
weekly_mission_1/example5/main.js | 10 ++++++
weekly_mission_1/example6/logger.js | 14 +++++++++
weekly_mission_1/example6/main.js | 4 +++
weekly_mission_1/example6/patcher.js | 10 ++++++
weekly_mission_1/example7/logger.js | 40 ++++++++++++++++++++++++
weekly_mission_1/example7/main.js | 3 ++
weekly_mission_1/example7/main_2.js | 3 ++
weekly_mission_1/example7/main_module.js | 4 +++
weekly_mission_1/example7/package.json | 13 ++++++++
weekly_mission_1/example8/logger.js | 15 +++++++++
weekly_mission_1/example8/main.js | 5 +++
weekly_mission_1/example8/main_2.js | 4 +++
weekly_mission_1/example8/package.json | 13 ++++++++
22 files changed, 278 insertions(+)
create mode 100644 weekly_mission_1/example1/main.js
create mode 100644 weekly_mission_1/example2/logger.js
create mode 100644 weekly_mission_1/example2/main.js
create mode 100644 weekly_mission_1/example3/logger_1.js
create mode 100644 weekly_mission_1/example3/logger_2.js
create mode 100644 weekly_mission_1/example3/main.js
create mode 100644 weekly_mission_1/example4/logger.js
create mode 100644 weekly_mission_1/example4/main.js
create mode 100644 weekly_mission_1/example5/logger.js
create mode 100644 weekly_mission_1/example5/main.js
create mode 100644 weekly_mission_1/example6/logger.js
create mode 100644 weekly_mission_1/example6/main.js
create mode 100644 weekly_mission_1/example6/patcher.js
create mode 100644 weekly_mission_1/example7/logger.js
create mode 100644 weekly_mission_1/example7/main.js
create mode 100644 weekly_mission_1/example7/main_2.js
create mode 100644 weekly_mission_1/example7/main_module.js
create mode 100644 weekly_mission_1/example7/package.json
create mode 100644 weekly_mission_1/example8/logger.js
create mode 100644 weekly_mission_1/example8/main.js
create mode 100644 weekly_mission_1/example8/main_2.js
create mode 100644 weekly_mission_1/example8/package.json
diff --git a/weekly_mission_1/example1/main.js b/weekly_mission_1/example1/main.js
new file mode 100644
index 000000000..b32ff1340
--- /dev/null
+++ b/weekly_mission_1/example1/main.js
@@ -0,0 +1,30 @@
+// 1. Creación de un objeto con propiedades
+
+let myCar = new Object(); // Creación de un objeto
+myCar.make = 'Ford'; // Guardando un valor dentro del objeto creado
+myCar.model = 'Mustang';
+myCar.year = 1969;
+
+console.log(myCar) // Imprimiendo objeto
+
+// 2. Declaración de un objeto con variables locales y públicas
+
+const myModule = (() => {
+
+// Variables de contexto local
+ const privateFoo = "Soy un valor privado, solo me usan dentro de este objeto"
+ const privateBar = [1,2,3,4]
+ const baz = "Soy un valor que va a ser expuesto"
+
+// Variable para guardar las variables locales
+ const exported = {
+ publicFoo: "Valor público, pueden verme desde donde me llamen",
+ publicBar: "Otro valor público",
+ publicBaz: baz
+ }
+
+// Exposición de variables locales
+ return exported
+})()
+
+console.log(myModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example2/logger.js b/weekly_mission_1/example2/logger.js
new file mode 100644
index 000000000..ec0d03dac
--- /dev/null
+++ b/weekly_mission_1/example2/logger.js
@@ -0,0 +1,17 @@
+// logger.js
+
+// Esta es una función que se guardara en este módulo como info
+exports.info = (message) => {
+ console.log(`info: ${message}`)
+}
+
+// Esta es una función que se guardara en este módulo como verbose
+exports.verbose = (message) => {
+ console.log(`verbose: ${message}`)
+}
+
+/*
+ const logger = require('./logger')
+ logger.info('This is an informational message')
+ logger.verbose('This is a verbose message')
+ * */
diff --git a/weekly_mission_1/example2/main.js b/weekly_mission_1/example2/main.js
new file mode 100644
index 000000000..8b2910d51
--- /dev/null
+++ b/weekly_mission_1/example2/main.js
@@ -0,0 +1,6 @@
+// node main.js
+
+const logger = require('./logger')
+
+logger.info('This is an informational message')
+logger.verbose('This is a verbose message')
diff --git a/weekly_mission_1/example3/logger_1.js b/weekly_mission_1/example3/logger_1.js
new file mode 100644
index 000000000..085baa9b1
--- /dev/null
+++ b/weekly_mission_1/example3/logger_1.js
@@ -0,0 +1,14 @@
+/*
+ Esto también es la declaración de una función
+
+ module.exports hará que puedas invocar esta función en otro script como:
+ > const logger = require('./logger')
+
+ y usarla como:
+
+ > logger("Heeey!")
+*/
+
+module.exports = (message) => {
+ console.log(`info: ${message}`)
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example3/logger_2.js b/weekly_mission_1/example3/logger_2.js
new file mode 100644
index 000000000..9eabaae7b
--- /dev/null
+++ b/weekly_mission_1/example3/logger_2.js
@@ -0,0 +1,19 @@
+
+/*
+ Al exportar una función/objeto así:
+
+ > module.exports.verbose
+
+ Estaremos exportando el contenido con el nombre `verbose`
+
+ module.exports hará que puedas invocar esta función en otro script como:
+ > const logger = require('./logger')
+
+ y usarla como:
+
+ > logger.verbose("Heeey!")
+*/
+
+module.exports.verbose = (message) => {
+ console.log(`verbose: ${message}`)
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example3/main.js b/weekly_mission_1/example3/main.js
new file mode 100644
index 000000000..ea750c60d
--- /dev/null
+++ b/weekly_mission_1/example3/main.js
@@ -0,0 +1,9 @@
+/*
+ node main.js
+*/
+
+const logger1 = require('./logger_1')
+const logger2 = require('./logger_2')
+
+logger1('This is an informational message')
+logger2.verbose('This is a verbose message')
diff --git a/weekly_mission_1/example4/logger.js b/weekly_mission_1/example4/logger.js
new file mode 100644
index 000000000..444069ac3
--- /dev/null
+++ b/weekly_mission_1/example4/logger.js
@@ -0,0 +1,21 @@
+class Logger {
+ constructor(name) {
+ // this es una variable para referenciar el valor del contexto local de esta clase
+ this.name = name // Estás variables se le conocen como atributos
+ }
+
+ // método
+ // this.name es la variable que se guarda en el contexto local
+ // message es una variable que se le pasa al ejecutar este método
+ info (message) {
+ console.log(`[Objeto con nombre: ${this.name}] info: ${message}`)
+ }
+
+ // método
+ verbose (message) {
+ console.log(`[Objeto con nombre: ${this.name}] verbose: ${message}`)
+ }
+}
+
+// Esta clase se exporta en este módulo
+module.exports = Logger
\ No newline at end of file
diff --git a/weekly_mission_1/example4/main.js b/weekly_mission_1/example4/main.js
new file mode 100644
index 000000000..75078a473
--- /dev/null
+++ b/weekly_mission_1/example4/main.js
@@ -0,0 +1,10 @@
+const Logger = require('./logger') // Invocas el módulo que contiene la clase
+
+// Creación de un objeto
+const dbLogger = new Logger('DB') // Creas un objeto nuevo, esto llama por default el constructor de la clase
+// invocación del método
+dbLogger.info('This is an informational message')
+
+// Creación de otro objeto
+const accessLogger = new Logger('ACCESS')
+accessLogger.verbose('This is a verbose message')
\ No newline at end of file
diff --git a/weekly_mission_1/example5/logger.js b/weekly_mission_1/example5/logger.js
new file mode 100644
index 000000000..0ef2a04cc
--- /dev/null
+++ b/weekly_mission_1/example5/logger.js
@@ -0,0 +1,14 @@
+class Logger {
+ constructor(name){
+ // Al crear este objeto se guardarán estos valores
+ this.count = 0
+ this.name = name
+ }
+
+ log(message) {
+ this.count++ // se aumenta el contador interno al llamar este método
+ console.log('[' + this.name + '] ' + message)
+ }
+}
+
+module.exports = new Logger('DEFAULT') // Instanciación del objeto y se exporta
\ No newline at end of file
diff --git a/weekly_mission_1/example5/main.js b/weekly_mission_1/example5/main.js
new file mode 100644
index 000000000..2a3ecaab1
--- /dev/null
+++ b/weekly_mission_1/example5/main.js
@@ -0,0 +1,10 @@
+const logger = require('./logger')
+
+// Ya se puede usar directamente el objeto instanciado en el módulo logger
+logger.log('This is an informational message')
+
+/*
+También pueder instanciar uno nuevo de esta manera:
+ const customLogger = new logger.constructor('CUSTOM')
+ customLogger.log('This is an informational message')
+*/
\ No newline at end of file
diff --git a/weekly_mission_1/example6/logger.js b/weekly_mission_1/example6/logger.js
new file mode 100644
index 000000000..ea554e195
--- /dev/null
+++ b/weekly_mission_1/example6/logger.js
@@ -0,0 +1,14 @@
+class Logger {
+ constructor (name) {
+ this.count = 0
+ this.name = name
+ }
+
+ log (message) {
+ this.count++
+ console.log('[' + this.name + '] ' + message)
+ }
+}
+
+module.exports = new Logger('DEFAULT') // Nuevo objeto instanciado
+module.exports.Logger = Logger // Clase
\ No newline at end of file
diff --git a/weekly_mission_1/example6/main.js b/weekly_mission_1/example6/main.js
new file mode 100644
index 000000000..5219cea1d
--- /dev/null
+++ b/weekly_mission_1/example6/main.js
@@ -0,0 +1,4 @@
+require('./patcher') // Llamas este módulo que modifica el objeto instanciado
+const logger = require('./logger') // Al llamar el módulo en logger.js te dará el objeto modificado
+
+logger.customMessage()
\ No newline at end of file
diff --git a/weekly_mission_1/example6/patcher.js b/weekly_mission_1/example6/patcher.js
new file mode 100644
index 000000000..d6016e4a6
--- /dev/null
+++ b/weekly_mission_1/example6/patcher.js
@@ -0,0 +1,10 @@
+/*
+ * Ten en cuenta:
+ * - require('./logger') te dará el objeto creado
+ * - require('./logger').Logger te regresará la clase
+ *
+ * En este caso estamos agregando una función más al objeto instanciado, no a la clase.
+ * */
+require('./logger').customMessage = function () {
+ console.log('This is a new functionality')
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example7/logger.js b/weekly_mission_1/example7/logger.js
new file mode 100644
index 000000000..dbb83683b
--- /dev/null
+++ b/weekly_mission_1/example7/logger.js
@@ -0,0 +1,40 @@
+/*
+ Este modulo se comporta como si fuera un objeto que contiene todo lo definido
+
+ [Module: null prototype] {
+ DEFAULT_LEVEL: 'info',
+ LEVELS: { error: 0, debug: 1, warn: 2, data: 3, info: 4, verbose: 5 },
+ Logger: [class Logger],
+ log: [Function: log]
+ }
+
+*/
+
+// exports a function
+export function log (message) {
+ console.log(message)
+}
+
+// exports a constant
+export const DEFAULT_LEVEL = 'info'
+
+// exports an object
+export const LEVELS = {
+ error: 0,
+ debug: 1,
+ warn: 2,
+ data: 3,
+ info: 4,
+ verbose: 5
+}
+
+// exports a class
+export class Logger {
+ constructor (name) {
+ this.name = name
+ }
+
+ log (message) {
+ console.log(`[${this.name}] ${message}`)
+ }
+}
diff --git a/weekly_mission_1/example7/main.js b/weekly_mission_1/example7/main.js
new file mode 100644
index 000000000..ee4754417
--- /dev/null
+++ b/weekly_mission_1/example7/main.js
@@ -0,0 +1,3 @@
+import * as loggerModule from './logger.js'
+
+console.log(loggerModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example7/main_2.js b/weekly_mission_1/example7/main_2.js
new file mode 100644
index 000000000..e703532d4
--- /dev/null
+++ b/weekly_mission_1/example7/main_2.js
@@ -0,0 +1,3 @@
+import { log } from './logger.js'
+
+log('Hello world')
\ No newline at end of file
diff --git a/weekly_mission_1/example7/main_module.js b/weekly_mission_1/example7/main_module.js
new file mode 100644
index 000000000..e28c8a862
--- /dev/null
+++ b/weekly_mission_1/example7/main_module.js
@@ -0,0 +1,4 @@
+/* Importando el módulo */
+import * as loggerModule from './logger.js'
+
+console.log(loggerModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example7/package.json b/weekly_mission_1/example7/package.json
new file mode 100644
index 000000000..062ccf1ee
--- /dev/null
+++ b/weekly_mission_1/example7/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "esm-syntax",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "type": "module",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/weekly_mission_1/example8/logger.js b/weekly_mission_1/example8/logger.js
new file mode 100644
index 000000000..8938b24c2
--- /dev/null
+++ b/weekly_mission_1/example8/logger.js
@@ -0,0 +1,15 @@
+/*
+ export default nos permite exportar esta clase e importara
+
+ import MyLogger from './logger.js'
+*/
+
+export default class Logger {
+ constructor (name) {
+ this.name = name
+ }
+
+ log (message) {
+ console.log(`[${this.name}] ${message}`)
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example8/main.js b/weekly_mission_1/example8/main.js
new file mode 100644
index 000000000..dc6cf4581
--- /dev/null
+++ b/weekly_mission_1/example8/main.js
@@ -0,0 +1,5 @@
+// Importando la clase MyLogger
+import MyLogger from './logger.js'
+
+const Logger = new MyLogger('info')
+Logger.log('Hello World')
\ No newline at end of file
diff --git a/weekly_mission_1/example8/main_2.js b/weekly_mission_1/example8/main_2.js
new file mode 100644
index 000000000..e28c8a862
--- /dev/null
+++ b/weekly_mission_1/example8/main_2.js
@@ -0,0 +1,4 @@
+/* Importando el módulo */
+import * as loggerModule from './logger.js'
+
+console.log(loggerModule)
\ No newline at end of file
diff --git a/weekly_mission_1/example8/package.json b/weekly_mission_1/example8/package.json
new file mode 100644
index 000000000..c602bc44a
--- /dev/null
+++ b/weekly_mission_1/example8/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "esm-syntax",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "type": "module",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
\ No newline at end of file
From 07e233b4413b010eddda6ac37ad27316d71f644b Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Wed, 13 Apr 2022 16:29:44 -0500
Subject: [PATCH 06/16] Update readme.md
---
weekly_mission_1/readme.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/weekly_mission_1/readme.md b/weekly_mission_1/readme.md
index 68dd5aeb1..9df5ef2ba 100644
--- a/weekly_mission_1/readme.md
+++ b/weekly_mission_1/readme.md
@@ -1 +1,3 @@
# Weekly Mission 1
+
+Estos ejercicios son las prácticas de la primera semana de Back-End
From 76940b6beec1b41b0df99462f13db7ad0de64494 Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Tue, 19 Apr 2022 19:32:04 -0500
Subject: [PATCH 07/16] Agregar ejemplos
---
weekly_mission_2/examples_0/example_1.js | 6 ++++
weekly_mission_2/examples_0/example_2.js | 7 +++++
weekly_mission_2/examples_0/example_3.js | 19 ++++++++++++
weekly_mission_2/examples_0/example_4.js | 12 +++++++
weekly_mission_2/examples_0/example_5.js | 10 ++++++
weekly_mission_2/examples_1/example_1.js | 4 +++
weekly_mission_2/examples_1/example_10.js | 4 +++
weekly_mission_2/examples_1/example_11.js | 4 +++
weekly_mission_2/examples_1/example_12.js | 11 +++++++
weekly_mission_2/examples_1/example_13.js | 4 +++
weekly_mission_2/examples_1/example_14.js | 7 +++++
weekly_mission_2/examples_1/example_15.js | 4 +++
weekly_mission_2/examples_1/example_16.js | 16 ++++++++++
weekly_mission_2/examples_1/example_2.js | 6 ++++
weekly_mission_2/examples_1/example_3.js | 4 +++
weekly_mission_2/examples_1/example_4.js | 10 ++++++
weekly_mission_2/examples_1/example_5.js | 6 ++++
weekly_mission_2/examples_1/example_6.js | 7 +++++
weekly_mission_2/examples_1/example_7.js | 10 ++++++
weekly_mission_2/examples_1/example_8.js | 13 ++++++++
weekly_mission_2/examples_1/example_9.js | 5 +++
weekly_mission_2/examples_2/example_1.js | 5 +++
weekly_mission_2/examples_2/example_10.js | 32 +++++++++++++++++++
weekly_mission_2/examples_2/example_2.js | 6 ++++
weekly_mission_2/examples_2/example_3.js | 14 +++++++++
weekly_mission_2/examples_2/example_4.js | 16 ++++++++++
weekly_mission_2/examples_2/example_5.js | 22 +++++++++++++
weekly_mission_2/examples_2/example_6.js | 20 ++++++++++++
weekly_mission_2/examples_2/example_7.js | 38 +++++++++++++++++++++++
weekly_mission_2/examples_2/example_8.js | 17 ++++++++++
weekly_mission_2/examples_2/example_9.js | 25 +++++++++++++++
weekly_mission_2/examples_3/explorer.js | 11 +++++++
weekly_mission_2/examples_3/main.js | 10 ++++++
weekly_mission_2/examples_3/package.json | 13 ++++++++
weekly_mission_2/examples_3/viajero.js | 13 ++++++++
35 files changed, 411 insertions(+)
create mode 100644 weekly_mission_2/examples_0/example_1.js
create mode 100644 weekly_mission_2/examples_0/example_2.js
create mode 100644 weekly_mission_2/examples_0/example_3.js
create mode 100644 weekly_mission_2/examples_0/example_4.js
create mode 100644 weekly_mission_2/examples_0/example_5.js
create mode 100644 weekly_mission_2/examples_1/example_1.js
create mode 100644 weekly_mission_2/examples_1/example_10.js
create mode 100644 weekly_mission_2/examples_1/example_11.js
create mode 100644 weekly_mission_2/examples_1/example_12.js
create mode 100644 weekly_mission_2/examples_1/example_13.js
create mode 100644 weekly_mission_2/examples_1/example_14.js
create mode 100644 weekly_mission_2/examples_1/example_15.js
create mode 100644 weekly_mission_2/examples_1/example_16.js
create mode 100644 weekly_mission_2/examples_1/example_2.js
create mode 100644 weekly_mission_2/examples_1/example_3.js
create mode 100644 weekly_mission_2/examples_1/example_4.js
create mode 100644 weekly_mission_2/examples_1/example_5.js
create mode 100644 weekly_mission_2/examples_1/example_6.js
create mode 100644 weekly_mission_2/examples_1/example_7.js
create mode 100644 weekly_mission_2/examples_1/example_8.js
create mode 100644 weekly_mission_2/examples_1/example_9.js
create mode 100644 weekly_mission_2/examples_2/example_1.js
create mode 100644 weekly_mission_2/examples_2/example_10.js
create mode 100644 weekly_mission_2/examples_2/example_2.js
create mode 100644 weekly_mission_2/examples_2/example_3.js
create mode 100644 weekly_mission_2/examples_2/example_4.js
create mode 100644 weekly_mission_2/examples_2/example_5.js
create mode 100644 weekly_mission_2/examples_2/example_6.js
create mode 100644 weekly_mission_2/examples_2/example_7.js
create mode 100644 weekly_mission_2/examples_2/example_8.js
create mode 100644 weekly_mission_2/examples_2/example_9.js
create mode 100644 weekly_mission_2/examples_3/explorer.js
create mode 100644 weekly_mission_2/examples_3/main.js
create mode 100644 weekly_mission_2/examples_3/package.json
create mode 100644 weekly_mission_2/examples_3/viajero.js
diff --git a/weekly_mission_2/examples_0/example_1.js b/weekly_mission_2/examples_0/example_1.js
new file mode 100644
index 000000000..3d387c72a
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_1.js
@@ -0,0 +1,6 @@
+console.log("Objetos")
+
+// Ejemplo 1: Crear un objeto
+const myObjetc = {} // Esto es un objeto vacío
+console.log("Ejemplo 1: Crear un objeto vacío")
+console.log(myObjetc)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_2.js b/weekly_mission_2/examples_0/example_2.js
new file mode 100644
index 000000000..d85162c7c
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_2.js
@@ -0,0 +1,7 @@
+// Ejemplo 2: Crear un objeto con propiedades
+const myObjetc2 = {
+ name: "Carlo",
+ age: 27
+ }
+ console.log("Ejemplo 2: Crear un objeto con propiedades")
+ console.log(myObjetc2)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_3.js b/weekly_mission_2/examples_0/example_3.js
new file mode 100644
index 000000000..ba8b3e419
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_3.js
@@ -0,0 +1,19 @@
+// Ejemplo 3: Objeto con diferentes propiedades
+const myObject3 = {
+ name: "Tulio",
+ age: 2,
+ nicknames: [
+ "Tulipan",
+ "Tulancingo",
+ "Tulish"
+ ],
+ address: {
+ zip_code: "10000",
+ street: "Dr. Vertiz 11 Benito Juarez",
+ city: "CDMX"
+ }
+ }
+ console.log("Ejemplo 3: Objeto con diferentes propiedades")
+ console.log(myObject3)
+ console.log(myObject3.name)
+ console.log(myObject3["address"])
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_4.js b/weekly_mission_2/examples_0/example_4.js
new file mode 100644
index 000000000..bbc871b1a
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_4.js
@@ -0,0 +1,12 @@
+// Ejemplo 4: Objeto con métodos
+const pet = {
+ name: "Tulio",
+ // Esta es una función que se guarda como propiedad
+ sayHello: function(){
+ // this.name hace referencia a la propiedad del objeto
+ console.log(`${this.name} te saluda en español!`)
+ }
+ }
+
+ console.log("Ejemplo 4: Objeto con métodos")
+ pet.sayHello()
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_5.js b/weekly_mission_2/examples_0/example_5.js
new file mode 100644
index 000000000..37a3e24a0
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_5.js
@@ -0,0 +1,10 @@
+// Ejemplo 5: Objeto con método que recibe parámetros
+const myPet = {
+ name: "Woopa",
+ sayHelloToMyPet: function(yourPet){
+ console.log(`${this.name} say's hello to ${yourPet}`)
+ }
+ }
+
+ console.log("Ejemplo 5: Objeto con método que recibe parámetros")
+ myPet.sayHelloToMyPet("Tulio")
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_1.js b/weekly_mission_2/examples_1/example_1.js
new file mode 100644
index 000000000..0fe4342b3
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_1.js
@@ -0,0 +1,4 @@
+// Ejemplo 1: for Each para imprimir elementos de una lista
+const numbers = [1, 2, 3, 4, 5];
+console.log("Ejemplo 1: Imprimiendo los elementos de una lista")
+numbers.forEach(num => console.log(num))
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_10.js b/weekly_mission_2/examples_1/example_10.js
new file mode 100644
index 000000000..43d5cb36c
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_10.js
@@ -0,0 +1,4 @@
+// Ejemplo 10: uso de every nos ayuda a validar todos los elementos de una lista, si todos cumplen con la validación que indiques te regresa true, de lo contrario false
+const names10 = ['Explorer 1', 'Explorer 2', 'Explorer 3', 'Explorer 4']
+const areAllStr = names10.every((name) => typeof name === 'string') // every
+console.log("Ejemplo 10: Son todos los nombres string: " + areAllStr)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_11.js b/weekly_mission_2/examples_1/example_11.js
new file mode 100644
index 000000000..e239d07a4
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_11.js
@@ -0,0 +1,4 @@
+// Ejemplo 11: Uso de find para encontrar el primer elemento de una lista que cumpla con lo que indiques
+const ages = [24, 22, 19, 25, 32, 35, 18]
+const age = ages.find((age) => age < 20)
+console.log("Ejemplo 11: Primera edad menor a 20 es: "+ age)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_12.js b/weekly_mission_2/examples_1/example_12.js
new file mode 100644
index 000000000..81df9ffec
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_12.js
@@ -0,0 +1,11 @@
+// Ejemplo 12: Uso de find en una lista de objetos
+const scores12 = [
+ { name: 'A', score: 95 },
+ { name: 'M', score: 80 },
+ { name: 'E', score: 50 },
+ { name: 'M', score: 85 },
+ { name: 'J', score: 100 },
+ ]
+
+ const score_less_than_80 = scores12.find((user) => user.score > 80)
+ console.log("Ejemplo 12. Name score found:" + score_less_than_80.name)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_13.js b/weekly_mission_2/examples_1/example_13.js
new file mode 100644
index 000000000..a65e3a914
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_13.js
@@ -0,0 +1,4 @@
+// Ejemplo 13: Uso de findIndex, este método regresa la posición del primer elemento que cumpla con la validación que indiques.
+const names13 = ['Explorer 1', 'Explorer 2', 'Explorer 3']
+const result = names13.findIndex((name) => name.length > 7)
+console.log("Ejemplo 13: Primer elemento cuya palabra sea mayor a 7 esta en la posición "+ result)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_14.js b/weekly_mission_2/examples_1/example_14.js
new file mode 100644
index 000000000..ce7785a9e
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_14.js
@@ -0,0 +1,7 @@
+// Ejemplo 14: Uso de some, este método validará todos los elementos de la lista, y si alguno cumple con la validación indicada, regresará true, de lo contrario será false.
+
+// lista de elementos
+const bools = [true, true, false, true]
+// Uso de Some para ver si al menos uno de los elementos es false
+const areSomeTrue = bools.some((b) => b === false)
+console.log("Ejemplo 14: Alguno de los elementos en el array es false: " + areSomeTrue) //true
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_15.js b/weekly_mission_2/examples_1/example_15.js
new file mode 100644
index 000000000..a8c2d9174
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_15.js
@@ -0,0 +1,4 @@
+//Ejemplo 15: Uso de sort para ordenar elementos
+const products = ['Milk', 'Coffee', 'Sugar', 'Honey', 'Apple', 'Carrot']
+console.log("Ejemplo 15: Elementos ordernados usando SORT")
+console.log(products.sort())
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_16.js b/weekly_mission_2/examples_1/example_16.js
new file mode 100644
index 000000000..532e534a6
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_16.js
@@ -0,0 +1,16 @@
+// Ejemplo 16: Ordenando una lista de objetos
+const users = [
+ { name: 'A', age: 150 },
+ { name: 'B', age: 50 },
+ { name: 'C', age: 100 },
+ { name: 'D', age: 22 },
+ ]
+
+ users.sort((a, b) => { // podemos invocar una función
+ if (a.age < b.age) return -1
+ if (a.age > b.age) return 1
+ return 0
+ })
+
+ console.log("Ejemplo 16: Ordenando una lista de objetos por la edad")
+ console.log(users) // sorted ascending
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_2.js b/weekly_mission_2/examples_1/example_2.js
new file mode 100644
index 000000000..1813bfb8e
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_2.js
@@ -0,0 +1,6 @@
+// Ejemplo 2: for Each para calcular la suma de todos los elementos de una lista
+let sum = 0;
+const numbers2 = [1, 2, 3, 4, 5];
+numbers2.forEach(num => sum += num)
+console.log("Ejemplo 2: Cálculo de la suma de los elementos de la lista")
+console.log(sum)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_3.js b/weekly_mission_2/examples_1/example_3.js
new file mode 100644
index 000000000..5bac2ee78
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_3.js
@@ -0,0 +1,4 @@
+// Ejemplo 3: forEach para imprimir los países en letras mayúsculas
+const countries = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland']
+console.log("Ejemplo 5: Imprimiendo la lista de países en mayúsculas")
+countries.forEach((element) => console.log(element.toUpperCase()))
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_4.js b/weekly_mission_2/examples_1/example_4.js
new file mode 100644
index 000000000..e78a7be13
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_4.js
@@ -0,0 +1,10 @@
+// Ejemplo 4: Uso de map para recorrer los elementos de una lista y crear una nueva lista
+/*Arrow function and explicit return
+const modifiedArray = arr.map((element,index) => element);
+*/
+const numbers4 = [1, 2, 3, 4, 5]
+const numbersSquare = numbers4.map(function(num){ return num * num})
+// También puedes escribir la función como fat arrow
+//const numbersSquare = numbers4.map((num) => return num * num)
+console.log("Ejemplo 4: Imprimiendo la lista de elementos al cuadrado")
+console.log(numbersSquare)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_5.js b/weekly_mission_2/examples_1/example_5.js
new file mode 100644
index 000000000..ae3703ee4
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_5.js
@@ -0,0 +1,6 @@
+// Ejemplo 5: Uso de Map para convertir todos los nombres de una lista a minúsculas
+const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook']
+const namesToUpperCase = names.map((name) => name.toUpperCase())
+
+console.log("Ejemplo 5: Uso de Map para convertir todos los nombres de una lista a minúsculas")
+console.log(namesToUpperCase)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_6.js b/weekly_mission_2/examples_1/example_6.js
new file mode 100644
index 000000000..7c64367a3
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_6.js
@@ -0,0 +1,7 @@
+// Ejemplo 6: Uso de map para convertir todos los nombres de una lista a mayúsculas
+const countries6 = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland']
+const countriesFirstThreeLetters = countries6.map((country) =>
+ country.toUpperCase().slice(0, 3) // el método slice obtiene solo la longitud marcada del string
+)
+console.log("Ejemplo 6: Uso de map para convertir todos los nombres de una lista a mayúsculas")
+console.log(countriesFirstThreeLetters)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_7.js b/weekly_mission_2/examples_1/example_7.js
new file mode 100644
index 000000000..08f4bb5b8
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_7.js
@@ -0,0 +1,10 @@
+// Ejemplo 7: Uso de filter para filtrar una lista de elementos
+const countries7 = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland']
+const countriesContainingLand = countries7.filter((country) => // esta es una función
+ country.includes('land') // indicación para solo filtrar elementos que incluyan "land"
+)
+console.log("Ejemplo 7: Uso de filter para filtrar una lista de elementos")
+console.log(countriesContainingLand)
+const countriesEndsByia = countries7.filter((country) => country.endsWith('ia'))
+console.log("Ejemplo 7: Paises que terminan en i")
+console.log(countriesEndsByia)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_8.js b/weekly_mission_2/examples_1/example_8.js
new file mode 100644
index 000000000..09df8148d
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_8.js
@@ -0,0 +1,13 @@
+// Ejemplo 8: Filtrar una lista por condicional
+const scores = [
+ { name: 'A', score: 95 },
+ { name: 'L', score: 98 },
+ { name: 'M', score: 80 },
+ { name: 'E', score: 50 },
+ { name: 'M', score: 85 },
+ { name: 'J', score: 100 },
+ ]
+
+ const scoresGreaterEighty = scores.filter((score) => score.score > 80)
+ console.log("Ejemplo 8: Filtrando elementos por score")
+ console.log(scoresGreaterEighty)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_9.js b/weekly_mission_2/examples_1/example_9.js
new file mode 100644
index 000000000..d4cd697a9
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_9.js
@@ -0,0 +1,5 @@
+// Ejemplo 9: Uso del reduce
+const numbers9 = [1, 2, 3, 4, 5]
+const result_of_reduce = numbers9.reduce((acc, element) => acc + element, 0)
+console.log("Ejemplo 9: Uso de reduce para calcular la suma de los elementos de una lista")
+console.log(result_of_reduce)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_1.js b/weekly_mission_2/examples_2/example_1.js
new file mode 100644
index 000000000..9115c722d
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_1.js
@@ -0,0 +1,5 @@
+// Ejemplo 1: Crear una clase vacía
+class Person {
+}
+console.log("Ejemplo 1: Crear una clase vacía")
+console.log(Person) // [class Person]
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_10.js b/weekly_mission_2/examples_2/example_10.js
new file mode 100644
index 000000000..fba63bbe2
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_10.js
@@ -0,0 +1,32 @@
+// Ejemplo 10: Overrinding methods
+
+class Explorer{
+ constructor(name, username, mission){
+ this.name = name
+ this.username = username
+ this.mission = mission
+ }
+
+ getNameAndUsername(){
+ return `Explorer ${this. name}, username: ${this.username}`
+ }
+ }
+
+ class Viajero extends Explorer {
+ constructor(name, username, mission, cycle){
+ super(name, username, mission) // SUPER nos ayudará a llamar el constructor padre
+ this.cycle = cycle // Agregamos este atributo de la clase Viajero, es exclusiva de esta clase y no de la clase padre
+ }
+
+ getGeneralInfo(){
+ let nameAndUsername = this.getNameAndUsername() // llamamos el método de la clase padre
+ // nameAndUsername es una variable de esta función, no necesitas usar this para referenciarla.
+ return `${nameAndUsername}, Ciclo ${this.cycle}`
+ }
+ }
+
+ const viajero1 = new Viajero("Carlo", "LaunchX", "Node JS", "Abril 2022")
+ console.log("Ejemplo 10: Overrinding methods")
+ console.log(viajero1)
+ console.log(viajero1.getNameAndUsername()) // Método de la clase padre
+ console.log(viajero1.getGeneralInfo()) // Método de la clase hija
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_2.js b/weekly_mission_2/examples_2/example_2.js
new file mode 100644
index 000000000..1e9caf6a1
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_2.js
@@ -0,0 +1,6 @@
+// Ejemplo 2: Crear un objeto a partir de una clase
+class Pet {
+}
+const myPet1 = new Pet() // Puedo crear muchos objetos de la clase Pet
+console.log("Ejemplo 2: Crear un objeto a partir de una clase")
+console.log(myPet1) // un objeto de la clase Pet
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_3.js b/weekly_mission_2/examples_2/example_3.js
new file mode 100644
index 000000000..9177e350a
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_3.js
@@ -0,0 +1,14 @@
+// Ejemplo 3: Instanciar un objeto con atributos
+class Student {
+ // El constructor nos permite instanciar un objeto y asignarle atributos, this nos ayuda a realizar esto.
+ constructor(name, age, subjects){
+ this.name = name
+ this.age = age
+ this.subjects = subjects
+ }
+}
+
+// Crear un objeto de la clase Student (esto se le llama instanciación)
+const carloStudent = new Student("Carlo", 12, ["NodeJs", "Python"])
+console.log("Ejemplo 3: Instanciar un objeto con atributos")
+console.log(carloStudent)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_4.js b/weekly_mission_2/examples_2/example_4.js
new file mode 100644
index 000000000..8436ce119
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_4.js
@@ -0,0 +1,16 @@
+// Ejemplo 4: Métodos en los objetos
+class Repository {
+ constructor(name, author, language, stars){
+ this.name = name
+ this.author = author
+ this.language = language
+ this.stars = stars
+ }
+
+ getInfo(){ // es una función que ejecutará cualquier objeto instanciado de esta clase
+ return `Repository ${this.name} has ${this.stars} stars`
+ }
+ }
+ console.log("Ejemplo 4: Métodos en los objetos")
+ const myRepo = new Repository("LaunchX", "carlogilmar", "js", 100)
+ console.log(myRepo.getInfo())
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_5.js b/weekly_mission_2/examples_2/example_5.js
new file mode 100644
index 000000000..bc3f4c265
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_5.js
@@ -0,0 +1,22 @@
+// Ejemplo 5: Atributos con valores por default
+class PullRequest {
+ constructor(repo, title, lines_changed){
+ this.repo = repo
+ this.title = title
+ this.lines_changed = lines_changed
+ this.status = "OPEN"
+ this.dateCreated = new Date() // esto guardará la fecha actual en que se instancia el objeto
+ }
+
+ getInfo(){
+ return `This PR is in the repo: ${this.repo} (status: ${this.status}) and was created on ${this.dateCreated}`
+ }
+ }
+
+ console.log("Ejemplo 5: Atributos con valores por default")
+ const myPR1 = new PullRequest("LaunchX", "Mi Primer PR", 100)
+ console.log(myPR1.getInfo())
+
+ // Puedes instanciar n cantidad de objetos de la misma clase
+ const myPR2 = new PullRequest("LaunchX", "Mi segundo PR", 99)
+ console.log(myPR2.getInfo())
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_6.js b/weekly_mission_2/examples_2/example_6.js
new file mode 100644
index 000000000..10e9d528b
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_6.js
@@ -0,0 +1,20 @@
+// Ejemplo 6: Getters para acceder a los atributos del objeto
+
+class Ajolonauta {
+ constructor(name, age, stack){
+ this.name = name
+ this.age = age
+ this.stack = stack
+ this.exercises_completed = 0
+ this.exercises_todo = 99
+ }
+
+ // Podemos acceder a los atributos de esta clase
+ get getExercisesCompleted() {
+ return this.exercises_completed
+ }
+ }
+
+ console.log("Ejemplo 6: Getters para acceder a los atributos del objeto")
+ const woopa = new Ajolonauta("Woopa", 1, [])
+ console.log(woopa.getExercisesCompleted)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_7.js b/weekly_mission_2/examples_2/example_7.js
new file mode 100644
index 000000000..c082a3382
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_7.js
@@ -0,0 +1,38 @@
+// Ejemplo 7: Setters para modificar los atributos del objeto
+class MissionCommander {
+ constructor(name, mission){
+ this.name = name
+ this.mission = mission
+ this.students = 0
+ this.lives = 0
+ }
+
+ get getStudents(){
+ return this.students
+ }
+
+ get getLives(){
+ return this.lives
+ }
+
+ set setStudents(students){
+ this.students = students
+ }
+
+ set setLives(lives){
+ this.lives = lives
+ }
+ }
+
+ console.log("Ejemplo 7: Setters para modificar los atributos del objeto")
+ const missionCommanderNode = new MissionCommander("Carlo", "NodeJS")
+
+ console.log(missionCommanderNode.getStudents) // 0 por default
+ console.log(missionCommanderNode.getLives)// 0 por default
+
+ // actualizamos los atributos por medio de los setters
+ missionCommanderNode.setStudents = 100
+ missionCommanderNode.setLives = 3
+
+ console.log(missionCommanderNode.getStudents) // 0 por default
+ console.log(missionCommanderNode.getLives)// 0 por default
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_8.js b/weekly_mission_2/examples_2/example_8.js
new file mode 100644
index 000000000..75ae3a362
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_8.js
@@ -0,0 +1,17 @@
+// Ejemplo 8: Métodos static nos ayudan a escribir métodos en una clase que podemos usar sin necesidad de instanciar algún objeto
+class Toolbox {
+ static getMostUsefulTools(){
+ return ["Command line", "git", "Text Editor"]
+ }
+ }
+
+ console.log("Ejemplo 8: Métodos static")
+ // Puedo llamar el método static directamente con el nombre de la clase
+ console.log(Toolbox.getMostUsefulTools())
+ // Si intentamos instanciar un objeto, no podremos llamar este método static
+ //const toolbox = new Toolbox()
+ //console.log(toolbox.getMostUsefulTools()) // is not a function
+
+ /*
+ HERENCIA: Nos permite relacionar clases entre sí y rehusar sus componentes
+ */
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_9.js b/weekly_mission_2/examples_2/example_9.js
new file mode 100644
index 000000000..e41979841
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_9.js
@@ -0,0 +1,25 @@
+// Ejemplo 9: Herencia entre dos clases
+class Developer {
+ constructor(name, mainLang, stack){
+ this.name = name
+ this.mainLang = mainLang
+ this.stack = stack
+ }
+
+ get getName() {
+ return this.name
+ }
+ }
+
+ console.log("Ejemplo 9: Herencia entre dos clases")
+ const carloDev = new Developer("Carlo", "js", ["elixir", "groovy", "lisp"])
+ console.log(carloDev)
+
+ // Se usa la palabra extends para indicar que heredarás las propiedades de la clase Padre (Developer) en la clase definida.
+ // Podemos definir una clase vacía y rehusar todos los componentes de la clase padre
+ class LaunchXStudent extends Developer{
+ }
+
+ const carloLaunchXDev = new LaunchXStudent("Carlo", "js", ["elixir", "groovy", "lisp"])
+ console.log(carloLaunchXDev)
+ console.log(carloLaunchXDev.getName) // getter de la clase padre rehusada en la clase hija
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/explorer.js b/weekly_mission_2/examples_3/explorer.js
new file mode 100644
index 000000000..4e6b62ac5
--- /dev/null
+++ b/weekly_mission_2/examples_3/explorer.js
@@ -0,0 +1,11 @@
+export default class Explorer{
+ constructor(name, username, mission){
+ this.name = name
+ this.username = username
+ this.mission = mission
+ }
+
+ getNameAndUsername(){
+ return `Explorer ${this. name}, username: ${this.username}`
+ }
+ }
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/main.js b/weekly_mission_2/examples_3/main.js
new file mode 100644
index 000000000..abf946d64
--- /dev/null
+++ b/weekly_mission_2/examples_3/main.js
@@ -0,0 +1,10 @@
+import Viajero from './viajero.js'
+
+/*
+Este es un ejemplo de como modularizar clases y usarlas mediante módulos.
+*/
+
+const viajero1 = new Viajero("Carlo", "LaunchX", "Node JS", "Abril 2022")
+console.log(viajero1)
+console.log(viajero1.getNameAndUsername()) // Método de la clase padre
+console.log(viajero1.getGeneralInfo()) // Método de la clase hija
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/package.json b/weekly_mission_2/examples_3/package.json
new file mode 100644
index 000000000..128b89b44
--- /dev/null
+++ b/weekly_mission_2/examples_3/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "First_project",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "type": "module",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+ }
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/viajero.js b/weekly_mission_2/examples_3/viajero.js
new file mode 100644
index 000000000..1e1a7e46b
--- /dev/null
+++ b/weekly_mission_2/examples_3/viajero.js
@@ -0,0 +1,13 @@
+import Explorer from './explorer.js'
+
+export default class Viajero extends Explorer {
+ constructor(name, username, mission, cycle){
+ super(name, username, mission)
+ this.cycle = cycle
+ }
+
+ getGeneralInfo(){
+ let nameAndUsername = this.getNameAndUsername()
+ return `${nameAndUsername}, Ciclo ${this.cycle}`
+ }
+}
\ No newline at end of file
From bf7a7d5889e9d3cd48b5d2e9ece9f89f515e216c Mon Sep 17 00:00:00 2001
From: RMEstefania <99098615+RMEstefania@users.noreply.github.com>
Date: Tue, 19 Apr 2022 20:11:24 -0500
Subject: [PATCH 08/16] Agregando ejemplos
---
weekly_mission_1/example10/pokemon.js | 11 +
weekly_mission_1/example9/main.js | 2 +-
weekly_mission_1/example9/pokemon.js | 20 +-
weekly_mission_2/examples_0/example_1.js | 6 +
weekly_mission_2/examples_0/example_2.js | 7 +
weekly_mission_2/examples_0/example_3.js | 19 +
weekly_mission_2/examples_0/example_4.js | 12 +
weekly_mission_2/examples_0/example_5.js | 10 +
weekly_mission_2/examples_1/example_1.js | 4 +
weekly_mission_2/examples_1/example_10.js | 4 +
weekly_mission_2/examples_1/example_11.js | 4 +
weekly_mission_2/examples_1/example_12.js | 11 +
weekly_mission_2/examples_1/example_13.js | 4 +
weekly_mission_2/examples_1/example_14.js | 7 +
weekly_mission_2/examples_1/example_15.js | 4 +
weekly_mission_2/examples_1/example_16.js | 16 +
weekly_mission_2/examples_1/example_2.js | 6 +
weekly_mission_2/examples_1/example_3.js | 4 +
weekly_mission_2/examples_1/example_4.js | 10 +
weekly_mission_2/examples_1/example_5.js | 6 +
weekly_mission_2/examples_1/example_6.js | 7 +
weekly_mission_2/examples_1/example_7.js | 10 +
weekly_mission_2/examples_1/example_8.js | 13 +
weekly_mission_2/examples_1/example_9.js | 5 +
weekly_mission_2/examples_2/example_1.js | 5 +
weekly_mission_2/examples_2/example_10.js | 32 +
weekly_mission_2/examples_2/example_2.js | 6 +
weekly_mission_2/examples_2/example_3.js | 14 +
weekly_mission_2/examples_2/example_4.js | 16 +
weekly_mission_2/examples_2/example_5.js | 22 +
weekly_mission_2/examples_2/example_6.js | 20 +
weekly_mission_2/examples_2/example_7.js | 38 +
weekly_mission_2/examples_2/example_8.js | 17 +
weekly_mission_2/examples_2/example_9.js | 25 +
weekly_mission_2/examples_3/explorer.js | 11 +
weekly_mission_2/examples_3/main.js | 10 +
weekly_mission_2/examples_3/package.json | 13 +
weekly_mission_2/examples_3/viajero.js | 13 +
.../examples_4/node_modules/.bin/acorn | 12 +
.../examples_4/node_modules/.bin/acorn.cmd | 17 +
.../examples_4/node_modules/.bin/acorn.ps1 | 28 +
.../examples_4/node_modules/.bin/browserslist | 12 +
.../node_modules/.bin/browserslist.cmd | 17 +
.../node_modules/.bin/browserslist.ps1 | 28 +
.../examples_4/node_modules/.bin/escodegen | 12 +
.../node_modules/.bin/escodegen.cmd | 17 +
.../node_modules/.bin/escodegen.ps1 | 28 +
.../examples_4/node_modules/.bin/esgenerate | 12 +
.../node_modules/.bin/esgenerate.cmd | 17 +
.../node_modules/.bin/esgenerate.ps1 | 28 +
.../examples_4/node_modules/.bin/esparse | 12 +
.../examples_4/node_modules/.bin/esparse.cmd | 17 +
.../examples_4/node_modules/.bin/esparse.ps1 | 28 +
.../examples_4/node_modules/.bin/esvalidate | 12 +
.../node_modules/.bin/esvalidate.cmd | 17 +
.../node_modules/.bin/esvalidate.ps1 | 28 +
.../node_modules/.bin/import-local-fixture | 12 +
.../.bin/import-local-fixture.cmd | 17 +
.../.bin/import-local-fixture.ps1 | 28 +
.../examples_4/node_modules/.bin/jest | 12 +
.../examples_4/node_modules/.bin/jest.cmd | 17 +
.../examples_4/node_modules/.bin/jest.ps1 | 28 +
.../examples_4/node_modules/.bin/js-yaml | 12 +
.../examples_4/node_modules/.bin/js-yaml.cmd | 17 +
.../examples_4/node_modules/.bin/js-yaml.ps1 | 28 +
.../examples_4/node_modules/.bin/jsesc | 12 +
.../examples_4/node_modules/.bin/jsesc.cmd | 17 +
.../examples_4/node_modules/.bin/jsesc.ps1 | 28 +
.../examples_4/node_modules/.bin/json5 | 12 +
.../examples_4/node_modules/.bin/json5.cmd | 17 +
.../examples_4/node_modules/.bin/json5.ps1 | 28 +
.../examples_4/node_modules/.bin/node-which | 12 +
.../node_modules/.bin/node-which.cmd | 17 +
.../node_modules/.bin/node-which.ps1 | 28 +
.../examples_4/node_modules/.bin/parser | 12 +
.../examples_4/node_modules/.bin/parser.cmd | 17 +
.../examples_4/node_modules/.bin/parser.ps1 | 28 +
.../examples_4/node_modules/.bin/resolve | 12 +
.../examples_4/node_modules/.bin/resolve.cmd | 17 +
.../examples_4/node_modules/.bin/resolve.ps1 | 28 +
.../examples_4/node_modules/.bin/rimraf | 12 +
.../examples_4/node_modules/.bin/rimraf.cmd | 17 +
.../examples_4/node_modules/.bin/rimraf.ps1 | 28 +
.../examples_4/node_modules/.bin/semver | 12 +
.../examples_4/node_modules/.bin/semver.cmd | 17 +
.../examples_4/node_modules/.bin/semver.ps1 | 28 +
.../node_modules/.package-lock.json | 3955 ++++
.../@ampproject/remapping/LICENSE | 202 +
.../@ampproject/remapping/README.md | 218 +
.../@ampproject/remapping/dist/remapping.mjs | 276 +
.../remapping/dist/remapping.mjs.map | 1 +
.../remapping/dist/remapping.umd.js | 282 +
.../remapping/dist/remapping.umd.js.map | 1 +
.../dist/types/build-source-map-tree.d.ts | 14 +
.../dist/types/fast-string-array.d.ts | 19 +
.../remapping/dist/types/original-source.d.ts | 15 +
.../remapping/dist/types/remapping.d.ts | 19 +
.../remapping/dist/types/source-map-tree.d.ts | 27 +
.../remapping/dist/types/source-map.d.ts | 17 +
.../remapping/dist/types/types.d.ts | 40 +
.../@ampproject/remapping/package.json | 62 +
.../node_modules/@babel/code-frame/LICENSE | 22 +
.../node_modules/@babel/code-frame/README.md | 19 +
.../@babel/code-frame/lib/index.js | 163 +
.../@babel/code-frame/package.json | 29 +
.../node_modules/@babel/compat-data/LICENSE | 22 +
.../node_modules/@babel/compat-data/README.md | 19 +
.../@babel/compat-data/corejs2-built-ins.js | 1 +
.../compat-data/corejs3-shipped-proposals.js | 1 +
.../compat-data/data/corejs2-built-ins.json | 1789 ++
.../data/corejs3-shipped-proposals.json | 5 +
.../compat-data/data/native-modules.json | 18 +
.../compat-data/data/overlapping-plugins.json | 22 +
.../compat-data/data/plugin-bugfixes.json | 157 +
.../@babel/compat-data/data/plugins.json | 477 +
.../@babel/compat-data/native-modules.js | 1 +
.../@babel/compat-data/overlapping-plugins.js | 1 +
.../@babel/compat-data/package.json | 39 +
.../@babel/compat-data/plugin-bugfixes.js | 1 +
.../@babel/compat-data/plugins.js | 1 +
.../node_modules/@babel/core/LICENSE | 22 +
.../node_modules/@babel/core/README.md | 19 +
.../@babel/core/lib/config/cache-contexts.js | 0
.../@babel/core/lib/config/caching.js | 325 +
.../@babel/core/lib/config/config-chain.js | 564 +
.../core/lib/config/config-descriptors.js | 244 +
.../core/lib/config/files/configuration.js | 358 +
.../lib/config/files/import-meta-resolve.js | 41 +
.../@babel/core/lib/config/files/import.js | 10 +
.../core/lib/config/files/index-browser.js | 67 +
.../@babel/core/lib/config/files/index.js | 86 +
.../core/lib/config/files/module-types.js | 108 +
.../@babel/core/lib/config/files/package.js | 76 +
.../@babel/core/lib/config/files/plugins.js | 273 +
.../@babel/core/lib/config/files/types.js | 0
.../@babel/core/lib/config/files/utils.js | 44 +
.../@babel/core/lib/config/full.js | 378 +
.../core/lib/config/helpers/config-api.js | 108 +
.../core/lib/config/helpers/deep-array.js | 24 +
.../core/lib/config/helpers/environment.js | 10 +
.../@babel/core/lib/config/index.js | 75 +
.../@babel/core/lib/config/item.js | 76 +
.../@babel/core/lib/config/partial.js | 197 +
.../core/lib/config/pattern-to-regex.js | 44 +
.../@babel/core/lib/config/plugin.js | 34 +
.../@babel/core/lib/config/printer.js | 139 +
.../lib/config/resolve-targets-browser.js | 42 +
.../@babel/core/lib/config/resolve-targets.js | 68 +
.../@babel/core/lib/config/util.js | 31 +
.../config/validation/option-assertions.js | 352 +
.../core/lib/config/validation/options.js | 210 +
.../core/lib/config/validation/plugins.js | 71 +
.../core/lib/config/validation/removed.js | 66 +
.../@babel/core/lib/gensync-utils/async.js | 94 +
.../@babel/core/lib/gensync-utils/fs.js | 40 +
.../node_modules/@babel/core/lib/index.js | 266 +
.../node_modules/@babel/core/lib/parse.js | 48 +
.../@babel/core/lib/parser/index.js | 95 +
.../lib/parser/util/missing-plugin-helper.js | 323 +
.../core/lib/tools/build-external-helpers.js | 164 +
.../@babel/core/lib/transform-ast.js | 46 +
.../@babel/core/lib/transform-file-browser.js | 26 +
.../@babel/core/lib/transform-file.js | 41 +
.../node_modules/@babel/core/lib/transform.js | 42 +
.../lib/transformation/block-hoist-plugin.js | 94 +
.../core/lib/transformation/file/file.js | 254 +
.../core/lib/transformation/file/generate.js | 90 +
.../core/lib/transformation/file/merge-map.js | 43 +
.../@babel/core/lib/transformation/index.js | 127 +
.../core/lib/transformation/normalize-file.js | 167 +
.../core/lib/transformation/normalize-opts.js | 62 +
.../core/lib/transformation/plugin-pass.js | 54 +
.../transformation/util/clone-deep-browser.js | 25 +
.../lib/transformation/util/clone-deep.js | 26 +
.../core/lib/vendor/import-meta-resolve.js | 3312 +++
.../node_modules/@babel/core/package.json | 76 +
.../core/src/config/files/index-browser.ts | 109 +
.../@babel/core/src/config/files/index.ts | 30 +
.../src/config/resolve-targets-browser.ts | 33 +
.../@babel/core/src/config/resolve-targets.ts | 49 +
.../@babel/core/src/transform-file-browser.ts | 27 +
.../@babel/core/src/transform-file.ts | 40 +
.../transformation/util/clone-deep-browser.ts | 19 +
.../src/transformation/util/clone-deep.ts | 9 +
.../node_modules/@babel/generator/LICENSE | 22 +
.../node_modules/@babel/generator/README.md | 19 +
.../@babel/generator/lib/buffer.js | 265 +
.../@babel/generator/lib/generators/base.js | 96 +
.../generator/lib/generators/classes.js | 213 +
.../generator/lib/generators/expressions.js | 354 +
.../@babel/generator/lib/generators/flow.js | 795 +
.../@babel/generator/lib/generators/index.js | 148 +
.../@babel/generator/lib/generators/jsx.js | 145 +
.../generator/lib/generators/methods.js | 150 +
.../generator/lib/generators/modules.js | 244 +
.../generator/lib/generators/statements.js | 331 +
.../lib/generators/template-literals.js | 33 +
.../@babel/generator/lib/generators/types.js | 276 +
.../generator/lib/generators/typescript.js | 813 +
.../@babel/generator/lib/index.js | 97 +
.../@babel/generator/lib/node/index.js | 111 +
.../@babel/generator/lib/node/parentheses.js | 342 +
.../@babel/generator/lib/node/whitespace.js | 214 +
.../@babel/generator/lib/printer.js | 540 +
.../@babel/generator/lib/source-map.js | 78 +
.../node_modules/source-map/CHANGELOG.md | 301 +
.../generator/node_modules/source-map/LICENSE | 28 +
.../node_modules/source-map/README.md | 729 +
.../source-map/dist/source-map.debug.js | 3091 +++
.../source-map/dist/source-map.js | 3090 +++
.../source-map/dist/source-map.min.js | 2 +
.../source-map/dist/source-map.min.js.map | 1 +
.../node_modules/source-map/lib/array-set.js | 121 +
.../node_modules/source-map/lib/base64-vlq.js | 140 +
.../node_modules/source-map/lib/base64.js | 67 +
.../source-map/lib/binary-search.js | 111 +
.../source-map/lib/mapping-list.js | 79 +
.../node_modules/source-map/lib/quick-sort.js | 114 +
.../source-map/lib/source-map-consumer.js | 1082 +
.../source-map/lib/source-map-generator.js | 416 +
.../source-map/lib/source-node.js | 413 +
.../node_modules/source-map/lib/util.js | 417 +
.../node_modules/source-map/package.json | 72 +
.../node_modules/source-map/source-map.js | 8 +
.../@babel/generator/package.json | 37 +
.../@babel/helper-compilation-targets/LICENSE | 22 +
.../helper-compilation-targets/README.md | 19 +
.../helper-compilation-targets/lib/debug.js | 33 +
.../lib/filter-items.js | 88 +
.../helper-compilation-targets/lib/index.js | 255 +
.../helper-compilation-targets/lib/options.js | 21 +
.../helper-compilation-targets/lib/pretty.js | 47 +
.../helper-compilation-targets/lib/targets.js | 27 +
.../helper-compilation-targets/lib/types.js | 0
.../helper-compilation-targets/lib/utils.js | 69 +
.../helper-compilation-targets/package.json | 41 +
.../@babel/helper-environment-visitor/LICENSE | 22 +
.../helper-environment-visitor/README.md | 19 +
.../helper-environment-visitor/lib/index.js | 38 +
.../helper-environment-visitor/package.json | 30 +
.../@babel/helper-function-name/LICENSE | 22 +
.../@babel/helper-function-name/README.md | 19 +
.../@babel/helper-function-name/lib/index.js | 198 +
.../@babel/helper-function-name/package.json | 24 +
.../@babel/helper-hoist-variables/LICENSE | 22 +
.../@babel/helper-hoist-variables/README.md | 19 +
.../helper-hoist-variables/lib/index.js | 58 +
.../helper-hoist-variables/package.json | 27 +
.../@babel/helper-module-imports/LICENSE | 22 +
.../@babel/helper-module-imports/README.md | 19 +
.../lib/import-builder.js | 162 +
.../lib/import-injector.js | 290 +
.../@babel/helper-module-imports/lib/index.js | 41 +
.../helper-module-imports/lib/is-module.js | 18 +
.../@babel/helper-module-imports/package.json | 27 +
.../@babel/helper-module-transforms/LICENSE | 22 +
.../@babel/helper-module-transforms/README.md | 19 +
.../lib/get-module-name.js | 54 +
.../helper-module-transforms/lib/index.js | 422 +
.../lib/normalize-and-load-metadata.js | 398 +
.../lib/rewrite-live-references.js | 401 +
.../lib/rewrite-this.js | 30 +
.../helper-module-transforms/package.json | 30 +
.../@babel/helper-plugin-utils/LICENSE | 22 +
.../@babel/helper-plugin-utils/README.md | 19 +
.../@babel/helper-plugin-utils/lib/index.js | 90 +
.../@babel/helper-plugin-utils/package.json | 20 +
.../@babel/helper-simple-access/LICENSE | 22 +
.../@babel/helper-simple-access/README.md | 19 +
.../@babel/helper-simple-access/lib/index.js | 100 +
.../@babel/helper-simple-access/package.json | 26 +
.../helper-split-export-declaration/LICENSE | 22 +
.../helper-split-export-declaration/README.md | 19 +
.../lib/index.js | 67 +
.../package.json | 23 +
.../helper-validator-identifier/LICENSE | 22 +
.../helper-validator-identifier/README.md | 19 +
.../lib/identifier.js | 84 +
.../helper-validator-identifier/lib/index.js | 57 +
.../lib/keyword.js | 38 +
.../helper-validator-identifier/package.json | 27 +
.../scripts/generate-identifier-regex.js | 75 +
.../@babel/helper-validator-option/LICENSE | 22 +
.../@babel/helper-validator-option/README.md | 19 +
.../lib/find-suggestion.js | 45 +
.../helper-validator-option/lib/index.js | 21 +
.../helper-validator-option/lib/validator.js | 58 +
.../helper-validator-option/package.json | 23 +
.../node_modules/@babel/helpers/LICENSE | 22 +
.../node_modules/@babel/helpers/README.md | 19 +
.../@babel/helpers/lib/helpers-generated.js | 26 +
.../@babel/helpers/lib/helpers.js | 1959 ++
.../@babel/helpers/lib/helpers/applyDecs.js | 530 +
.../helpers/lib/helpers/asyncIterator.js | 81 +
.../@babel/helpers/lib/helpers/jsx.js | 53 +
.../helpers/lib/helpers/objectSpread2.js | 46 +
.../@babel/helpers/lib/helpers/typeof.js | 22 +
.../@babel/helpers/lib/helpers/wrapRegExp.js | 73 +
.../node_modules/@babel/helpers/lib/index.js | 290 +
.../node_modules/@babel/helpers/package.json | 29 +
.../helpers/scripts/generate-helpers.js | 64 +
.../@babel/helpers/scripts/package.json | 1 +
.../node_modules/@babel/highlight/LICENSE | 22 +
.../node_modules/@babel/highlight/README.md | 19 +
.../@babel/highlight/lib/index.js | 116 +
.../node_modules/ansi-styles/index.js | 165 +
.../node_modules/ansi-styles/license | 9 +
.../node_modules/ansi-styles/package.json | 56 +
.../node_modules/ansi-styles/readme.md | 147 +
.../highlight/node_modules/chalk/index.js | 228 +
.../node_modules/chalk/index.js.flow | 93 +
.../highlight/node_modules/chalk/license | 9 +
.../highlight/node_modules/chalk/package.json | 71 +
.../highlight/node_modules/chalk/readme.md | 314 +
.../highlight/node_modules/chalk/templates.js | 128 +
.../node_modules/chalk/types/index.d.ts | 97 +
.../node_modules/color-convert/CHANGELOG.md | 54 +
.../node_modules/color-convert/LICENSE | 21 +
.../node_modules/color-convert/README.md | 68 +
.../node_modules/color-convert/conversions.js | 868 +
.../node_modules/color-convert/index.js | 78 +
.../node_modules/color-convert/package.json | 46 +
.../node_modules/color-convert/route.js | 97 +
.../node_modules/color-name/.eslintrc.json | 43 +
.../node_modules/color-name/.npmignore | 107 +
.../highlight/node_modules/color-name/LICENSE | 8 +
.../node_modules/color-name/README.md | 11 +
.../node_modules/color-name/index.js | 152 +
.../node_modules/color-name/package.json | 25 +
.../highlight/node_modules/color-name/test.js | 7 +
.../escape-string-regexp/index.js | 11 +
.../node_modules/escape-string-regexp/license | 21 +
.../escape-string-regexp/package.json | 41 +
.../escape-string-regexp/readme.md | 27 +
.../highlight/node_modules/has-flag/index.js | 8 +
.../highlight/node_modules/has-flag/license | 9 +
.../node_modules/has-flag/package.json | 44 +
.../highlight/node_modules/has-flag/readme.md | 70 +
.../node_modules/supports-color/browser.js | 5 +
.../node_modules/supports-color/index.js | 131 +
.../node_modules/supports-color/license | 9 +
.../node_modules/supports-color/package.json | 53 +
.../node_modules/supports-color/readme.md | 66 +
.../@babel/highlight/package.json | 29 +
.../node_modules/@babel/parser/CHANGELOG.md | 1073 +
.../node_modules/@babel/parser/LICENSE | 19 +
.../node_modules/@babel/parser/README.md | 19 +
.../@babel/parser/bin/babel-parser.js | 15 +
.../node_modules/@babel/parser/lib/index.js | 16512 +++++++++++++++
.../@babel/parser/lib/index.js.map | 1 +
.../node_modules/@babel/parser/package.json | 43 +
.../@babel/parser/typings/babel-parser.d.ts | 206 +
.../plugin-syntax-async-generators/LICENSE | 22 +
.../plugin-syntax-async-generators/README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 23 +
.../@babel/plugin-syntax-bigint/LICENSE | 22 +
.../@babel/plugin-syntax-bigint/README.md | 19 +
.../@babel/plugin-syntax-bigint/lib/index.js | 22 +
.../@babel/plugin-syntax-bigint/package.json | 23 +
.../plugin-syntax-class-properties/LICENSE | 22 +
.../plugin-syntax-class-properties/README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 28 +
.../@babel/plugin-syntax-import-meta/LICENSE | 22 +
.../plugin-syntax-import-meta/README.md | 19 +
.../plugin-syntax-import-meta/lib/index.js | 22 +
.../plugin-syntax-import-meta/package.json | 28 +
.../@babel/plugin-syntax-json-strings/LICENSE | 22 +
.../plugin-syntax-json-strings/README.md | 19 +
.../plugin-syntax-json-strings/lib/index.js | 22 +
.../plugin-syntax-json-strings/package.json | 23 +
.../LICENSE | 22 +
.../README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 28 +
.../LICENSE | 22 +
.../README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 23 +
.../plugin-syntax-numeric-separator/LICENSE | 22 +
.../plugin-syntax-numeric-separator/README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 28 +
.../plugin-syntax-object-rest-spread/LICENSE | 22 +
.../README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 23 +
.../LICENSE | 22 +
.../README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 23 +
.../plugin-syntax-optional-chaining/LICENSE | 22 +
.../plugin-syntax-optional-chaining/README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 23 +
.../plugin-syntax-top-level-await/LICENSE | 22 +
.../plugin-syntax-top-level-await/README.md | 19 +
.../lib/index.js | 22 +
.../package.json | 32 +
.../@babel/plugin-syntax-typescript/LICENSE | 22 +
.../@babel/plugin-syntax-typescript/README.md | 19 +
.../plugin-syntax-typescript/lib/index.js | 54 +
.../plugin-syntax-typescript/package.json | 34 +
.../disallow-jsx-ambiguity/options.json | 3 +
.../type-assertion/input.ts | 1 +
.../type-assertion/options.json | 3 +
.../type-parameter-unambiguous/input.ts | 2 +
.../type-parameter-unambiguous/output.js | 3 +
.../type-parameter/input.ts | 2 +
.../type-parameter/options.json | 3 +
.../plugin-syntax-typescript/test/index.js | 3 +
.../test/package.json | 1 +
.../node_modules/@babel/template/LICENSE | 22 +
.../node_modules/@babel/template/README.md | 19 +
.../@babel/template/lib/builder.js | 81 +
.../@babel/template/lib/formatters.js | 71 +
.../node_modules/@babel/template/lib/index.js | 32 +
.../@babel/template/lib/literal.js | 80 +
.../@babel/template/lib/options.js | 83 +
.../node_modules/@babel/template/lib/parse.js | 188 +
.../@babel/template/lib/populate.js | 135 +
.../@babel/template/lib/string.js | 22 +
.../node_modules/@babel/template/package.json | 26 +
.../node_modules/@babel/traverse/LICENSE | 22 +
.../node_modules/@babel/traverse/README.md | 19 +
.../node_modules/@babel/traverse/lib/cache.js | 26 +
.../@babel/traverse/lib/context.js | 137 +
.../node_modules/@babel/traverse/lib/hub.js | 23 +
.../node_modules/@babel/traverse/lib/index.js | 111 +
.../@babel/traverse/lib/path/ancestry.js | 180 +
.../@babel/traverse/lib/path/comments.js | 42 +
.../@babel/traverse/lib/path/context.js | 263 +
.../@babel/traverse/lib/path/conversion.js | 531 +
.../@babel/traverse/lib/path/evaluation.js | 401 +
.../@babel/traverse/lib/path/family.js | 407 +
.../traverse/lib/path/generated/asserts.js | 5 +
.../traverse/lib/path/generated/validators.js | 5 +
.../lib/path/generated/virtual-types.js | 3 +
.../@babel/traverse/lib/path/index.js | 257 +
.../traverse/lib/path/inference/index.js | 156 +
.../lib/path/inference/inferer-reference.js | 206 +
.../traverse/lib/path/inference/inferers.js | 261 +
.../@babel/traverse/lib/path/introspection.js | 436 +
.../@babel/traverse/lib/path/lib/hoister.js | 206 +
.../traverse/lib/path/lib/removal-hooks.js | 38 +
.../traverse/lib/path/lib/virtual-types.js | 230 +
.../@babel/traverse/lib/path/modification.js | 269 +
.../@babel/traverse/lib/path/removal.js | 73 +
.../@babel/traverse/lib/path/replacement.js | 260 +
.../@babel/traverse/lib/scope/binding.js | 75 +
.../@babel/traverse/lib/scope/index.js | 1018 +
.../@babel/traverse/lib/scope/lib/renamer.js | 146 +
.../@babel/traverse/lib/traverse-node.js | 30 +
.../node_modules/@babel/traverse/lib/types.js | 5 +
.../@babel/traverse/lib/visitors.js | 242 +
.../node_modules/@babel/traverse/package.json | 36 +
.../traverse/scripts/generators/asserts.js | 25 +
.../traverse/scripts/generators/validators.js | 42 +
.../scripts/generators/virtual-types.js | 24 +
.../@babel/traverse/scripts/package.json | 1 +
.../node_modules/@babel/types/LICENSE | 22 +
.../node_modules/@babel/types/README.md | 19 +
.../@babel/types/lib/asserts/assertNode.js | 17 +
.../types/lib/asserts/generated/index.js | 1517 ++
.../types/lib/ast-types/generated/index.js | 0
.../@babel/types/lib/builders/builder.js | 43 +
.../lib/builders/flow/createFlowUnionType.js | 20 +
.../flow/createTypeAnnotationBasedOnTypeof.js | 41 +
.../types/lib/builders/generated/index.js | 1266 ++
.../types/lib/builders/generated/uppercase.js | 1513 ++
.../types/lib/builders/react/buildChildren.js | 29 +
.../builders/typescript/createTSUnionType.js | 21 +
.../@babel/types/lib/clone/clone.js | 12 +
.../@babel/types/lib/clone/cloneDeep.js | 12 +
.../types/lib/clone/cloneDeepWithoutLoc.js | 12 +
.../@babel/types/lib/clone/cloneNode.js | 114 +
.../@babel/types/lib/clone/cloneWithoutLoc.js | 12 +
.../@babel/types/lib/comments/addComment.js | 15 +
.../@babel/types/lib/comments/addComments.js | 23 +
.../lib/comments/inheritInnerComments.js | 12 +
.../lib/comments/inheritLeadingComments.js | 12 +
.../lib/comments/inheritTrailingComments.js | 12 +
.../types/lib/comments/inheritsComments.js | 19 +
.../types/lib/comments/removeComments.js | 16 +
.../types/lib/constants/generated/index.js | 107 +
.../@babel/types/lib/constants/index.js | 49 +
.../@babel/types/lib/converters/Scope.js | 0
.../types/lib/converters/ensureBlock.js | 12 +
.../converters/gatherSequenceExpressions.js | 75 +
.../lib/converters/toBindingIdentifierName.js | 14 +
.../@babel/types/lib/converters/toBlock.js | 34 +
.../types/lib/converters/toComputedKey.js | 15 +
.../types/lib/converters/toExpression.js | 33 +
.../types/lib/converters/toIdentifier.js | 30 +
.../@babel/types/lib/converters/toKeyAlias.js | 46 +
.../lib/converters/toSequenceExpression.js | 21 +
.../types/lib/converters/toStatement.js | 47 +
.../types/lib/converters/valueToNode.js | 99 +
.../@babel/types/lib/definitions/core.js | 1649 ++
.../types/lib/definitions/experimental.js | 133 +
.../@babel/types/lib/definitions/flow.js | 474 +
.../@babel/types/lib/definitions/index.js | 103 +
.../@babel/types/lib/definitions/jsx.js | 156 +
.../@babel/types/lib/definitions/misc.js | 32 +
.../types/lib/definitions/placeholders.js | 33 +
.../types/lib/definitions/typescript.js | 470 +
.../@babel/types/lib/definitions/utils.js | 343 +
.../@babel/types/lib/index-legacy.d.ts | 2717 +++
.../node_modules/@babel/types/lib/index.d.ts | 2927 +++
.../node_modules/@babel/types/lib/index.js | 647 +
.../@babel/types/lib/index.js.flow | 2572 +++
.../modifications/appendToMemberExpression.js | 15 +
.../flow/removeTypeDuplicates.js | 78 +
.../types/lib/modifications/inherits.js | 31 +
.../prependToMemberExpression.js | 13 +
.../lib/modifications/removeProperties.js | 30 +
.../lib/modifications/removePropertiesDeep.js | 15 +
.../typescript/removeTypeDuplicates.js | 54 +
.../lib/retrievers/getBindingIdentifiers.js | 104 +
.../retrievers/getOuterBindingIdentifiers.js | 15 +
.../@babel/types/lib/traverse/traverse.js | 55 +
.../@babel/types/lib/traverse/traverseFast.js | 28 +
.../@babel/types/lib/utils/inherit.js | 12 +
.../react/cleanJSXElementLiteralChild.js | 47 +
.../@babel/types/lib/utils/shallowEqual.js | 18 +
.../validators/buildMatchMemberExpression.js | 13 +
.../types/lib/validators/generated/index.js | 4811 +++++
.../@babel/types/lib/validators/is.js | 33 +
.../@babel/types/lib/validators/isBinding.js | 31 +
.../types/lib/validators/isBlockScoped.js | 14 +
.../types/lib/validators/isImmutable.js | 24 +
.../@babel/types/lib/validators/isLet.js | 14 +
.../@babel/types/lib/validators/isNode.js | 12 +
.../types/lib/validators/isNodesEquivalent.js | 67 +
.../types/lib/validators/isPlaceholderType.js | 21 +
.../types/lib/validators/isReferenced.js | 128 +
.../@babel/types/lib/validators/isScope.js | 20 +
.../lib/validators/isSpecifierDefault.js | 14 +
.../@babel/types/lib/validators/isType.js | 24 +
.../lib/validators/isValidES3Identifier.js | 14 +
.../types/lib/validators/isValidIdentifier.js | 20 +
.../@babel/types/lib/validators/isVar.js | 16 +
.../types/lib/validators/matchesPattern.js | 42 +
.../types/lib/validators/react/isCompatTag.js | 10 +
.../lib/validators/react/isReactComponent.js | 12 +
.../@babel/types/lib/validators/validate.js | 32 +
.../node_modules/@babel/types/package.json | 39 +
.../types/scripts/generators/asserts.js | 50 +
.../types/scripts/generators/ast-types.js | 144 +
.../types/scripts/generators/builders.js | 163 +
.../types/scripts/generators/constants.js | 15 +
.../@babel/types/scripts/generators/docs.js | 282 +
.../@babel/types/scripts/generators/flow.js | 260 +
.../scripts/generators/typescript-legacy.js | 369 +
.../types/scripts/generators/validators.js | 87 +
.../@babel/types/scripts/package.json | 1 +
.../types/scripts/utils/formatBuilderName.js | 8 +
.../@babel/types/scripts/utils/lowerFirst.js | 3 +
.../types/scripts/utils/stringifyValidator.js | 66 +
.../types/scripts/utils/toFunctionName.js | 4 +
.../@bcoe/v8-coverage/.editorconfig | 9 +
.../@bcoe/v8-coverage/.gitattributes | 2 +
.../@bcoe/v8-coverage/CHANGELOG.md | 250 +
.../node_modules/@bcoe/v8-coverage/LICENSE.md | 21 +
.../@bcoe/v8-coverage/LICENSE.txt | 14 +
.../node_modules/@bcoe/v8-coverage/README.md | 11 +
.../@bcoe/v8-coverage/dist/lib/CHANGELOG.md | 250 +
.../@bcoe/v8-coverage/dist/lib/LICENSE.md | 21 +
.../@bcoe/v8-coverage/dist/lib/README.md | 11 +
.../@bcoe/v8-coverage/dist/lib/_src/ascii.ts | 146 +
.../@bcoe/v8-coverage/dist/lib/_src/clone.ts | 70 +
.../v8-coverage/dist/lib/_src/compare.ts | 40 +
.../@bcoe/v8-coverage/dist/lib/_src/index.ts | 6 +
.../@bcoe/v8-coverage/dist/lib/_src/merge.ts | 343 +
.../v8-coverage/dist/lib/_src/normalize.ts | 84 +
.../v8-coverage/dist/lib/_src/range-tree.ts | 156 +
.../@bcoe/v8-coverage/dist/lib/_src/types.ts | 26 +
.../@bcoe/v8-coverage/dist/lib/ascii.d.ts | 12 +
.../@bcoe/v8-coverage/dist/lib/ascii.js | 136 +
.../@bcoe/v8-coverage/dist/lib/ascii.mjs | 130 +
.../@bcoe/v8-coverage/dist/lib/clone.d.ts | 29 +
.../@bcoe/v8-coverage/dist/lib/clone.js | 70 +
.../@bcoe/v8-coverage/dist/lib/clone.mjs | 64 +
.../@bcoe/v8-coverage/dist/lib/compare.d.ts | 21 +
.../@bcoe/v8-coverage/dist/lib/compare.js | 46 +
.../@bcoe/v8-coverage/dist/lib/compare.mjs | 41 +
.../@bcoe/v8-coverage/dist/lib/index.d.ts | 6 +
.../@bcoe/v8-coverage/dist/lib/index.js | 24 +
.../@bcoe/v8-coverage/dist/lib/index.mjs | 7 +
.../@bcoe/v8-coverage/dist/lib/merge.d.ts | 39 +
.../@bcoe/v8-coverage/dist/lib/merge.js | 302 +
.../@bcoe/v8-coverage/dist/lib/merge.mjs | 297 +
.../@bcoe/v8-coverage/dist/lib/normalize.d.ts | 53 +
.../@bcoe/v8-coverage/dist/lib/normalize.js | 87 +
.../@bcoe/v8-coverage/dist/lib/normalize.mjs | 79 +
.../@bcoe/v8-coverage/dist/lib/package.json | 44 +
.../v8-coverage/dist/lib/range-tree.d.ts | 24 +
.../@bcoe/v8-coverage/dist/lib/range-tree.js | 139 +
.../@bcoe/v8-coverage/dist/lib/range-tree.mjs | 136 +
.../@bcoe/v8-coverage/dist/lib/tsconfig.json | 62 +
.../@bcoe/v8-coverage/dist/lib/types.d.ts | 22 +
.../@bcoe/v8-coverage/dist/lib/types.js | 4 +
.../@bcoe/v8-coverage/dist/lib/types.mjs | 3 +
.../@bcoe/v8-coverage/gulpfile.ts | 95 +
.../@bcoe/v8-coverage/package.json | 48 +
.../@bcoe/v8-coverage/src/lib/ascii.ts | 146 +
.../@bcoe/v8-coverage/src/lib/clone.ts | 70 +
.../@bcoe/v8-coverage/src/lib/compare.ts | 40 +
.../@bcoe/v8-coverage/src/lib/index.ts | 6 +
.../@bcoe/v8-coverage/src/lib/merge.ts | 343 +
.../@bcoe/v8-coverage/src/lib/normalize.ts | 84 +
.../@bcoe/v8-coverage/src/lib/range-tree.ts | 156 +
.../@bcoe/v8-coverage/src/lib/types.ts | 26 +
.../@bcoe/v8-coverage/src/test/merge.spec.ts | 280 +
.../@bcoe/v8-coverage/tsconfig.json | 59 +
.../@istanbuljs/load-nyc-config/CHANGELOG.md | 41 +
.../@istanbuljs/load-nyc-config/LICENSE | 16 +
.../@istanbuljs/load-nyc-config/README.md | 64 +
.../@istanbuljs/load-nyc-config/index.js | 166 +
.../@istanbuljs/load-nyc-config/load-esm.js | 12 +
.../@istanbuljs/load-nyc-config/package.json | 49 +
.../@istanbuljs/schema/CHANGELOG.md | 44 +
.../node_modules/@istanbuljs/schema/LICENSE | 21 +
.../node_modules/@istanbuljs/schema/README.md | 30 +
.../@istanbuljs/schema/default-exclude.js | 22 +
.../@istanbuljs/schema/default-extension.js | 10 +
.../node_modules/@istanbuljs/schema/index.js | 466 +
.../@istanbuljs/schema/package.json | 30 +
.../node_modules/@jest/console/LICENSE | 21 +
.../@jest/console/build/BufferedConsole.d.ts | 37 +
.../@jest/console/build/BufferedConsole.js | 258 +
.../@jest/console/build/CustomConsole.d.ts | 41 +
.../@jest/console/build/CustomConsole.js | 240 +
.../@jest/console/build/NullConsole.d.ts | 23 +
.../@jest/console/build/NullConsole.js | 50 +
.../@jest/console/build/getConsoleOutput.d.ts | 10 +
.../@jest/console/build/getConsoleOutput.js | 101 +
.../@jest/console/build/index.d.ts | 11 +
.../node_modules/@jest/console/build/index.js | 41 +
.../@jest/console/build/types.d.ts | 20 +
.../node_modules/@jest/console/build/types.js | 1 +
.../node_modules/@jest/console/package.json | 38 +
.../node_modules/@jest/core/LICENSE | 21 +
.../node_modules/@jest/core/README.md | 3 +
.../@jest/core/build/FailedTestsCache.d.ts | 12 +
.../@jest/core/build/FailedTestsCache.js | 59 +
.../build/FailedTestsInteractiveMode.d.ts | 31 +
.../core/build/FailedTestsInteractiveMode.js | 262 +
.../@jest/core/build/ReporterDispatcher.d.ts | 22 +
.../@jest/core/build/ReporterDispatcher.js | 104 +
.../@jest/core/build/SearchSource.d.ts | 46 +
.../@jest/core/build/SearchSource.js | 490 +
.../core/build/SnapshotInteractiveMode.d.ts | 30 +
.../core/build/SnapshotInteractiveMode.js | 327 +
.../core/build/TestNamePatternPrompt.d.ts | 17 +
.../@jest/core/build/TestNamePatternPrompt.js | 86 +
.../core/build/TestPathPatternPrompt.d.ts | 24 +
.../@jest/core/build/TestPathPatternPrompt.js | 81 +
.../@jest/core/build/TestScheduler.d.ts | 42 +
.../@jest/core/build/TestScheduler.js | 570 +
.../@jest/core/build/TestWatcher.d.ts | 23 +
.../@jest/core/build/TestWatcher.js | 64 +
.../@jest/core/build/assets/jest_logo.png | Bin 0 -> 3157 bytes
.../@jest/core/build/cli/index.d.ts | 12 +
.../@jest/core/build/cli/index.js | 399 +
.../@jest/core/build/collectHandles.d.ts | 10 +
.../@jest/core/build/collectHandles.js | 269 +
.../core/build/getChangedFilesPromise.d.ts | 9 +
.../core/build/getChangedFilesPromise.js | 77 +
.../core/build/getConfigsOfProjectsToRun.d.ts | 8 +
.../core/build/getConfigsOfProjectsToRun.js | 28 +
.../@jest/core/build/getNoTestFound.d.ts | 9 +
.../@jest/core/build/getNoTestFound.js | 63 +
.../core/build/getNoTestFoundFailed.d.ts | 8 +
.../@jest/core/build/getNoTestFoundFailed.js | 51 +
.../build/getNoTestFoundPassWithNoTests.d.ts | 7 +
.../build/getNoTestFoundPassWithNoTests.js | 30 +
.../getNoTestFoundRelatedToChangedFiles.d.ts | 8 +
.../getNoTestFoundRelatedToChangedFiles.js | 57 +
.../core/build/getNoTestFoundVerbose.d.ts | 9 +
.../@jest/core/build/getNoTestFoundVerbose.js | 95 +
.../core/build/getNoTestsFoundMessage.d.ts | 9 +
.../core/build/getNoTestsFoundMessage.js | 52 +
.../core/build/getProjectDisplayName.d.ts | 8 +
.../@jest/core/build/getProjectDisplayName.js | 23 +
.../build/getProjectNamesMissingWarning.d.ts | 8 +
.../build/getProjectNamesMissingWarning.js | 49 +
.../core/build/getSelectProjectsMessage.d.ts | 8 +
.../core/build/getSelectProjectsMessage.js | 65 +
.../node_modules/@jest/core/build/jest.d.ts | 11 +
.../node_modules/@jest/core/build/jest.js | 49 +
.../core/build/lib/activeFiltersMessage.d.ts | 9 +
.../core/build/lib/activeFiltersMessage.js | 54 +
.../@jest/core/build/lib/createContext.d.ts | 10 +
.../@jest/core/build/lib/createContext.js | 35 +
.../build/lib/handleDeprecationWarnings.d.ts | 8 +
.../build/lib/handleDeprecationWarnings.js | 72 +
.../@jest/core/build/lib/isValidPath.d.ts | 8 +
.../@jest/core/build/lib/isValidPath.js | 29 +
.../core/build/lib/logDebugMessages.d.ts | 9 +
.../@jest/core/build/lib/logDebugMessages.js | 23 +
.../core/build/lib/updateGlobalConfig.d.ts | 11 +
.../core/build/lib/updateGlobalConfig.js | 121 +
.../core/build/lib/watchPluginsHelpers.d.ts | 10 +
.../core/build/lib/watchPluginsHelpers.js | 62 +
.../build/plugins/FailedTestsInteractive.d.ts | 17 +
.../build/plugins/FailedTestsInteractive.js | 135 +
.../@jest/core/build/plugins/Quit.d.ts | 18 +
.../@jest/core/build/plugins/Quit.js | 60 +
.../core/build/plugins/TestNamePattern.d.ts | 21 +
.../core/build/plugins/TestNamePattern.js | 91 +
.../core/build/plugins/TestPathPattern.d.ts | 21 +
.../core/build/plugins/TestPathPattern.js | 91 +
.../core/build/plugins/UpdateSnapshots.d.ts | 21 +
.../core/build/plugins/UpdateSnapshots.js | 70 +
.../plugins/UpdateSnapshotsInteractive.d.ts | 20 +
.../plugins/UpdateSnapshotsInteractive.js | 138 +
.../@jest/core/build/pluralize.d.ts | 7 +
.../@jest/core/build/pluralize.js | 16 +
.../@jest/core/build/runGlobalHook.d.ts | 13 +
.../@jest/core/build/runGlobalHook.js | 143 +
.../@jest/core/build/runJest.d.ts | 27 +
.../node_modules/@jest/core/build/runJest.js | 423 +
.../@jest/core/build/testSchedulerHelper.d.ts | 9 +
.../@jest/core/build/testSchedulerHelper.js | 51 +
.../node_modules/@jest/core/build/types.d.ts | 39 +
.../node_modules/@jest/core/build/types.js | 1 +
.../@jest/core/build/version.d.ts | 7 +
.../node_modules/@jest/core/build/version.js | 19 +
.../node_modules/@jest/core/build/watch.d.ts | 13 +
.../node_modules/@jest/core/build/watch.js | 769 +
.../node_modules/@jest/core/package.json | 103 +
.../node_modules/@jest/environment/LICENSE | 21 +
.../@jest/environment/build/index.d.ts | 267 +
.../@jest/environment/build/index.js | 1 +
.../@jest/environment/package.json | 32 +
.../node_modules/@jest/fake-timers/LICENSE | 21 +
.../@jest/fake-timers/build/index.d.ts | 8 +
.../@jest/fake-timers/build/index.js | 25 +
.../fake-timers/build/legacyFakeTimers.d.ts | 67 +
.../fake-timers/build/legacyFakeTimers.js | 673 +
.../fake-timers/build/modernFakeTimers.d.ts | 34 +
.../fake-timers/build/modernFakeTimers.js | 181 +
.../@jest/fake-timers/package.json | 37 +
.../node_modules/@jest/globals/LICENSE | 21 +
.../@jest/globals/build/index.d.ts | 23 +
.../node_modules/@jest/globals/build/index.js | 25 +
.../node_modules/@jest/globals/package.json | 31 +
.../node_modules/@jest/reporters/LICENSE | 21 +
.../@jest/reporters/build/BaseReporter.d.ts | 19 +
.../@jest/reporters/build/BaseReporter.js | 65 +
.../reporters/build/CoverageReporter.d.ts | 24 +
.../@jest/reporters/build/CoverageReporter.js | 668 +
.../@jest/reporters/build/CoverageWorker.d.ts | 17 +
.../@jest/reporters/build/CoverageWorker.js | 103 +
.../reporters/build/DefaultReporter.d.ts | 33 +
.../@jest/reporters/build/DefaultReporter.js | 254 +
.../@jest/reporters/build/NotifyReporter.d.ts | 19 +
.../@jest/reporters/build/NotifyReporter.js | 256 +
.../@jest/reporters/build/Status.d.ts | 42 +
.../@jest/reporters/build/Status.js | 272 +
.../reporters/build/SummaryReporter.d.ts | 22 +
.../@jest/reporters/build/SummaryReporter.js | 271 +
.../reporters/build/VerboseReporter.d.ts | 27 +
.../@jest/reporters/build/VerboseReporter.js | 226 +
.../build/generateEmptyCoverage.d.ts | 19 +
.../reporters/build/generateEmptyCoverage.js | 168 +
.../reporters/build/getResultHeader.d.ts | 9 +
.../@jest/reporters/build/getResultHeader.js | 104 +
.../reporters/build/getSnapshotStatus.d.ts | 8 +
.../reporters/build/getSnapshotStatus.js | 111 +
.../reporters/build/getSnapshotSummary.d.ts | 9 +
.../reporters/build/getSnapshotSummary.js | 203 +
.../@jest/reporters/build/getWatermarks.d.ts | 9 +
.../@jest/reporters/build/getWatermarks.js | 47 +
.../@jest/reporters/build/index.d.ts | 27 +
.../@jest/reporters/build/index.js | 78 +
.../@jest/reporters/build/types.d.ts | 75 +
.../@jest/reporters/build/types.js | 1 +
.../@jest/reporters/build/utils.d.ts | 18 +
.../@jest/reporters/build/utils.js | 435 +
.../node_modules/@jest/reporters/package.json | 80 +
.../node_modules/@jest/source-map/LICENSE | 21 +
.../@jest/source-map/build/getCallsite.d.ts | 9 +
.../@jest/source-map/build/getCallsite.js | 108 +
.../@jest/source-map/build/index.d.ts | 8 +
.../@jest/source-map/build/index.js | 17 +
.../@jest/source-map/build/types.d.ts | 7 +
.../@jest/source-map/build/types.js | 1 +
.../@jest/source-map/package.json | 34 +
.../node_modules/@jest/test-result/LICENSE | 21 +
.../test-result/build/formatTestResults.d.ts | 8 +
.../test-result/build/formatTestResults.js | 70 +
.../@jest/test-result/build/helpers.d.ts | 12 +
.../@jest/test-result/build/helpers.js | 188 +
.../@jest/test-result/build/index.d.ts | 9 +
.../@jest/test-result/build/index.js | 43 +
.../@jest/test-result/build/types.d.ts | 171 +
.../@jest/test-result/build/types.js | 1 +
.../@jest/test-result/package.json | 32 +
.../node_modules/@jest/test-sequencer/LICENSE | 21 +
.../@jest/test-sequencer/build/index.d.ts | 51 +
.../@jest/test-sequencer/build/index.js | 237 +
.../@jest/test-sequencer/package.json | 35 +
.../node_modules/@jest/transform/LICENSE | 21 +
.../transform/build/ScriptTransformer.d.ts | 40 +
.../transform/build/ScriptTransformer.js | 1115 +
.../build/enhanceUnexpectedTokenMessage.d.ts | 12 +
.../build/enhanceUnexpectedTokenMessage.js | 83 +
.../@jest/transform/build/index.d.ts | 11 +
.../@jest/transform/build/index.js | 41 +
.../build/runtimeErrorsAndWarnings.d.ts | 10 +
.../build/runtimeErrorsAndWarnings.js | 101 +
.../transform/build/shouldInstrument.d.ts | 9 +
.../@jest/transform/build/shouldInstrument.js | 207 +
.../@jest/transform/build/types.d.ts | 75 +
.../@jest/transform/build/types.js | 1 +
.../node_modules/@jest/transform/package.json | 53 +
.../node_modules/@jest/types/LICENSE | 21 +
.../@jest/types/build/Circus.d.ts | 193 +
.../node_modules/@jest/types/build/Circus.js | 1 +
.../@jest/types/build/Config.d.ts | 462 +
.../node_modules/@jest/types/build/Config.js | 1 +
.../@jest/types/build/Global.d.ts | 95 +
.../node_modules/@jest/types/build/Global.js | 1 +
.../@jest/types/build/TestResult.d.ts | 31 +
.../@jest/types/build/TestResult.js | 1 +
.../@jest/types/build/Transform.d.ts | 11 +
.../@jest/types/build/Transform.js | 1 +
.../node_modules/@jest/types/build/index.d.ts | 12 +
.../node_modules/@jest/types/build/index.js | 1 +
.../node_modules/@jest/types/package.json | 37 +
.../@jridgewell/resolve-uri/LICENSE | 19 +
.../@jridgewell/resolve-uri/README.md | 40 +
.../resolve-uri/dist/resolve-uri.mjs | 177 +
.../resolve-uri/dist/resolve-uri.mjs.map | 1 +
.../resolve-uri/dist/resolve-uri.umd.js | 185 +
.../resolve-uri/dist/resolve-uri.umd.js.map | 1 +
.../resolve-uri/dist/types/resolve-uri.d.ts | 4 +
.../@jridgewell/resolve-uri/package.json | 64 +
.../@jridgewell/sourcemap-codec/LICENSE | 21 +
.../@jridgewell/sourcemap-codec/README.md | 63 +
.../sourcemap-codec/dist/sourcemap-codec.mjs | 164 +
.../dist/sourcemap-codec.mjs.map | 1 +
.../dist/sourcemap-codec.umd.js | 175 +
.../dist/sourcemap-codec.umd.js.map | 1 +
.../dist/types/sourcemap-codec.d.ts | 5 +
.../@jridgewell/sourcemap-codec/package.json | 69 +
.../@jridgewell/trace-mapping/LICENSE | 19 +
.../@jridgewell/trace-mapping/README.md | 77 +
.../trace-mapping/dist/trace-mapping.mjs | 269 +
.../trace-mapping/dist/trace-mapping.mjs.map | 1 +
.../trace-mapping/dist/trace-mapping.umd.js | 280 +
.../dist/trace-mapping.umd.js.map | 1 +
.../dist/types/binary-search.d.ts | 30 +
.../trace-mapping/dist/types/resolve.d.ts | 1 +
.../trace-mapping/dist/types/sort.d.ts | 2 +
.../dist/types/strip-filename.d.ts | 4 +
.../dist/types/trace-mapping.d.ts | 43 +
.../trace-mapping/dist/types/types.d.ts | 62 +
.../@jridgewell/trace-mapping/package.json | 71 +
.../node_modules/@sinonjs/commons/CHANGES.md | 57 +
.../node_modules/@sinonjs/commons/LICENSE | 29 +
.../node_modules/@sinonjs/commons/README.md | 16 +
.../@sinonjs/commons/lib/called-in-order.js | 57 +
.../commons/lib/called-in-order.test.js | 121 +
.../@sinonjs/commons/lib/class-name.js | 27 +
.../@sinonjs/commons/lib/class-name.test.js | 37 +
.../@sinonjs/commons/lib/deprecated.js | 58 +
.../@sinonjs/commons/lib/deprecated.test.js | 100 +
.../@sinonjs/commons/lib/every.js | 27 +
.../@sinonjs/commons/lib/every.test.js | 41 +
.../@sinonjs/commons/lib/function-name.js | 29 +
.../commons/lib/function-name.test.js | 76 +
.../@sinonjs/commons/lib/global.js | 22 +
.../@sinonjs/commons/lib/global.test.js | 16 +
.../@sinonjs/commons/lib/index.js | 14 +
.../@sinonjs/commons/lib/index.test.js | 29 +
.../commons/lib/order-by-first-call.js | 36 +
.../commons/lib/order-by-first-call.test.js | 52 +
.../@sinonjs/commons/lib/prototypes/README.md | 43 +
.../@sinonjs/commons/lib/prototypes/array.js | 5 +
.../commons/lib/prototypes/copy-prototype.js | 21 +
.../commons/lib/prototypes/function.js | 5 +
.../@sinonjs/commons/lib/prototypes/index.js | 10 +
.../commons/lib/prototypes/index.test.js | 51 +
.../@sinonjs/commons/lib/prototypes/map.js | 5 +
.../@sinonjs/commons/lib/prototypes/object.js | 5 +
.../@sinonjs/commons/lib/prototypes/set.js | 5 +
.../@sinonjs/commons/lib/prototypes/string.js | 5 +
.../@sinonjs/commons/lib/type-of.js | 13 +
.../@sinonjs/commons/lib/type-of.test.js | 51 +
.../@sinonjs/commons/lib/value-to-string.js | 17 +
.../commons/lib/value-to-string.test.js | 20 +
.../@sinonjs/commons/package.json | 67 +
.../commons/types/called-in-order.d.ts | 36 +
.../@sinonjs/commons/types/class-name.d.ts | 8 +
.../@sinonjs/commons/types/deprecated.d.ts | 3 +
.../@sinonjs/commons/types/every.d.ts | 2 +
.../@sinonjs/commons/types/function-name.d.ts | 2 +
.../@sinonjs/commons/types/global.d.ts | 7 +
.../@sinonjs/commons/types/index.d.ts | 17 +
.../commons/types/order-by-first-call.d.ts | 26 +
.../commons/types/prototypes/array.d.ts | 2 +
.../types/prototypes/copy-prototype.d.ts | 2 +
.../commons/types/prototypes/function.d.ts | 2 +
.../commons/types/prototypes/index.d.ts | 7 +
.../commons/types/prototypes/map.d.ts | 2 +
.../commons/types/prototypes/object.d.ts | 2 +
.../commons/types/prototypes/set.d.ts | 2 +
.../commons/types/prototypes/string.d.ts | 2 +
.../@sinonjs/commons/types/type-of.d.ts | 2 +
.../commons/types/value-to-string.d.ts | 8 +
.../@sinonjs/fake-timers/CHANGELOG.md | 441 +
.../node_modules/@sinonjs/fake-timers/LICENSE | 11 +
.../@sinonjs/fake-timers/README.md | 353 +
.../@sinonjs/fake-timers/package.json | 71 +
.../fake-timers/src/fake-timers-src.js | 1728 ++
.../@tootallnate/once/dist/index.d.ts | 14 +
.../@tootallnate/once/dist/index.js | 39 +
.../@tootallnate/once/dist/index.js.map | 1 +
.../@tootallnate/once/package.json | 45 +
.../node_modules/@types/babel__core/LICENSE | 21 +
.../node_modules/@types/babel__core/README.md | 16 +
.../@types/babel__core/index.d.ts | 799 +
.../@types/babel__core/package.json | 51 +
.../@types/babel__generator/LICENSE | 21 +
.../@types/babel__generator/README.md | 16 +
.../@types/babel__generator/index.d.ts | 211 +
.../@types/babel__generator/package.json | 42 +
.../@types/babel__template/LICENSE | 21 +
.../@types/babel__template/README.md | 16 +
.../@types/babel__template/index.d.ts | 100 +
.../@types/babel__template/package.json | 43 +
.../@types/babel__traverse/LICENSE | 21 +
.../@types/babel__traverse/README.md | 16 +
.../@types/babel__traverse/index.d.ts | 1172 ++
.../@types/babel__traverse/package.json | 69 +
.../@types/babel__traverse/ts4.1/index.d.ts | 1160 ++
.../node_modules/@types/graceful-fs/LICENSE | 21 +
.../node_modules/@types/graceful-fs/README.md | 16 +
.../@types/graceful-fs/index.d.ts | 19 +
.../@types/graceful-fs/package.json | 31 +
.../@types/istanbul-lib-coverage/LICENSE | 21 +
.../@types/istanbul-lib-coverage/README.md | 16 +
.../@types/istanbul-lib-coverage/index.d.ts | 117 +
.../@types/istanbul-lib-coverage/package.json | 25 +
.../@types/istanbul-lib-report/LICENSE | 21 +
.../@types/istanbul-lib-report/README.md | 16 +
.../@types/istanbul-lib-report/index.d.ts | 191 +
.../@types/istanbul-lib-report/package.json | 31 +
.../@types/istanbul-reports/LICENSE | 21 +
.../@types/istanbul-reports/README.md | 94 +
.../@types/istanbul-reports/index.d.ts | 74 +
.../@types/istanbul-reports/package.json | 32 +
.../node_modules/@types/node/LICENSE | 21 +
.../node_modules/@types/node/README.md | 16 +
.../node_modules/@types/node/assert.d.ts | 912 +
.../@types/node/assert/strict.d.ts | 8 +
.../node_modules/@types/node/async_hooks.d.ts | 501 +
.../node_modules/@types/node/buffer.d.ts | 2232 ++
.../@types/node/child_process.d.ts | 1366 ++
.../node_modules/@types/node/cluster.d.ts | 414 +
.../node_modules/@types/node/console.d.ts | 412 +
.../node_modules/@types/node/constants.d.ts | 18 +
.../node_modules/@types/node/crypto.d.ts | 3307 +++
.../node_modules/@types/node/dgram.d.ts | 545 +
.../@types/node/diagnostics_channel.d.ts | 134 +
.../node_modules/@types/node/dns.d.ts | 659 +
.../@types/node/dns/promises.d.ts | 370 +
.../node_modules/@types/node/domain.d.ts | 169 +
.../node_modules/@types/node/events.d.ts | 651 +
.../node_modules/@types/node/fs.d.ts | 3869 ++++
.../node_modules/@types/node/fs/promises.d.ts | 1091 +
.../node_modules/@types/node/globals.d.ts | 284 +
.../@types/node/globals.global.d.ts | 1 +
.../node_modules/@types/node/http.d.ts | 1396 ++
.../node_modules/@types/node/http2.d.ts | 2100 ++
.../node_modules/@types/node/https.d.ts | 391 +
.../node_modules/@types/node/index.d.ts | 129 +
.../node_modules/@types/node/inspector.d.ts | 2744 +++
.../node_modules/@types/node/module.d.ts | 114 +
.../node_modules/@types/node/net.d.ts | 784 +
.../node_modules/@types/node/os.d.ts | 455 +
.../node_modules/@types/node/package.json | 220 +
.../node_modules/@types/node/path.d.ts | 180 +
.../node_modules/@types/node/perf_hooks.d.ts | 557 +
.../node_modules/@types/node/process.d.ts | 1481 ++
.../node_modules/@types/node/punycode.d.ts | 117 +
.../node_modules/@types/node/querystring.d.ts | 131 +
.../node_modules/@types/node/readline.d.ts | 650 +
.../node_modules/@types/node/repl.d.ts | 424 +
.../node_modules/@types/node/stream.d.ts | 1249 ++
.../@types/node/stream/consumers.d.ts | 24 +
.../@types/node/stream/promises.d.ts | 42 +
.../node_modules/@types/node/stream/web.d.ts | 330 +
.../@types/node/string_decoder.d.ts | 67 +
.../node_modules/@types/node/timers.d.ts | 94 +
.../@types/node/timers/promises.d.ts | 68 +
.../node_modules/@types/node/tls.d.ts | 1020 +
.../@types/node/trace_events.d.ts | 161 +
.../node_modules/@types/node/tty.d.ts | 204 +
.../node_modules/@types/node/url.d.ts | 891 +
.../node_modules/@types/node/util.d.ts | 1594 ++
.../node_modules/@types/node/v8.d.ts | 378 +
.../node_modules/@types/node/vm.d.ts | 507 +
.../node_modules/@types/node/wasi.d.ts | 158 +
.../@types/node/worker_threads.d.ts | 649 +
.../node_modules/@types/node/zlib.d.ts | 517 +
.../node_modules/@types/prettier/LICENSE | 21 +
.../node_modules/@types/prettier/README.md | 16 +
.../node_modules/@types/prettier/doc.d.ts | 221 +
.../node_modules/@types/prettier/index.d.ts | 775 +
.../node_modules/@types/prettier/package.json | 60 +
.../@types/prettier/parser-angular.d.ts | 11 +
.../@types/prettier/parser-babel.d.ts | 16 +
.../@types/prettier/parser-espree.d.ts | 8 +
.../@types/prettier/parser-flow.d.ts | 8 +
.../@types/prettier/parser-glimmer.d.ts | 8 +
.../@types/prettier/parser-graphql.d.ts | 8 +
.../@types/prettier/parser-html.d.ts | 11 +
.../@types/prettier/parser-markdown.d.ts | 10 +
.../@types/prettier/parser-meriyah.d.ts | 8 +
.../@types/prettier/parser-postcss.d.ts | 10 +
.../@types/prettier/parser-typescript.d.ts | 8 +
.../@types/prettier/parser-yaml.d.ts | 8 +
.../@types/prettier/standalone.d.ts | 27 +
.../node_modules/@types/stack-utils/LICENSE | 21 +
.../node_modules/@types/stack-utils/README.md | 85 +
.../@types/stack-utils/index.d.ts | 65 +
.../@types/stack-utils/package.json | 25 +
.../node_modules/@types/yargs-parser/LICENSE | 21 +
.../@types/yargs-parser/README.md | 16 +
.../@types/yargs-parser/index.d.ts | 118 +
.../@types/yargs-parser/package.json | 25 +
.../node_modules/@types/yargs/LICENSE | 21 +
.../node_modules/@types/yargs/README.md | 16 +
.../node_modules/@types/yargs/helpers.d.ts | 5 +
.../node_modules/@types/yargs/index.d.ts | 844 +
.../node_modules/@types/yargs/package.json | 62 +
.../node_modules/@types/yargs/yargs.d.ts | 9 +
.../examples_4/node_modules/abab/CHANGELOG.md | 45 +
.../examples_4/node_modules/abab/LICENSE.md | 13 +
.../examples_4/node_modules/abab/README.md | 51 +
.../examples_4/node_modules/abab/index.d.ts | 2 +
.../examples_4/node_modules/abab/index.js | 9 +
.../examples_4/node_modules/abab/lib/atob.js | 97 +
.../examples_4/node_modules/abab/lib/btoa.js | 58 +
.../examples_4/node_modules/abab/package.json | 42 +
.../node_modules/acorn-globals/LICENSE | 19 +
.../node_modules/acorn-globals/README.md | 81 +
.../node_modules/acorn-globals/index.js | 179 +
.../acorn-globals/node_modules/.bin/acorn | 12 +
.../acorn-globals/node_modules/.bin/acorn.cmd | 17 +
.../acorn-globals/node_modules/.bin/acorn.ps1 | 28 +
.../node_modules/acorn/CHANGELOG.md | 620 +
.../acorn-globals/node_modules/acorn/LICENSE | 21 +
.../node_modules/acorn/README.md | 269 +
.../node_modules/acorn/bin/acorn | 4 +
.../node_modules/acorn/dist/acorn.d.ts | 209 +
.../node_modules/acorn/dist/acorn.js | 5186 +++++
.../node_modules/acorn/dist/acorn.js.map | 1 +
.../node_modules/acorn/dist/acorn.mjs | 5155 +++++
.../node_modules/acorn/dist/acorn.mjs.d.ts | 2 +
.../node_modules/acorn/dist/acorn.mjs.map | 1 +
.../node_modules/acorn/dist/bin.js | 64 +
.../node_modules/acorn/package.json | 35 +
.../node_modules/acorn-globals/package.json | 35 +
.../node_modules/acorn-walk/CHANGELOG.md | 131 +
.../node_modules/acorn-walk/LICENSE | 19 +
.../node_modules/acorn-walk/README.md | 126 +
.../node_modules/acorn-walk/dist/walk.d.ts | 112 +
.../node_modules/acorn-walk/dist/walk.js | 463 +
.../node_modules/acorn-walk/dist/walk.js.map | 1 +
.../node_modules/acorn-walk/dist/walk.mjs | 443 +
.../node_modules/acorn-walk/dist/walk.mjs.map | 1 +
.../node_modules/acorn-walk/package.json | 34 +
.../node_modules/acorn/CHANGELOG.md | 788 +
.../examples_4/node_modules/acorn/LICENSE | 21 +
.../examples_4/node_modules/acorn/README.md | 280 +
.../examples_4/node_modules/acorn/bin/acorn | 4 +
.../node_modules/acorn/dist/acorn.d.ts | 214 +
.../node_modules/acorn/dist/acorn.js | 5619 +++++
.../node_modules/acorn/dist/acorn.mjs | 5588 +++++
.../node_modules/acorn/dist/acorn.mjs.d.ts | 2 +
.../examples_4/node_modules/acorn/dist/bin.js | 91 +
.../node_modules/acorn/package.json | 46 +
.../node_modules/agent-base/README.md | 145 +
.../agent-base/dist/src/index.d.ts | 78 +
.../node_modules/agent-base/dist/src/index.js | 203 +
.../agent-base/dist/src/index.js.map | 1 +
.../agent-base/dist/src/promisify.d.ts | 4 +
.../agent-base/dist/src/promisify.js | 18 +
.../agent-base/dist/src/promisify.js.map | 1 +
.../node_modules/agent-base/package.json | 64 +
.../node_modules/agent-base/src/index.ts | 345 +
.../node_modules/agent-base/src/promisify.ts | 33 +
.../node_modules/ansi-escapes/index.d.ts | 248 +
.../node_modules/ansi-escapes/index.js | 157 +
.../node_modules/ansi-escapes/license | 9 +
.../node_modules/ansi-escapes/package.json | 57 +
.../node_modules/ansi-escapes/readme.md | 245 +
.../node_modules/ansi-regex/index.d.ts | 37 +
.../node_modules/ansi-regex/index.js | 10 +
.../node_modules/ansi-regex/license | 9 +
.../node_modules/ansi-regex/package.json | 55 +
.../node_modules/ansi-regex/readme.md | 78 +
.../node_modules/ansi-styles/index.d.ts | 345 +
.../node_modules/ansi-styles/index.js | 163 +
.../node_modules/ansi-styles/license | 9 +
.../node_modules/ansi-styles/package.json | 56 +
.../node_modules/ansi-styles/readme.md | 152 +
.../examples_4/node_modules/anymatch/LICENSE | 15 +
.../node_modules/anymatch/README.md | 87 +
.../node_modules/anymatch/index.d.ts | 19 +
.../examples_4/node_modules/anymatch/index.js | 104 +
.../node_modules/anymatch/package.json | 48 +
.../node_modules/argparse/CHANGELOG.md | 185 +
.../examples_4/node_modules/argparse/LICENSE | 21 +
.../node_modules/argparse/README.md | 257 +
.../examples_4/node_modules/argparse/index.js | 3 +
.../node_modules/argparse/lib/action.js | 146 +
.../argparse/lib/action/append.js | 53 +
.../argparse/lib/action/append/constant.js | 47 +
.../node_modules/argparse/lib/action/count.js | 40 +
.../node_modules/argparse/lib/action/help.js | 47 +
.../node_modules/argparse/lib/action/store.js | 50 +
.../argparse/lib/action/store/constant.js | 43 +
.../argparse/lib/action/store/false.js | 27 +
.../argparse/lib/action/store/true.js | 26 +
.../argparse/lib/action/subparsers.js | 149 +
.../argparse/lib/action/version.js | 47 +
.../argparse/lib/action_container.js | 482 +
.../node_modules/argparse/lib/argparse.js | 14 +
.../argparse/lib/argument/error.js | 50 +
.../argparse/lib/argument/exclusive.js | 54 +
.../argparse/lib/argument/group.js | 75 +
.../argparse/lib/argument_parser.js | 1161 ++
.../node_modules/argparse/lib/const.js | 21 +
.../argparse/lib/help/added_formatters.js | 87 +
.../argparse/lib/help/formatter.js | 795 +
.../node_modules/argparse/lib/namespace.js | 76 +
.../node_modules/argparse/lib/utils.js | 57 +
.../node_modules/argparse/package.json | 34 +
.../examples_4/node_modules/asynckit/LICENSE | 21 +
.../node_modules/asynckit/README.md | 233 +
.../examples_4/node_modules/asynckit/bench.js | 76 +
.../examples_4/node_modules/asynckit/index.js | 6 +
.../node_modules/asynckit/lib/abort.js | 29 +
.../node_modules/asynckit/lib/async.js | 34 +
.../node_modules/asynckit/lib/defer.js | 26 +
.../node_modules/asynckit/lib/iterate.js | 75 +
.../asynckit/lib/readable_asynckit.js | 91 +
.../asynckit/lib/readable_parallel.js | 25 +
.../asynckit/lib/readable_serial.js | 25 +
.../asynckit/lib/readable_serial_ordered.js | 29 +
.../node_modules/asynckit/lib/state.js | 37 +
.../node_modules/asynckit/lib/streamify.js | 141 +
.../node_modules/asynckit/lib/terminator.js | 29 +
.../node_modules/asynckit/package.json | 63 +
.../node_modules/asynckit/parallel.js | 43 +
.../node_modules/asynckit/serial.js | 17 +
.../node_modules/asynckit/serialOrdered.js | 75 +
.../node_modules/asynckit/stream.js | 21 +
.../node_modules/babel-jest/LICENSE | 21 +
.../node_modules/babel-jest/README.md | 25 +
.../node_modules/babel-jest/build/index.d.ts | 10 +
.../node_modules/babel-jest/build/index.js | 386 +
.../babel-jest/build/loadBabelConfig.d.ts | 7 +
.../babel-jest/build/loadBabelConfig.js | 27 +
.../node_modules/babel-jest/package.json | 45 +
.../babel-plugin-istanbul/CHANGELOG.md | 320 +
.../babel-plugin-istanbul/LICENSE | 27 +
.../babel-plugin-istanbul/README.md | 135 +
.../babel-plugin-istanbul/lib/index.js | 170 +
.../lib/load-nyc-config-sync.js | 20 +
.../babel-plugin-istanbul/package.json | 71 +
.../babel-plugin-jest-hoist/LICENSE | 21 +
.../babel-plugin-jest-hoist/README.md | 33 +
.../babel-plugin-jest-hoist/build/index.d.ts | 13 +
.../babel-plugin-jest-hoist/build/index.js | 389 +
.../babel-plugin-jest-hoist/package.json | 41 +
.../babel-preset-current-node-syntax/LICENSE | 22 +
.../README.md | 30 +
.../package.json | 41 +
.../scripts/check-yarn-bug.sh | 5 +
.../src/index.js | 57 +
.../node_modules/babel-preset-jest/LICENSE | 21 +
.../node_modules/babel-preset-jest/README.md | 33 +
.../node_modules/babel-preset-jest/index.js | 14 +
.../babel-preset-jest/package.json | 29 +
.../balanced-match/.github/FUNDING.yml | 2 +
.../node_modules/balanced-match/LICENSE.md | 21 +
.../node_modules/balanced-match/README.md | 97 +
.../node_modules/balanced-match/index.js | 62 +
.../node_modules/balanced-match/package.json | 48 +
.../node_modules/brace-expansion/LICENSE | 21 +
.../node_modules/brace-expansion/README.md | 129 +
.../node_modules/brace-expansion/index.js | 201 +
.../node_modules/brace-expansion/package.json | 47 +
.../node_modules/braces/CHANGELOG.md | 184 +
.../examples_4/node_modules/braces/LICENSE | 21 +
.../examples_4/node_modules/braces/README.md | 593 +
.../examples_4/node_modules/braces/index.js | 170 +
.../node_modules/braces/lib/compile.js | 57 +
.../node_modules/braces/lib/constants.js | 57 +
.../node_modules/braces/lib/expand.js | 113 +
.../node_modules/braces/lib/parse.js | 333 +
.../node_modules/braces/lib/stringify.js | 32 +
.../node_modules/braces/lib/utils.js | 112 +
.../node_modules/braces/package.json | 77 +
.../browser-process-hrtime/LICENSE | 9 +
.../browser-process-hrtime/README.md | 27 +
.../browser-process-hrtime/index.d.ts | 4 +
.../browser-process-hrtime/index.js | 28 +
.../browser-process-hrtime/package.json | 15 +
.../node_modules/browserslist/LICENSE | 20 +
.../node_modules/browserslist/README.md | 66 +
.../node_modules/browserslist/browser.js | 50 +
.../node_modules/browserslist/cli.js | 152 +
.../node_modules/browserslist/error.d.ts | 7 +
.../node_modules/browserslist/error.js | 12 +
.../node_modules/browserslist/index.d.ts | 178 +
.../node_modules/browserslist/index.js | 1235 ++
.../node_modules/browserslist/node.js | 393 +
.../node_modules/browserslist/package.json | 41 +
.../node_modules/browserslist/update-db.js | 317 +
.../examples_4/node_modules/bser/README.md | 81 +
.../examples_4/node_modules/bser/index.js | 586 +
.../examples_4/node_modules/bser/package.json | 33 +
.../node_modules/buffer-from/LICENSE | 21 +
.../node_modules/buffer-from/index.js | 72 +
.../node_modules/buffer-from/package.json | 19 +
.../node_modules/buffer-from/readme.md | 69 +
.../node_modules/callsites/index.d.ts | 96 +
.../node_modules/callsites/index.js | 13 +
.../examples_4/node_modules/callsites/license | 9 +
.../node_modules/callsites/package.json | 39 +
.../node_modules/callsites/readme.md | 48 +
.../node_modules/camelcase/index.d.ts | 63 +
.../node_modules/camelcase/index.js | 76 +
.../examples_4/node_modules/camelcase/license | 9 +
.../node_modules/camelcase/package.json | 43 +
.../node_modules/camelcase/readme.md | 99 +
.../node_modules/caniuse-lite/LICENSE | 395 +
.../node_modules/caniuse-lite/README.md | 92 +
.../node_modules/caniuse-lite/data/agents.js | 1 +
.../caniuse-lite/data/browserVersions.js | 1 +
.../caniuse-lite/data/browsers.js | 1 +
.../caniuse-lite/data/features.js | 1 +
.../caniuse-lite/data/features/aac.js | 1 +
.../data/features/abortcontroller.js | 1 +
.../caniuse-lite/data/features/ac3-ec3.js | 1 +
.../data/features/accelerometer.js | 1 +
.../data/features/addeventlistener.js | 1 +
.../data/features/alternate-stylesheet.js | 1 +
.../data/features/ambient-light.js | 1 +
.../caniuse-lite/data/features/apng.js | 1 +
.../data/features/array-find-index.js | 1 +
.../caniuse-lite/data/features/array-find.js | 1 +
.../caniuse-lite/data/features/array-flat.js | 1 +
.../data/features/array-includes.js | 1 +
.../data/features/arrow-functions.js | 1 +
.../caniuse-lite/data/features/asmjs.js | 1 +
.../data/features/async-clipboard.js | 1 +
.../data/features/async-functions.js | 1 +
.../caniuse-lite/data/features/atob-btoa.js | 1 +
.../caniuse-lite/data/features/audio-api.js | 1 +
.../caniuse-lite/data/features/audio.js | 1 +
.../caniuse-lite/data/features/audiotracks.js | 1 +
.../caniuse-lite/data/features/autofocus.js | 1 +
.../caniuse-lite/data/features/auxclick.js | 1 +
.../caniuse-lite/data/features/av1.js | 1 +
.../caniuse-lite/data/features/avif.js | 1 +
.../data/features/background-attachment.js | 1 +
.../data/features/background-clip-text.js | 1 +
.../data/features/background-img-opts.js | 1 +
.../data/features/background-position-x-y.js | 1 +
.../features/background-repeat-round-space.js | 1 +
.../data/features/background-sync.js | 1 +
.../data/features/battery-status.js | 1 +
.../caniuse-lite/data/features/beacon.js | 1 +
.../data/features/beforeafterprint.js | 1 +
.../caniuse-lite/data/features/bigint.js | 1 +
.../caniuse-lite/data/features/blobbuilder.js | 1 +
.../caniuse-lite/data/features/bloburls.js | 1 +
.../data/features/border-image.js | 1 +
.../data/features/border-radius.js | 1 +
.../data/features/broadcastchannel.js | 1 +
.../caniuse-lite/data/features/brotli.js | 1 +
.../caniuse-lite/data/features/calc.js | 1 +
.../data/features/canvas-blending.js | 1 +
.../caniuse-lite/data/features/canvas-text.js | 1 +
.../caniuse-lite/data/features/canvas.js | 1 +
.../caniuse-lite/data/features/ch-unit.js | 1 +
.../data/features/chacha20-poly1305.js | 1 +
.../data/features/channel-messaging.js | 1 +
.../data/features/childnode-remove.js | 1 +
.../caniuse-lite/data/features/classlist.js | 1 +
.../client-hints-dpr-width-viewport.js | 1 +
.../caniuse-lite/data/features/clipboard.js | 1 +
.../caniuse-lite/data/features/colr-v1.js | 1 +
.../caniuse-lite/data/features/colr.js | 1 +
.../data/features/comparedocumentposition.js | 1 +
.../data/features/console-basic.js | 1 +
.../data/features/console-time.js | 1 +
.../caniuse-lite/data/features/const.js | 1 +
.../data/features/constraint-validation.js | 1 +
.../data/features/contenteditable.js | 1 +
.../data/features/contentsecuritypolicy.js | 1 +
.../data/features/contentsecuritypolicy2.js | 1 +
.../data/features/cookie-store-api.js | 1 +
.../caniuse-lite/data/features/cors.js | 1 +
.../data/features/createimagebitmap.js | 1 +
.../data/features/credential-management.js | 1 +
.../data/features/cryptography.js | 1 +
.../caniuse-lite/data/features/css-all.js | 1 +
.../data/features/css-animation.js | 1 +
.../data/features/css-any-link.js | 1 +
.../data/features/css-appearance.js | 1 +
.../data/features/css-at-counter-style.js | 1 +
.../data/features/css-autofill.js | 1 +
.../data/features/css-backdrop-filter.js | 1 +
.../data/features/css-background-offsets.js | 1 +
.../data/features/css-backgroundblendmode.js | 1 +
.../data/features/css-boxdecorationbreak.js | 1 +
.../data/features/css-boxshadow.js | 1 +
.../caniuse-lite/data/features/css-canvas.js | 1 +
.../data/features/css-caret-color.js | 1 +
.../data/features/css-cascade-layers.js | 1 +
.../data/features/css-case-insensitive.js | 1 +
.../data/features/css-clip-path.js | 1 +
.../data/features/css-color-adjust.js | 1 +
.../data/features/css-color-function.js | 1 +
.../data/features/css-conic-gradients.js | 1 +
.../data/features/css-container-queries.js | 1 +
.../data/features/css-containment.js | 1 +
.../data/features/css-content-visibility.js | 1 +
.../data/features/css-counters.js | 1 +
.../data/features/css-crisp-edges.js | 1 +
.../data/features/css-cross-fade.js | 1 +
.../data/features/css-default-pseudo.js | 1 +
.../data/features/css-descendant-gtgt.js | 1 +
.../data/features/css-deviceadaptation.js | 1 +
.../data/features/css-dir-pseudo.js | 1 +
.../data/features/css-display-contents.js | 1 +
.../data/features/css-element-function.js | 1 +
.../data/features/css-env-function.js | 1 +
.../data/features/css-exclusions.js | 1 +
.../data/features/css-featurequeries.js | 1 +
.../data/features/css-file-selector-button.js | 1 +
.../data/features/css-filter-function.js | 1 +
.../caniuse-lite/data/features/css-filters.js | 1 +
.../data/features/css-first-letter.js | 1 +
.../data/features/css-first-line.js | 1 +
.../caniuse-lite/data/features/css-fixed.js | 1 +
.../data/features/css-focus-visible.js | 1 +
.../data/features/css-focus-within.js | 1 +
.../data/features/css-font-palette.js | 1 +
.../features/css-font-rendering-controls.js | 1 +
.../data/features/css-font-stretch.js | 1 +
.../data/features/css-gencontent.js | 1 +
.../data/features/css-gradients.js | 1 +
.../caniuse-lite/data/features/css-grid.js | 1 +
.../data/features/css-hanging-punctuation.js | 1 +
.../caniuse-lite/data/features/css-has.js | 1 +
.../data/features/css-hyphenate.js | 1 +
.../caniuse-lite/data/features/css-hyphens.js | 1 +
.../data/features/css-image-orientation.js | 1 +
.../data/features/css-image-set.js | 1 +
.../data/features/css-in-out-of-range.js | 1 +
.../data/features/css-indeterminate-pseudo.js | 1 +
.../data/features/css-initial-letter.js | 1 +
.../data/features/css-initial-value.js | 1 +
.../caniuse-lite/data/features/css-lch-lab.js | 1 +
.../data/features/css-letter-spacing.js | 1 +
.../data/features/css-line-clamp.js | 1 +
.../data/features/css-logical-props.js | 1 +
.../data/features/css-marker-pseudo.js | 1 +
.../caniuse-lite/data/features/css-masks.js | 1 +
.../data/features/css-matches-pseudo.js | 1 +
.../data/features/css-math-functions.js | 1 +
.../data/features/css-media-interaction.js | 1 +
.../data/features/css-media-resolution.js | 1 +
.../data/features/css-media-scripting.js | 1 +
.../data/features/css-mediaqueries.js | 1 +
.../data/features/css-mixblendmode.js | 1 +
.../data/features/css-motion-paths.js | 1 +
.../data/features/css-namespaces.js | 1 +
.../caniuse-lite/data/features/css-nesting.js | 1 +
.../data/features/css-not-sel-list.js | 1 +
.../data/features/css-nth-child-of.js | 1 +
.../caniuse-lite/data/features/css-opacity.js | 1 +
.../data/features/css-optional-pseudo.js | 1 +
.../data/features/css-overflow-anchor.js | 1 +
.../data/features/css-overflow-overlay.js | 1 +
.../data/features/css-overflow.js | 1 +
.../data/features/css-overscroll-behavior.js | 1 +
.../data/features/css-page-break.js | 1 +
.../data/features/css-paged-media.js | 1 +
.../data/features/css-paint-api.js | 1 +
.../data/features/css-placeholder-shown.js | 1 +
.../data/features/css-placeholder.js | 1 +
.../data/features/css-read-only-write.js | 1 +
.../data/features/css-rebeccapurple.js | 1 +
.../data/features/css-reflections.js | 1 +
.../caniuse-lite/data/features/css-regions.js | 1 +
.../data/features/css-repeating-gradients.js | 1 +
.../caniuse-lite/data/features/css-resize.js | 1 +
.../data/features/css-revert-value.js | 1 +
.../data/features/css-rrggbbaa.js | 1 +
.../data/features/css-scroll-behavior.js | 1 +
.../data/features/css-scroll-timeline.js | 1 +
.../data/features/css-scrollbar.js | 1 +
.../caniuse-lite/data/features/css-sel2.js | 1 +
.../caniuse-lite/data/features/css-sel3.js | 1 +
.../data/features/css-selection.js | 1 +
.../caniuse-lite/data/features/css-shapes.js | 1 +
.../data/features/css-snappoints.js | 1 +
.../caniuse-lite/data/features/css-sticky.js | 1 +
.../caniuse-lite/data/features/css-subgrid.js | 1 +
.../data/features/css-supports-api.js | 1 +
.../caniuse-lite/data/features/css-table.js | 1 +
.../data/features/css-text-align-last.js | 1 +
.../data/features/css-text-indent.js | 1 +
.../data/features/css-text-justify.js | 1 +
.../data/features/css-text-orientation.js | 1 +
.../data/features/css-text-spacing.js | 1 +
.../data/features/css-textshadow.js | 1 +
.../data/features/css-touch-action-2.js | 1 +
.../data/features/css-touch-action.js | 1 +
.../data/features/css-transitions.js | 1 +
.../data/features/css-unicode-bidi.js | 1 +
.../data/features/css-unset-value.js | 1 +
.../data/features/css-variables.js | 1 +
.../data/features/css-when-else.js | 1 +
.../data/features/css-widows-orphans.js | 1 +
.../data/features/css-width-stretch.js | 1 +
.../data/features/css-writing-mode.js | 1 +
.../caniuse-lite/data/features/css-zoom.js | 1 +
.../caniuse-lite/data/features/css3-attr.js | 1 +
.../data/features/css3-boxsizing.js | 1 +
.../caniuse-lite/data/features/css3-colors.js | 1 +
.../data/features/css3-cursors-grab.js | 1 +
.../data/features/css3-cursors-newer.js | 1 +
.../data/features/css3-cursors.js | 1 +
.../data/features/css3-tabsize.js | 1 +
.../data/features/currentcolor.js | 1 +
.../data/features/custom-elements.js | 1 +
.../data/features/custom-elementsv1.js | 1 +
.../caniuse-lite/data/features/customevent.js | 1 +
.../caniuse-lite/data/features/datalist.js | 1 +
.../caniuse-lite/data/features/dataset.js | 1 +
.../caniuse-lite/data/features/datauri.js | 1 +
.../data/features/date-tolocaledatestring.js | 1 +
.../caniuse-lite/data/features/decorators.js | 1 +
.../caniuse-lite/data/features/details.js | 1 +
.../data/features/deviceorientation.js | 1 +
.../data/features/devicepixelratio.js | 1 +
.../caniuse-lite/data/features/dialog.js | 1 +
.../data/features/dispatchevent.js | 1 +
.../caniuse-lite/data/features/dnssec.js | 1 +
.../data/features/do-not-track.js | 1 +
.../data/features/document-currentscript.js | 1 +
.../data/features/document-evaluate-xpath.js | 1 +
.../data/features/document-execcommand.js | 1 +
.../data/features/document-policy.js | 1 +
.../features/document-scrollingelement.js | 1 +
.../data/features/documenthead.js | 1 +
.../data/features/dom-manip-convenience.js | 1 +
.../caniuse-lite/data/features/dom-range.js | 1 +
.../data/features/domcontentloaded.js | 1 +
.../features/domfocusin-domfocusout-events.js | 1 +
.../caniuse-lite/data/features/dommatrix.js | 1 +
.../caniuse-lite/data/features/download.js | 1 +
.../caniuse-lite/data/features/dragndrop.js | 1 +
.../data/features/element-closest.js | 1 +
.../data/features/element-from-point.js | 1 +
.../data/features/element-scroll-methods.js | 1 +
.../caniuse-lite/data/features/eme.js | 1 +
.../caniuse-lite/data/features/eot.js | 1 +
.../caniuse-lite/data/features/es5.js | 1 +
.../caniuse-lite/data/features/es6-class.js | 1 +
.../data/features/es6-generators.js | 1 +
.../features/es6-module-dynamic-import.js | 1 +
.../caniuse-lite/data/features/es6-module.js | 1 +
.../caniuse-lite/data/features/es6-number.js | 1 +
.../data/features/es6-string-includes.js | 1 +
.../caniuse-lite/data/features/es6.js | 1 +
.../caniuse-lite/data/features/eventsource.js | 1 +
.../data/features/extended-system-fonts.js | 1 +
.../data/features/feature-policy.js | 1 +
.../caniuse-lite/data/features/fetch.js | 1 +
.../data/features/fieldset-disabled.js | 1 +
.../caniuse-lite/data/features/fileapi.js | 1 +
.../caniuse-lite/data/features/filereader.js | 1 +
.../data/features/filereadersync.js | 1 +
.../caniuse-lite/data/features/filesystem.js | 1 +
.../caniuse-lite/data/features/flac.js | 1 +
.../caniuse-lite/data/features/flexbox-gap.js | 1 +
.../caniuse-lite/data/features/flexbox.js | 1 +
.../caniuse-lite/data/features/flow-root.js | 1 +
.../data/features/focusin-focusout-events.js | 1 +
.../features/focusoptions-preventscroll.js | 1 +
.../data/features/font-family-system-ui.js | 1 +
.../data/features/font-feature.js | 1 +
.../data/features/font-kerning.js | 1 +
.../data/features/font-loading.js | 1 +
.../data/features/font-metrics-overrides.js | 1 +
.../data/features/font-size-adjust.js | 1 +
.../caniuse-lite/data/features/font-smooth.js | 1 +
.../data/features/font-unicode-range.js | 1 +
.../data/features/font-variant-alternates.js | 1 +
.../data/features/font-variant-east-asian.js | 1 +
.../data/features/font-variant-numeric.js | 1 +
.../caniuse-lite/data/features/fontface.js | 1 +
.../data/features/form-attribute.js | 1 +
.../data/features/form-submit-attributes.js | 1 +
.../data/features/form-validation.js | 1 +
.../caniuse-lite/data/features/forms.js | 1 +
.../caniuse-lite/data/features/fullscreen.js | 1 +
.../caniuse-lite/data/features/gamepad.js | 1 +
.../caniuse-lite/data/features/geolocation.js | 1 +
.../data/features/getboundingclientrect.js | 1 +
.../data/features/getcomputedstyle.js | 1 +
.../data/features/getelementsbyclassname.js | 1 +
.../data/features/getrandomvalues.js | 1 +
.../caniuse-lite/data/features/gyroscope.js | 1 +
.../data/features/hardwareconcurrency.js | 1 +
.../caniuse-lite/data/features/hashchange.js | 1 +
.../caniuse-lite/data/features/heif.js | 1 +
.../caniuse-lite/data/features/hevc.js | 1 +
.../caniuse-lite/data/features/hidden.js | 1 +
.../data/features/high-resolution-time.js | 1 +
.../caniuse-lite/data/features/history.js | 1 +
.../data/features/html-media-capture.js | 1 +
.../data/features/html5semantic.js | 1 +
.../data/features/http-live-streaming.js | 1 +
.../caniuse-lite/data/features/http2.js | 1 +
.../caniuse-lite/data/features/http3.js | 1 +
.../data/features/iframe-sandbox.js | 1 +
.../data/features/iframe-seamless.js | 1 +
.../data/features/iframe-srcdoc.js | 1 +
.../data/features/imagecapture.js | 1 +
.../caniuse-lite/data/features/ime.js | 1 +
.../img-naturalwidth-naturalheight.js | 1 +
.../caniuse-lite/data/features/import-maps.js | 1 +
.../caniuse-lite/data/features/imports.js | 1 +
.../data/features/indeterminate-checkbox.js | 1 +
.../caniuse-lite/data/features/indexeddb.js | 1 +
.../caniuse-lite/data/features/indexeddb2.js | 1 +
.../data/features/inline-block.js | 1 +
.../caniuse-lite/data/features/innertext.js | 1 +
.../data/features/input-autocomplete-onoff.js | 1 +
.../caniuse-lite/data/features/input-color.js | 1 +
.../data/features/input-datetime.js | 1 +
.../data/features/input-email-tel-url.js | 1 +
.../caniuse-lite/data/features/input-event.js | 1 +
.../data/features/input-file-accept.js | 1 +
.../data/features/input-file-directory.js | 1 +
.../data/features/input-file-multiple.js | 1 +
.../data/features/input-inputmode.js | 1 +
.../data/features/input-minlength.js | 1 +
.../data/features/input-number.js | 1 +
.../data/features/input-pattern.js | 1 +
.../data/features/input-placeholder.js | 1 +
.../caniuse-lite/data/features/input-range.js | 1 +
.../data/features/input-search.js | 1 +
.../data/features/input-selection.js | 1 +
.../data/features/insert-adjacent.js | 1 +
.../data/features/insertadjacenthtml.js | 1 +
.../data/features/internationalization.js | 1 +
.../data/features/intersectionobserver-v2.js | 1 +
.../data/features/intersectionobserver.js | 1 +
.../data/features/intl-pluralrules.js | 1 +
.../data/features/intrinsic-width.js | 1 +
.../caniuse-lite/data/features/jpeg2000.js | 1 +
.../caniuse-lite/data/features/jpegxl.js | 1 +
.../caniuse-lite/data/features/jpegxr.js | 1 +
.../data/features/js-regexp-lookbehind.js | 1 +
.../caniuse-lite/data/features/json.js | 1 +
.../features/justify-content-space-evenly.js | 1 +
.../data/features/kerning-pairs-ligatures.js | 1 +
.../data/features/keyboardevent-charcode.js | 1 +
.../data/features/keyboardevent-code.js | 1 +
.../keyboardevent-getmodifierstate.js | 1 +
.../data/features/keyboardevent-key.js | 1 +
.../data/features/keyboardevent-location.js | 1 +
.../data/features/keyboardevent-which.js | 1 +
.../caniuse-lite/data/features/lazyload.js | 1 +
.../caniuse-lite/data/features/let.js | 1 +
.../data/features/link-icon-png.js | 1 +
.../data/features/link-icon-svg.js | 1 +
.../data/features/link-rel-dns-prefetch.js | 1 +
.../data/features/link-rel-modulepreload.js | 1 +
.../data/features/link-rel-preconnect.js | 1 +
.../data/features/link-rel-prefetch.js | 1 +
.../data/features/link-rel-preload.js | 1 +
.../data/features/link-rel-prerender.js | 1 +
.../data/features/loading-lazy-attr.js | 1 +
.../data/features/localecompare.js | 1 +
.../data/features/magnetometer.js | 1 +
.../data/features/matchesselector.js | 1 +
.../caniuse-lite/data/features/matchmedia.js | 1 +
.../caniuse-lite/data/features/mathml.js | 1 +
.../caniuse-lite/data/features/maxlength.js | 1 +
.../data/features/media-attribute.js | 1 +
.../data/features/media-fragments.js | 1 +
.../data/features/media-session-api.js | 1 +
.../data/features/mediacapture-fromelement.js | 1 +
.../data/features/mediarecorder.js | 1 +
.../caniuse-lite/data/features/mediasource.js | 1 +
.../caniuse-lite/data/features/menu.js | 1 +
.../data/features/meta-theme-color.js | 1 +
.../caniuse-lite/data/features/meter.js | 1 +
.../caniuse-lite/data/features/midi.js | 1 +
.../caniuse-lite/data/features/minmaxwh.js | 1 +
.../caniuse-lite/data/features/mp3.js | 1 +
.../caniuse-lite/data/features/mpeg-dash.js | 1 +
.../caniuse-lite/data/features/mpeg4.js | 1 +
.../data/features/multibackgrounds.js | 1 +
.../caniuse-lite/data/features/multicolumn.js | 1 +
.../data/features/mutation-events.js | 1 +
.../data/features/mutationobserver.js | 1 +
.../data/features/namevalue-storage.js | 1 +
.../data/features/native-filesystem-api.js | 1 +
.../caniuse-lite/data/features/nav-timing.js | 1 +
.../data/features/navigator-language.js | 1 +
.../caniuse-lite/data/features/netinfo.js | 1 +
.../data/features/notifications.js | 1 +
.../data/features/object-entries.js | 1 +
.../caniuse-lite/data/features/object-fit.js | 1 +
.../data/features/object-observe.js | 1 +
.../data/features/object-values.js | 1 +
.../caniuse-lite/data/features/objectrtc.js | 1 +
.../data/features/offline-apps.js | 1 +
.../data/features/offscreencanvas.js | 1 +
.../caniuse-lite/data/features/ogg-vorbis.js | 1 +
.../caniuse-lite/data/features/ogv.js | 1 +
.../caniuse-lite/data/features/ol-reversed.js | 1 +
.../data/features/once-event-listener.js | 1 +
.../data/features/online-status.js | 1 +
.../caniuse-lite/data/features/opus.js | 1 +
.../data/features/orientation-sensor.js | 1 +
.../caniuse-lite/data/features/outline.js | 1 +
.../data/features/pad-start-end.js | 1 +
.../data/features/page-transition-events.js | 1 +
.../data/features/pagevisibility.js | 1 +
.../data/features/passive-event-listener.js | 1 +
.../data/features/passwordrules.js | 1 +
.../caniuse-lite/data/features/path2d.js | 1 +
.../data/features/payment-request.js | 1 +
.../caniuse-lite/data/features/pdf-viewer.js | 1 +
.../data/features/permissions-api.js | 1 +
.../data/features/permissions-policy.js | 1 +
.../data/features/picture-in-picture.js | 1 +
.../caniuse-lite/data/features/picture.js | 1 +
.../caniuse-lite/data/features/ping.js | 1 +
.../caniuse-lite/data/features/png-alpha.js | 1 +
.../data/features/pointer-events.js | 1 +
.../caniuse-lite/data/features/pointer.js | 1 +
.../caniuse-lite/data/features/pointerlock.js | 1 +
.../caniuse-lite/data/features/portals.js | 1 +
.../data/features/prefers-color-scheme.js | 1 +
.../data/features/prefers-reduced-motion.js | 1 +
.../data/features/private-class-fields.js | 1 +
.../features/private-methods-and-accessors.js | 1 +
.../caniuse-lite/data/features/progress.js | 1 +
.../data/features/promise-finally.js | 1 +
.../caniuse-lite/data/features/promises.js | 1 +
.../caniuse-lite/data/features/proximity.js | 1 +
.../caniuse-lite/data/features/proxy.js | 1 +
.../data/features/public-class-fields.js | 1 +
.../data/features/publickeypinning.js | 1 +
.../caniuse-lite/data/features/push-api.js | 1 +
.../data/features/queryselector.js | 1 +
.../data/features/readonly-attr.js | 1 +
.../data/features/referrer-policy.js | 1 +
.../data/features/registerprotocolhandler.js | 1 +
.../data/features/rel-noopener.js | 1 +
.../data/features/rel-noreferrer.js | 1 +
.../caniuse-lite/data/features/rellist.js | 1 +
.../caniuse-lite/data/features/rem.js | 1 +
.../data/features/requestanimationframe.js | 1 +
.../data/features/requestidlecallback.js | 1 +
.../data/features/resizeobserver.js | 1 +
.../data/features/resource-timing.js | 1 +
.../data/features/rest-parameters.js | 1 +
.../data/features/rtcpeerconnection.js | 1 +
.../caniuse-lite/data/features/ruby.js | 1 +
.../caniuse-lite/data/features/run-in.js | 1 +
.../features/same-site-cookie-attribute.js | 1 +
.../data/features/screen-orientation.js | 1 +
.../data/features/script-async.js | 1 +
.../data/features/script-defer.js | 1 +
.../data/features/scrollintoview.js | 1 +
.../data/features/scrollintoviewifneeded.js | 1 +
.../caniuse-lite/data/features/sdch.js | 1 +
.../data/features/selection-api.js | 1 +
.../data/features/server-timing.js | 1 +
.../data/features/serviceworkers.js | 1 +
.../data/features/setimmediate.js | 1 +
.../caniuse-lite/data/features/sha-2.js | 1 +
.../caniuse-lite/data/features/shadowdom.js | 1 +
.../caniuse-lite/data/features/shadowdomv1.js | 1 +
.../data/features/sharedarraybuffer.js | 1 +
.../data/features/sharedworkers.js | 1 +
.../caniuse-lite/data/features/sni.js | 1 +
.../caniuse-lite/data/features/spdy.js | 1 +
.../data/features/speech-recognition.js | 1 +
.../data/features/speech-synthesis.js | 1 +
.../data/features/spellcheck-attribute.js | 1 +
.../caniuse-lite/data/features/sql-storage.js | 1 +
.../caniuse-lite/data/features/srcset.js | 1 +
.../caniuse-lite/data/features/stream.js | 1 +
.../caniuse-lite/data/features/streams.js | 1 +
.../data/features/stricttransportsecurity.js | 1 +
.../data/features/style-scoped.js | 1 +
.../data/features/subresource-integrity.js | 1 +
.../caniuse-lite/data/features/svg-css.js | 1 +
.../caniuse-lite/data/features/svg-filters.js | 1 +
.../caniuse-lite/data/features/svg-fonts.js | 1 +
.../data/features/svg-fragment.js | 1 +
.../caniuse-lite/data/features/svg-html.js | 1 +
.../caniuse-lite/data/features/svg-html5.js | 1 +
.../caniuse-lite/data/features/svg-img.js | 1 +
.../caniuse-lite/data/features/svg-smil.js | 1 +
.../caniuse-lite/data/features/svg.js | 1 +
.../caniuse-lite/data/features/sxg.js | 1 +
.../data/features/tabindex-attr.js | 1 +
.../data/features/template-literals.js | 1 +
.../caniuse-lite/data/features/template.js | 1 +
.../caniuse-lite/data/features/temporal.js | 1 +
.../caniuse-lite/data/features/testfeat.js | 1 +
.../data/features/text-decoration.js | 1 +
.../data/features/text-emphasis.js | 1 +
.../data/features/text-overflow.js | 1 +
.../data/features/text-size-adjust.js | 1 +
.../caniuse-lite/data/features/text-stroke.js | 1 +
.../data/features/text-underline-offset.js | 1 +
.../caniuse-lite/data/features/textcontent.js | 1 +
.../caniuse-lite/data/features/textencoder.js | 1 +
.../caniuse-lite/data/features/tls1-1.js | 1 +
.../caniuse-lite/data/features/tls1-2.js | 1 +
.../caniuse-lite/data/features/tls1-3.js | 1 +
.../data/features/token-binding.js | 1 +
.../caniuse-lite/data/features/touch.js | 1 +
.../data/features/transforms2d.js | 1 +
.../data/features/transforms3d.js | 1 +
.../data/features/trusted-types.js | 1 +
.../caniuse-lite/data/features/ttf.js | 1 +
.../caniuse-lite/data/features/typedarrays.js | 1 +
.../caniuse-lite/data/features/u2f.js | 1 +
.../data/features/unhandledrejection.js | 1 +
.../data/features/upgradeinsecurerequests.js | 1 +
.../features/url-scroll-to-text-fragment.js | 1 +
.../caniuse-lite/data/features/url.js | 1 +
.../data/features/urlsearchparams.js | 1 +
.../caniuse-lite/data/features/use-strict.js | 1 +
.../data/features/user-select-none.js | 1 +
.../caniuse-lite/data/features/user-timing.js | 1 +
.../data/features/variable-fonts.js | 1 +
.../data/features/vector-effect.js | 1 +
.../caniuse-lite/data/features/vibration.js | 1 +
.../caniuse-lite/data/features/video.js | 1 +
.../caniuse-lite/data/features/videotracks.js | 1 +
.../data/features/viewport-unit-variants.js | 1 +
.../data/features/viewport-units.js | 1 +
.../caniuse-lite/data/features/wai-aria.js | 1 +
.../caniuse-lite/data/features/wake-lock.js | 1 +
.../caniuse-lite/data/features/wasm.js | 1 +
.../caniuse-lite/data/features/wav.js | 1 +
.../caniuse-lite/data/features/wbr-element.js | 1 +
.../data/features/web-animation.js | 1 +
.../data/features/web-app-manifest.js | 1 +
.../data/features/web-bluetooth.js | 1 +
.../caniuse-lite/data/features/web-serial.js | 1 +
.../caniuse-lite/data/features/web-share.js | 1 +
.../caniuse-lite/data/features/webauthn.js | 1 +
.../caniuse-lite/data/features/webgl.js | 1 +
.../caniuse-lite/data/features/webgl2.js | 1 +
.../caniuse-lite/data/features/webgpu.js | 1 +
.../caniuse-lite/data/features/webhid.js | 1 +
.../data/features/webkit-user-drag.js | 1 +
.../caniuse-lite/data/features/webm.js | 1 +
.../caniuse-lite/data/features/webnfc.js | 1 +
.../caniuse-lite/data/features/webp.js | 1 +
.../caniuse-lite/data/features/websockets.js | 1 +
.../caniuse-lite/data/features/webusb.js | 1 +
.../caniuse-lite/data/features/webvr.js | 1 +
.../caniuse-lite/data/features/webvtt.js | 1 +
.../caniuse-lite/data/features/webworkers.js | 1 +
.../caniuse-lite/data/features/webxr.js | 1 +
.../caniuse-lite/data/features/will-change.js | 1 +
.../caniuse-lite/data/features/woff.js | 1 +
.../caniuse-lite/data/features/woff2.js | 1 +
.../caniuse-lite/data/features/word-break.js | 1 +
.../caniuse-lite/data/features/wordwrap.js | 1 +
.../data/features/x-doc-messaging.js | 1 +
.../data/features/x-frame-options.js | 1 +
.../caniuse-lite/data/features/xhr2.js | 1 +
.../caniuse-lite/data/features/xhtml.js | 1 +
.../caniuse-lite/data/features/xhtmlsmil.js | 1 +
.../data/features/xml-serializer.js | 1 +
.../caniuse-lite/data/regions/AD.js | 1 +
.../caniuse-lite/data/regions/AE.js | 1 +
.../caniuse-lite/data/regions/AF.js | 1 +
.../caniuse-lite/data/regions/AG.js | 1 +
.../caniuse-lite/data/regions/AI.js | 1 +
.../caniuse-lite/data/regions/AL.js | 1 +
.../caniuse-lite/data/regions/AM.js | 1 +
.../caniuse-lite/data/regions/AO.js | 1 +
.../caniuse-lite/data/regions/AR.js | 1 +
.../caniuse-lite/data/regions/AS.js | 1 +
.../caniuse-lite/data/regions/AT.js | 1 +
.../caniuse-lite/data/regions/AU.js | 1 +
.../caniuse-lite/data/regions/AW.js | 1 +
.../caniuse-lite/data/regions/AX.js | 1 +
.../caniuse-lite/data/regions/AZ.js | 1 +
.../caniuse-lite/data/regions/BA.js | 1 +
.../caniuse-lite/data/regions/BB.js | 1 +
.../caniuse-lite/data/regions/BD.js | 1 +
.../caniuse-lite/data/regions/BE.js | 1 +
.../caniuse-lite/data/regions/BF.js | 1 +
.../caniuse-lite/data/regions/BG.js | 1 +
.../caniuse-lite/data/regions/BH.js | 1 +
.../caniuse-lite/data/regions/BI.js | 1 +
.../caniuse-lite/data/regions/BJ.js | 1 +
.../caniuse-lite/data/regions/BM.js | 1 +
.../caniuse-lite/data/regions/BN.js | 1 +
.../caniuse-lite/data/regions/BO.js | 1 +
.../caniuse-lite/data/regions/BR.js | 1 +
.../caniuse-lite/data/regions/BS.js | 1 +
.../caniuse-lite/data/regions/BT.js | 1 +
.../caniuse-lite/data/regions/BW.js | 1 +
.../caniuse-lite/data/regions/BY.js | 1 +
.../caniuse-lite/data/regions/BZ.js | 1 +
.../caniuse-lite/data/regions/CA.js | 1 +
.../caniuse-lite/data/regions/CD.js | 1 +
.../caniuse-lite/data/regions/CF.js | 1 +
.../caniuse-lite/data/regions/CG.js | 1 +
.../caniuse-lite/data/regions/CH.js | 1 +
.../caniuse-lite/data/regions/CI.js | 1 +
.../caniuse-lite/data/regions/CK.js | 1 +
.../caniuse-lite/data/regions/CL.js | 1 +
.../caniuse-lite/data/regions/CM.js | 1 +
.../caniuse-lite/data/regions/CN.js | 1 +
.../caniuse-lite/data/regions/CO.js | 1 +
.../caniuse-lite/data/regions/CR.js | 1 +
.../caniuse-lite/data/regions/CU.js | 1 +
.../caniuse-lite/data/regions/CV.js | 1 +
.../caniuse-lite/data/regions/CX.js | 1 +
.../caniuse-lite/data/regions/CY.js | 1 +
.../caniuse-lite/data/regions/CZ.js | 1 +
.../caniuse-lite/data/regions/DE.js | 1 +
.../caniuse-lite/data/regions/DJ.js | 1 +
.../caniuse-lite/data/regions/DK.js | 1 +
.../caniuse-lite/data/regions/DM.js | 1 +
.../caniuse-lite/data/regions/DO.js | 1 +
.../caniuse-lite/data/regions/DZ.js | 1 +
.../caniuse-lite/data/regions/EC.js | 1 +
.../caniuse-lite/data/regions/EE.js | 1 +
.../caniuse-lite/data/regions/EG.js | 1 +
.../caniuse-lite/data/regions/ER.js | 1 +
.../caniuse-lite/data/regions/ES.js | 1 +
.../caniuse-lite/data/regions/ET.js | 1 +
.../caniuse-lite/data/regions/FI.js | 1 +
.../caniuse-lite/data/regions/FJ.js | 1 +
.../caniuse-lite/data/regions/FK.js | 1 +
.../caniuse-lite/data/regions/FM.js | 1 +
.../caniuse-lite/data/regions/FO.js | 1 +
.../caniuse-lite/data/regions/FR.js | 1 +
.../caniuse-lite/data/regions/GA.js | 1 +
.../caniuse-lite/data/regions/GB.js | 1 +
.../caniuse-lite/data/regions/GD.js | 1 +
.../caniuse-lite/data/regions/GE.js | 1 +
.../caniuse-lite/data/regions/GF.js | 1 +
.../caniuse-lite/data/regions/GG.js | 1 +
.../caniuse-lite/data/regions/GH.js | 1 +
.../caniuse-lite/data/regions/GI.js | 1 +
.../caniuse-lite/data/regions/GL.js | 1 +
.../caniuse-lite/data/regions/GM.js | 1 +
.../caniuse-lite/data/regions/GN.js | 1 +
.../caniuse-lite/data/regions/GP.js | 1 +
.../caniuse-lite/data/regions/GQ.js | 1 +
.../caniuse-lite/data/regions/GR.js | 1 +
.../caniuse-lite/data/regions/GT.js | 1 +
.../caniuse-lite/data/regions/GU.js | 1 +
.../caniuse-lite/data/regions/GW.js | 1 +
.../caniuse-lite/data/regions/GY.js | 1 +
.../caniuse-lite/data/regions/HK.js | 1 +
.../caniuse-lite/data/regions/HN.js | 1 +
.../caniuse-lite/data/regions/HR.js | 1 +
.../caniuse-lite/data/regions/HT.js | 1 +
.../caniuse-lite/data/regions/HU.js | 1 +
.../caniuse-lite/data/regions/ID.js | 1 +
.../caniuse-lite/data/regions/IE.js | 1 +
.../caniuse-lite/data/regions/IL.js | 1 +
.../caniuse-lite/data/regions/IM.js | 1 +
.../caniuse-lite/data/regions/IN.js | 1 +
.../caniuse-lite/data/regions/IQ.js | 1 +
.../caniuse-lite/data/regions/IR.js | 1 +
.../caniuse-lite/data/regions/IS.js | 1 +
.../caniuse-lite/data/regions/IT.js | 1 +
.../caniuse-lite/data/regions/JE.js | 1 +
.../caniuse-lite/data/regions/JM.js | 1 +
.../caniuse-lite/data/regions/JO.js | 1 +
.../caniuse-lite/data/regions/JP.js | 1 +
.../caniuse-lite/data/regions/KE.js | 1 +
.../caniuse-lite/data/regions/KG.js | 1 +
.../caniuse-lite/data/regions/KH.js | 1 +
.../caniuse-lite/data/regions/KI.js | 1 +
.../caniuse-lite/data/regions/KM.js | 1 +
.../caniuse-lite/data/regions/KN.js | 1 +
.../caniuse-lite/data/regions/KP.js | 1 +
.../caniuse-lite/data/regions/KR.js | 1 +
.../caniuse-lite/data/regions/KW.js | 1 +
.../caniuse-lite/data/regions/KY.js | 1 +
.../caniuse-lite/data/regions/KZ.js | 1 +
.../caniuse-lite/data/regions/LA.js | 1 +
.../caniuse-lite/data/regions/LB.js | 1 +
.../caniuse-lite/data/regions/LC.js | 1 +
.../caniuse-lite/data/regions/LI.js | 1 +
.../caniuse-lite/data/regions/LK.js | 1 +
.../caniuse-lite/data/regions/LR.js | 1 +
.../caniuse-lite/data/regions/LS.js | 1 +
.../caniuse-lite/data/regions/LT.js | 1 +
.../caniuse-lite/data/regions/LU.js | 1 +
.../caniuse-lite/data/regions/LV.js | 1 +
.../caniuse-lite/data/regions/LY.js | 1 +
.../caniuse-lite/data/regions/MA.js | 1 +
.../caniuse-lite/data/regions/MC.js | 1 +
.../caniuse-lite/data/regions/MD.js | 1 +
.../caniuse-lite/data/regions/ME.js | 1 +
.../caniuse-lite/data/regions/MG.js | 1 +
.../caniuse-lite/data/regions/MH.js | 1 +
.../caniuse-lite/data/regions/MK.js | 1 +
.../caniuse-lite/data/regions/ML.js | 1 +
.../caniuse-lite/data/regions/MM.js | 1 +
.../caniuse-lite/data/regions/MN.js | 1 +
.../caniuse-lite/data/regions/MO.js | 1 +
.../caniuse-lite/data/regions/MP.js | 1 +
.../caniuse-lite/data/regions/MQ.js | 1 +
.../caniuse-lite/data/regions/MR.js | 1 +
.../caniuse-lite/data/regions/MS.js | 1 +
.../caniuse-lite/data/regions/MT.js | 1 +
.../caniuse-lite/data/regions/MU.js | 1 +
.../caniuse-lite/data/regions/MV.js | 1 +
.../caniuse-lite/data/regions/MW.js | 1 +
.../caniuse-lite/data/regions/MX.js | 1 +
.../caniuse-lite/data/regions/MY.js | 1 +
.../caniuse-lite/data/regions/MZ.js | 1 +
.../caniuse-lite/data/regions/NA.js | 1 +
.../caniuse-lite/data/regions/NC.js | 1 +
.../caniuse-lite/data/regions/NE.js | 1 +
.../caniuse-lite/data/regions/NF.js | 1 +
.../caniuse-lite/data/regions/NG.js | 1 +
.../caniuse-lite/data/regions/NI.js | 1 +
.../caniuse-lite/data/regions/NL.js | 1 +
.../caniuse-lite/data/regions/NO.js | 1 +
.../caniuse-lite/data/regions/NP.js | 1 +
.../caniuse-lite/data/regions/NR.js | 1 +
.../caniuse-lite/data/regions/NU.js | 1 +
.../caniuse-lite/data/regions/NZ.js | 1 +
.../caniuse-lite/data/regions/OM.js | 1 +
.../caniuse-lite/data/regions/PA.js | 1 +
.../caniuse-lite/data/regions/PE.js | 1 +
.../caniuse-lite/data/regions/PF.js | 1 +
.../caniuse-lite/data/regions/PG.js | 1 +
.../caniuse-lite/data/regions/PH.js | 1 +
.../caniuse-lite/data/regions/PK.js | 1 +
.../caniuse-lite/data/regions/PL.js | 1 +
.../caniuse-lite/data/regions/PM.js | 1 +
.../caniuse-lite/data/regions/PN.js | 1 +
.../caniuse-lite/data/regions/PR.js | 1 +
.../caniuse-lite/data/regions/PS.js | 1 +
.../caniuse-lite/data/regions/PT.js | 1 +
.../caniuse-lite/data/regions/PW.js | 1 +
.../caniuse-lite/data/regions/PY.js | 1 +
.../caniuse-lite/data/regions/QA.js | 1 +
.../caniuse-lite/data/regions/RE.js | 1 +
.../caniuse-lite/data/regions/RO.js | 1 +
.../caniuse-lite/data/regions/RS.js | 1 +
.../caniuse-lite/data/regions/RU.js | 1 +
.../caniuse-lite/data/regions/RW.js | 1 +
.../caniuse-lite/data/regions/SA.js | 1 +
.../caniuse-lite/data/regions/SB.js | 1 +
.../caniuse-lite/data/regions/SC.js | 1 +
.../caniuse-lite/data/regions/SD.js | 1 +
.../caniuse-lite/data/regions/SE.js | 1 +
.../caniuse-lite/data/regions/SG.js | 1 +
.../caniuse-lite/data/regions/SH.js | 1 +
.../caniuse-lite/data/regions/SI.js | 1 +
.../caniuse-lite/data/regions/SK.js | 1 +
.../caniuse-lite/data/regions/SL.js | 1 +
.../caniuse-lite/data/regions/SM.js | 1 +
.../caniuse-lite/data/regions/SN.js | 1 +
.../caniuse-lite/data/regions/SO.js | 1 +
.../caniuse-lite/data/regions/SR.js | 1 +
.../caniuse-lite/data/regions/ST.js | 1 +
.../caniuse-lite/data/regions/SV.js | 1 +
.../caniuse-lite/data/regions/SY.js | 1 +
.../caniuse-lite/data/regions/SZ.js | 1 +
.../caniuse-lite/data/regions/TC.js | 1 +
.../caniuse-lite/data/regions/TD.js | 1 +
.../caniuse-lite/data/regions/TG.js | 1 +
.../caniuse-lite/data/regions/TH.js | 1 +
.../caniuse-lite/data/regions/TJ.js | 1 +
.../caniuse-lite/data/regions/TK.js | 1 +
.../caniuse-lite/data/regions/TL.js | 1 +
.../caniuse-lite/data/regions/TM.js | 1 +
.../caniuse-lite/data/regions/TN.js | 1 +
.../caniuse-lite/data/regions/TO.js | 1 +
.../caniuse-lite/data/regions/TR.js | 1 +
.../caniuse-lite/data/regions/TT.js | 1 +
.../caniuse-lite/data/regions/TV.js | 1 +
.../caniuse-lite/data/regions/TW.js | 1 +
.../caniuse-lite/data/regions/TZ.js | 1 +
.../caniuse-lite/data/regions/UA.js | 1 +
.../caniuse-lite/data/regions/UG.js | 1 +
.../caniuse-lite/data/regions/US.js | 1 +
.../caniuse-lite/data/regions/UY.js | 1 +
.../caniuse-lite/data/regions/UZ.js | 1 +
.../caniuse-lite/data/regions/VA.js | 1 +
.../caniuse-lite/data/regions/VC.js | 1 +
.../caniuse-lite/data/regions/VE.js | 1 +
.../caniuse-lite/data/regions/VG.js | 1 +
.../caniuse-lite/data/regions/VI.js | 1 +
.../caniuse-lite/data/regions/VN.js | 1 +
.../caniuse-lite/data/regions/VU.js | 1 +
.../caniuse-lite/data/regions/WF.js | 1 +
.../caniuse-lite/data/regions/WS.js | 1 +
.../caniuse-lite/data/regions/YE.js | 1 +
.../caniuse-lite/data/regions/YT.js | 1 +
.../caniuse-lite/data/regions/ZA.js | 1 +
.../caniuse-lite/data/regions/ZM.js | 1 +
.../caniuse-lite/data/regions/ZW.js | 1 +
.../caniuse-lite/data/regions/alt-af.js | 1 +
.../caniuse-lite/data/regions/alt-an.js | 1 +
.../caniuse-lite/data/regions/alt-as.js | 1 +
.../caniuse-lite/data/regions/alt-eu.js | 1 +
.../caniuse-lite/data/regions/alt-na.js | 1 +
.../caniuse-lite/data/regions/alt-oc.js | 1 +
.../caniuse-lite/data/regions/alt-sa.js | 1 +
.../caniuse-lite/data/regions/alt-ww.js | 1 +
.../caniuse-lite/dist/lib/statuses.js | 9 +
.../caniuse-lite/dist/lib/supported.js | 9 +
.../caniuse-lite/dist/unpacker/agents.js | 47 +
.../dist/unpacker/browserVersions.js | 1 +
.../caniuse-lite/dist/unpacker/browsers.js | 1 +
.../caniuse-lite/dist/unpacker/feature.js | 48 +
.../caniuse-lite/dist/unpacker/features.js | 6 +
.../caniuse-lite/dist/unpacker/index.js | 4 +
.../caniuse-lite/dist/unpacker/region.js | 22 +
.../node_modules/caniuse-lite/package.json | 34 +
.../examples_4/node_modules/chalk/index.d.ts | 415 +
.../examples_4/node_modules/chalk/license | 9 +
.../node_modules/chalk/package.json | 68 +
.../examples_4/node_modules/chalk/readme.md | 341 +
.../node_modules/chalk/source/index.js | 229 +
.../node_modules/chalk/source/templates.js | 134 +
.../node_modules/chalk/source/util.js | 39 +
.../node_modules/char-regex/LICENSE | 21 +
.../node_modules/char-regex/README.md | 27 +
.../node_modules/char-regex/index.d.ts | 13 +
.../node_modules/char-regex/index.js | 39 +
.../node_modules/char-regex/package.json | 44 +
.../node_modules/ci-info/CHANGELOG.md | 122 +
.../examples_4/node_modules/ci-info/LICENSE | 21 +
.../examples_4/node_modules/ci-info/README.md | 118 +
.../node_modules/ci-info/index.d.ts | 62 +
.../examples_4/node_modules/ci-info/index.js | 66 +
.../node_modules/ci-info/package.json | 36 +
.../node_modules/ci-info/vendors.json | 210 +
.../cjs-module-lexer/CHANGELOG.md | 40 +
.../node_modules/cjs-module-lexer/LICENSE | 10 +
.../node_modules/cjs-module-lexer/README.md | 453 +
.../cjs-module-lexer/dist/lexer.js | 1 +
.../cjs-module-lexer/dist/lexer.mjs | 2 +
.../node_modules/cjs-module-lexer/lexer.d.ts | 7 +
.../node_modules/cjs-module-lexer/lexer.js | 1438 ++
.../cjs-module-lexer/package.json | 43 +
.../node_modules/cliui/CHANGELOG.md | 121 +
.../examples_4/node_modules/cliui/LICENSE.txt | 14 +
.../examples_4/node_modules/cliui/README.md | 141 +
.../node_modules/cliui/build/index.cjs | 302 +
.../node_modules/cliui/build/lib/index.js | 287 +
.../cliui/build/lib/string-utils.js | 27 +
.../examples_4/node_modules/cliui/index.mjs | 13 +
.../node_modules/cliui/package.json | 83 +
.../examples_4/node_modules/co/History.md | 172 +
.../examples_4/node_modules/co/LICENSE | 22 +
.../examples_4/node_modules/co/Readme.md | 212 +
.../examples_4/node_modules/co/index.js | 237 +
.../examples_4/node_modules/co/package.json | 34 +
.../collect-v8-coverage/CHANGELOG.md | 11 +
.../node_modules/collect-v8-coverage/LICENSE | 22 +
.../collect-v8-coverage/README.md | 15 +
.../collect-v8-coverage/index.d.ts | 7 +
.../node_modules/collect-v8-coverage/index.js | 37 +
.../collect-v8-coverage/package.json | 54 +
.../node_modules/color-convert/CHANGELOG.md | 54 +
.../node_modules/color-convert/LICENSE | 21 +
.../node_modules/color-convert/README.md | 68 +
.../node_modules/color-convert/conversions.js | 839 +
.../node_modules/color-convert/index.js | 81 +
.../node_modules/color-convert/package.json | 48 +
.../node_modules/color-convert/route.js | 97 +
.../node_modules/color-name/LICENSE | 8 +
.../node_modules/color-name/README.md | 11 +
.../node_modules/color-name/index.js | 152 +
.../node_modules/color-name/package.json | 28 +
.../node_modules/combined-stream/License | 19 +
.../node_modules/combined-stream/Readme.md | 138 +
.../combined-stream/lib/combined_stream.js | 208 +
.../node_modules/combined-stream/package.json | 25 +
.../node_modules/combined-stream/yarn.lock | 17 +
.../node_modules/concat-map/.travis.yml | 4 +
.../node_modules/concat-map/LICENSE | 18 +
.../node_modules/concat-map/README.markdown | 62 +
.../node_modules/concat-map/example/map.js | 6 +
.../node_modules/concat-map/index.js | 13 +
.../node_modules/concat-map/package.json | 43 +
.../node_modules/concat-map/test/map.js | 39 +
.../node_modules/convert-source-map/LICENSE | 23 +
.../node_modules/convert-source-map/README.md | 120 +
.../node_modules/convert-source-map/index.js | 136 +
.../convert-source-map/package.json | 44 +
.../node_modules/cross-spawn/CHANGELOG.md | 130 +
.../node_modules/cross-spawn/LICENSE | 21 +
.../node_modules/cross-spawn/README.md | 96 +
.../node_modules/cross-spawn/index.js | 39 +
.../node_modules/cross-spawn/lib/enoent.js | 59 +
.../node_modules/cross-spawn/lib/parse.js | 91 +
.../cross-spawn/lib/util/escape.js | 45 +
.../cross-spawn/lib/util/readShebang.js | 23 +
.../cross-spawn/lib/util/resolveCommand.js | 52 +
.../node_modules/cross-spawn/package.json | 73 +
.../examples_4/node_modules/cssom/LICENSE.txt | 20 +
.../node_modules/cssom/README.mdown | 67 +
.../node_modules/cssom/lib/CSSDocumentRule.js | 39 +
.../node_modules/cssom/lib/CSSFontFaceRule.js | 36 +
.../node_modules/cssom/lib/CSSHostRule.js | 37 +
.../node_modules/cssom/lib/CSSImportRule.js | 132 +
.../node_modules/cssom/lib/CSSKeyframeRule.js | 37 +
.../cssom/lib/CSSKeyframesRule.js | 39 +
.../node_modules/cssom/lib/CSSMediaRule.js | 41 +
.../node_modules/cssom/lib/CSSOM.js | 3 +
.../node_modules/cssom/lib/CSSRule.js | 43 +
.../cssom/lib/CSSStyleDeclaration.js | 148 +
.../node_modules/cssom/lib/CSSStyleRule.js | 190 +
.../node_modules/cssom/lib/CSSStyleSheet.js | 88 +
.../node_modules/cssom/lib/CSSSupportsRule.js | 36 +
.../node_modules/cssom/lib/CSSValue.js | 43 +
.../cssom/lib/CSSValueExpression.js | 344 +
.../node_modules/cssom/lib/MatcherList.js | 62 +
.../node_modules/cssom/lib/MediaList.js | 61 +
.../node_modules/cssom/lib/StyleSheet.js | 17 +
.../node_modules/cssom/lib/clone.js | 71 +
.../node_modules/cssom/lib/index.js | 21 +
.../node_modules/cssom/lib/parse.js | 463 +
.../node_modules/cssom/package.json | 18 +
.../examples_4/node_modules/cssstyle/LICENSE | 20 +
.../node_modules/cssstyle/README.md | 15 +
.../cssstyle/lib/CSSStyleDeclaration.js | 260 +
.../cssstyle/lib/CSSStyleDeclaration.test.js | 556 +
.../cssstyle/lib/allExtraProperties.js | 67 +
.../cssstyle/lib/allProperties.js | 462 +
.../cssstyle/lib/allWebkitProperties.js | 194 +
.../node_modules/cssstyle/lib/constants.js | 6 +
.../cssstyle/lib/implementedProperties.js | 90 +
.../cssstyle/lib/named_colors.json | 152 +
.../node_modules/cssstyle/lib/parsers.js | 722 +
.../node_modules/cssstyle/lib/parsers.test.js | 139 +
.../node_modules/cssstyle/lib/properties.js | 1833 ++
.../cssstyle/lib/properties/azimuth.js | 67 +
.../cssstyle/lib/properties/background.js | 19 +
.../lib/properties/backgroundAttachment.js | 24 +
.../lib/properties/backgroundColor.js | 36 +
.../lib/properties/backgroundImage.js | 32 +
.../lib/properties/backgroundPosition.js | 58 +
.../lib/properties/backgroundRepeat.js | 32 +
.../cssstyle/lib/properties/border.js | 33 +
.../cssstyle/lib/properties/borderBottom.js | 17 +
.../lib/properties/borderBottomColor.js | 16 +
.../lib/properties/borderBottomStyle.js | 21 +
.../lib/properties/borderBottomWidth.js | 16 +
.../cssstyle/lib/properties/borderCollapse.js | 26 +
.../cssstyle/lib/properties/borderColor.js | 30 +
.../cssstyle/lib/properties/borderLeft.js | 17 +
.../lib/properties/borderLeftColor.js | 16 +
.../lib/properties/borderLeftStyle.js | 21 +
.../lib/properties/borderLeftWidth.js | 16 +
.../cssstyle/lib/properties/borderRight.js | 17 +
.../lib/properties/borderRightColor.js | 16 +
.../lib/properties/borderRightStyle.js | 21 +
.../lib/properties/borderRightWidth.js | 16 +
.../cssstyle/lib/properties/borderSpacing.js | 41 +
.../cssstyle/lib/properties/borderStyle.js | 38 +
.../cssstyle/lib/properties/borderTop.js | 17 +
.../cssstyle/lib/properties/borderTopColor.js | 16 +
.../cssstyle/lib/properties/borderTopStyle.js | 21 +
.../cssstyle/lib/properties/borderTopWidth.js | 17 +
.../cssstyle/lib/properties/borderWidth.js | 46 +
.../cssstyle/lib/properties/bottom.js | 14 +
.../cssstyle/lib/properties/clear.js | 16 +
.../cssstyle/lib/properties/clip.js | 47 +
.../cssstyle/lib/properties/color.js | 14 +
.../cssstyle/lib/properties/cssFloat.js | 12 +
.../cssstyle/lib/properties/flex.js | 45 +
.../cssstyle/lib/properties/flexBasis.js | 28 +
.../cssstyle/lib/properties/flexGrow.js | 19 +
.../cssstyle/lib/properties/flexShrink.js | 19 +
.../cssstyle/lib/properties/float.js | 12 +
.../cssstyle/lib/properties/floodColor.js | 14 +
.../cssstyle/lib/properties/font.js | 43 +
.../cssstyle/lib/properties/fontFamily.js | 33 +
.../cssstyle/lib/properties/fontSize.js | 38 +
.../cssstyle/lib/properties/fontStyle.js | 18 +
.../cssstyle/lib/properties/fontVariant.js | 18 +
.../cssstyle/lib/properties/fontWeight.js | 33 +
.../cssstyle/lib/properties/height.js | 24 +
.../cssstyle/lib/properties/left.js | 14 +
.../cssstyle/lib/properties/lightingColor.js | 14 +
.../cssstyle/lib/properties/lineHeight.js | 26 +
.../cssstyle/lib/properties/margin.js | 68 +
.../cssstyle/lib/properties/marginBottom.js | 13 +
.../cssstyle/lib/properties/marginLeft.js | 13 +
.../cssstyle/lib/properties/marginRight.js | 13 +
.../cssstyle/lib/properties/marginTop.js | 13 +
.../cssstyle/lib/properties/opacity.js | 14 +
.../cssstyle/lib/properties/outlineColor.js | 14 +
.../cssstyle/lib/properties/padding.js | 61 +
.../cssstyle/lib/properties/paddingBottom.js | 13 +
.../cssstyle/lib/properties/paddingLeft.js | 13 +
.../cssstyle/lib/properties/paddingRight.js | 13 +
.../cssstyle/lib/properties/paddingTop.js | 13 +
.../cssstyle/lib/properties/right.js | 14 +
.../cssstyle/lib/properties/stopColor.js | 14 +
.../lib/properties/textLineThroughColor.js | 14 +
.../lib/properties/textOverlineColor.js | 14 +
.../lib/properties/textUnderlineColor.js | 14 +
.../cssstyle/lib/properties/top.js | 14 +
.../lib/properties/webkitBorderAfterColor.js | 14 +
.../lib/properties/webkitBorderBeforeColor.js | 14 +
.../lib/properties/webkitBorderEndColor.js | 14 +
.../lib/properties/webkitBorderStartColor.js | 14 +
.../lib/properties/webkitColumnRuleColor.js | 14 +
.../webkitMatchNearestMailBlockquoteColor.js | 14 +
.../lib/properties/webkitTapHighlightColor.js | 14 +
.../lib/properties/webkitTextEmphasisColor.js | 14 +
.../lib/properties/webkitTextFillColor.js | 14 +
.../lib/properties/webkitTextStrokeColor.js | 14 +
.../cssstyle/lib/properties/width.js | 24 +
.../cssstyle/lib/utils/colorSpace.js | 21 +
.../lib/utils/getBasicPropertyDescriptor.js | 14 +
.../cssstyle/node_modules/cssom/LICENSE.txt | 20 +
.../cssstyle/node_modules/cssom/README.mdown | 67 +
.../node_modules/cssom/lib/CSSDocumentRule.js | 39 +
.../node_modules/cssom/lib/CSSFontFaceRule.js | 36 +
.../node_modules/cssom/lib/CSSHostRule.js | 37 +
.../node_modules/cssom/lib/CSSImportRule.js | 132 +
.../node_modules/cssom/lib/CSSKeyframeRule.js | 37 +
.../cssom/lib/CSSKeyframesRule.js | 39 +
.../node_modules/cssom/lib/CSSMediaRule.js | 41 +
.../cssstyle/node_modules/cssom/lib/CSSOM.js | 3 +
.../node_modules/cssom/lib/CSSRule.js | 43 +
.../cssom/lib/CSSStyleDeclaration.js | 148 +
.../node_modules/cssom/lib/CSSStyleRule.js | 190 +
.../node_modules/cssom/lib/CSSStyleSheet.js | 88 +
.../node_modules/cssom/lib/CSSSupportsRule.js | 36 +
.../node_modules/cssom/lib/CSSValue.js | 43 +
.../cssom/lib/CSSValueExpression.js | 344 +
.../node_modules/cssom/lib/MatcherList.js | 62 +
.../node_modules/cssom/lib/MediaList.js | 61 +
.../node_modules/cssom/lib/StyleSheet.js | 17 +
.../cssstyle/node_modules/cssom/lib/clone.js | 82 +
.../cssstyle/node_modules/cssom/lib/index.js | 21 +
.../cssstyle/node_modules/cssom/lib/parse.js | 464 +
.../cssstyle/node_modules/cssom/package.json | 18 +
.../node_modules/cssstyle/package.json | 72 +
.../node_modules/data-urls/LICENSE.txt | 7 +
.../node_modules/data-urls/README.md | 64 +
.../node_modules/data-urls/lib/parser.js | 74 +
.../node_modules/data-urls/lib/utils.js | 23 +
.../node_modules/data-urls/package.json | 53 +
.../examples_4/node_modules/debug/LICENSE | 20 +
.../examples_4/node_modules/debug/README.md | 481 +
.../node_modules/debug/package.json | 59 +
.../node_modules/debug/src/browser.js | 269 +
.../node_modules/debug/src/common.js | 274 +
.../node_modules/debug/src/index.js | 10 +
.../examples_4/node_modules/debug/src/node.js | 263 +
.../node_modules/decimal.js/CHANGELOG.md | 231 +
.../node_modules/decimal.js/LICENCE.md | 23 +
.../node_modules/decimal.js/README.md | 246 +
.../node_modules/decimal.js/decimal.d.ts | 300 +
.../node_modules/decimal.js/decimal.js | 4934 +++++
.../node_modules/decimal.js/decimal.mjs | 4898 +++++
.../node_modules/decimal.js/package.json | 40 +
.../examples_4/node_modules/dedent/LICENSE | 21 +
.../examples_4/node_modules/dedent/README.md | 59 +
.../node_modules/dedent/dist/dedent.js | 59 +
.../node_modules/dedent/package.json | 43 +
.../node_modules/deep-is/.travis.yml | 5 +
.../examples_4/node_modules/deep-is/LICENSE | 22 +
.../node_modules/deep-is/README.markdown | 70 +
.../node_modules/deep-is/example/cmp.js | 11 +
.../examples_4/node_modules/deep-is/index.js | 102 +
.../node_modules/deep-is/package.json | 58 +
.../node_modules/deep-is/test/NaN.js | 16 +
.../node_modules/deep-is/test/cmp.js | 23 +
.../node_modules/deep-is/test/neg-vs-pos-0.js | 15 +
.../node_modules/deepmerge/changelog.md | 159 +
.../node_modules/deepmerge/dist/cjs.js | 133 +
.../node_modules/deepmerge/dist/umd.js | 139 +
.../node_modules/deepmerge/index.d.ts | 16 +
.../node_modules/deepmerge/index.js | 106 +
.../node_modules/deepmerge/license.txt | 21 +
.../node_modules/deepmerge/package.json | 43 +
.../node_modules/deepmerge/readme.md | 264 +
.../node_modules/deepmerge/rollup.config.js | 22 +
.../node_modules/delayed-stream/.npmignore | 1 +
.../node_modules/delayed-stream/License | 19 +
.../node_modules/delayed-stream/Makefile | 7 +
.../node_modules/delayed-stream/Readme.md | 141 +
.../delayed-stream/lib/delayed_stream.js | 107 +
.../node_modules/delayed-stream/package.json | 27 +
.../node_modules/detect-newline/index.d.ts | 26 +
.../node_modules/detect-newline/index.js | 21 +
.../node_modules/detect-newline/license | 9 +
.../node_modules/detect-newline/package.json | 39 +
.../node_modules/detect-newline/readme.md | 42 +
.../node_modules/diff-sequences/LICENSE | 21 +
.../node_modules/diff-sequences/README.md | 404 +
.../diff-sequences/build/index.d.ts | 18 +
.../diff-sequences/build/index.js | 816 +
.../node_modules/diff-sequences/package.json | 42 +
.../diff-sequences/perf/example.md | 48 +
.../node_modules/diff-sequences/perf/index.js | 170 +
.../node_modules/domexception/LICENSE.txt | 21 +
.../node_modules/domexception/README.md | 31 +
.../node_modules/domexception/index.js | 7 +
.../domexception/lib/DOMException-impl.js | 22 +
.../domexception/lib/DOMException.js | 205 +
.../domexception/lib/legacy-error-codes.json | 27 +
.../node_modules/domexception/lib/utils.js | 115 +
.../webidl-conversions/LICENSE.md | 12 +
.../node_modules/webidl-conversions/README.md | 79 +
.../webidl-conversions/lib/index.js | 361 +
.../webidl-conversions/package.json | 30 +
.../node_modules/domexception/package.json | 42 +
.../domexception/webidl2js-wrapper.js | 15 +
.../electron-to-chromium/CHANGELOG.md | 14 +
.../node_modules/electron-to-chromium/LICENSE | 5 +
.../electron-to-chromium/README.md | 186 +
.../electron-to-chromium/chromium-versions.js | 46 +
.../chromium-versions.json | 1 +
.../full-chromium-versions.js | 1861 ++
.../full-chromium-versions.json | 1 +
.../electron-to-chromium/full-versions.js | 1365 ++
.../electron-to-chromium/full-versions.json | 1 +
.../electron-to-chromium/index.js | 36 +
.../electron-to-chromium/package.json | 42 +
.../electron-to-chromium/versions.js | 94 +
.../electron-to-chromium/versions.json | 1 +
.../node_modules/emittery/index.d.ts | 432 +
.../examples_4/node_modules/emittery/index.js | 408 +
.../examples_4/node_modules/emittery/license | 9 +
.../node_modules/emittery/package.json | 66 +
.../node_modules/emittery/readme.md | 409 +
.../node_modules/emoji-regex/LICENSE-MIT.txt | 20 +
.../node_modules/emoji-regex/README.md | 73 +
.../node_modules/emoji-regex/es2015/index.js | 6 +
.../node_modules/emoji-regex/es2015/text.js | 6 +
.../node_modules/emoji-regex/index.d.ts | 23 +
.../node_modules/emoji-regex/index.js | 6 +
.../node_modules/emoji-regex/package.json | 50 +
.../node_modules/emoji-regex/text.js | 6 +
.../examples_4/node_modules/error-ex/LICENSE | 21 +
.../node_modules/error-ex/README.md | 144 +
.../examples_4/node_modules/error-ex/index.js | 141 +
.../node_modules/error-ex/package.json | 46 +
.../node_modules/escalade/dist/index.js | 22 +
.../node_modules/escalade/dist/index.mjs | 22 +
.../node_modules/escalade/index.d.ts | 3 +
.../examples_4/node_modules/escalade/license | 9 +
.../node_modules/escalade/package.json | 61 +
.../node_modules/escalade/readme.md | 211 +
.../node_modules/escalade/sync/index.d.ts | 2 +
.../node_modules/escalade/sync/index.js | 18 +
.../node_modules/escalade/sync/index.mjs | 18 +
.../escape-string-regexp/index.d.ts | 18 +
.../escape-string-regexp/index.js | 11 +
.../node_modules/escape-string-regexp/license | 9 +
.../escape-string-regexp/package.json | 43 +
.../escape-string-regexp/readme.md | 29 +
.../node_modules/escodegen/LICENSE.BSD | 21 +
.../node_modules/escodegen/README.md | 84 +
.../node_modules/escodegen/bin/escodegen.js | 77 +
.../node_modules/escodegen/bin/esgenerate.js | 64 +
.../node_modules/escodegen/escodegen.js | 2647 +++
.../node_modules/escodegen/package.json | 62 +
.../examples_4/node_modules/esprima/ChangeLog | 235 +
.../node_modules/esprima/LICENSE.BSD | 21 +
.../examples_4/node_modules/esprima/README.md | 46 +
.../node_modules/esprima/bin/esparse.js | 139 +
.../node_modules/esprima/bin/esvalidate.js | 236 +
.../node_modules/esprima/dist/esprima.js | 6709 ++++++
.../node_modules/esprima/package.json | 112 +
.../node_modules/estraverse/.jshintrc | 16 +
.../node_modules/estraverse/LICENSE.BSD | 19 +
.../node_modules/estraverse/README.md | 153 +
.../node_modules/estraverse/estraverse.js | 805 +
.../node_modules/estraverse/gulpfile.js | 70 +
.../node_modules/estraverse/package.json | 40 +
.../node_modules/esutils/LICENSE.BSD | 19 +
.../examples_4/node_modules/esutils/README.md | 174 +
.../node_modules/esutils/lib/ast.js | 144 +
.../node_modules/esutils/lib/code.js | 135 +
.../node_modules/esutils/lib/keyword.js | 165 +
.../node_modules/esutils/lib/utils.js | 33 +
.../node_modules/esutils/package.json | 44 +
.../examples_4/node_modules/execa/index.d.ts | 564 +
.../examples_4/node_modules/execa/index.js | 268 +
.../node_modules/execa/lib/command.js | 52 +
.../node_modules/execa/lib/error.js | 88 +
.../examples_4/node_modules/execa/lib/kill.js | 115 +
.../node_modules/execa/lib/promise.js | 46 +
.../node_modules/execa/lib/stdio.js | 52 +
.../node_modules/execa/lib/stream.js | 97 +
.../examples_4/node_modules/execa/license | 9 +
.../node_modules/execa/package.json | 74 +
.../examples_4/node_modules/execa/readme.md | 663 +
.../examples_4/node_modules/exit/.jshintrc | 14 +
.../examples_4/node_modules/exit/.npmignore | 0
.../examples_4/node_modules/exit/.travis.yml | 6 +
.../examples_4/node_modules/exit/Gruntfile.js | 48 +
.../examples_4/node_modules/exit/LICENSE-MIT | 22 +
.../examples_4/node_modules/exit/README.md | 75 +
.../examples_4/node_modules/exit/lib/exit.js | 41 +
.../examples_4/node_modules/exit/package.json | 47 +
.../node_modules/exit/test/exit_test.js | 121 +
.../exit/test/fixtures/10-stderr.txt | 10 +
.../exit/test/fixtures/10-stdout-stderr.txt | 20 +
.../exit/test/fixtures/10-stdout.txt | 10 +
.../exit/test/fixtures/100-stderr.txt | 100 +
.../exit/test/fixtures/100-stdout-stderr.txt | 200 +
.../exit/test/fixtures/100-stdout.txt | 100 +
.../exit/test/fixtures/1000-stderr.txt | 1000 +
.../exit/test/fixtures/1000-stdout-stderr.txt | 2000 ++
.../exit/test/fixtures/1000-stdout.txt | 1000 +
.../exit/test/fixtures/create-files.sh | 8 +
.../exit/test/fixtures/log-broken.js | 23 +
.../node_modules/exit/test/fixtures/log.js | 25 +
.../examples_4/node_modules/expect/LICENSE | 21 +
.../examples_4/node_modules/expect/README.md | 3 +
.../expect/build/asymmetricMatchers.d.ts | 75 +
.../expect/build/asymmetricMatchers.js | 432 +
.../extractExpectedAssertionsErrors.d.ts | 10 +
.../build/extractExpectedAssertionsErrors.js | 90 +
.../node_modules/expect/build/index.d.ts | 15 +
.../node_modules/expect/build/index.js | 485 +
.../expect/build/jasmineUtils.d.ts | 8 +
.../node_modules/expect/build/jasmineUtils.js | 279 +
.../expect/build/jestMatchersObject.d.ts | 13 +
.../expect/build/jestMatchersObject.js | 120 +
.../node_modules/expect/build/matchers.d.ts | 10 +
.../node_modules/expect/build/matchers.js | 1370 ++
.../node_modules/expect/build/print.d.ts | 15 +
.../node_modules/expect/build/print.js | 141 +
.../expect/build/spyMatchers.d.ts | 9 +
.../node_modules/expect/build/spyMatchers.js | 1339 ++
.../expect/build/toThrowMatchers.d.ts | 11 +
.../expect/build/toThrowMatchers.js | 464 +
.../node_modules/expect/build/types.d.ts | 327 +
.../node_modules/expect/build/types.js | 3 +
.../node_modules/expect/build/utils.d.ts | 26 +
.../node_modules/expect/build/utils.js | 458 +
.../node_modules/expect/package.json | 42 +
.../fast-json-stable-stringify/.eslintrc.yml | 26 +
.../.github/FUNDING.yml | 1 +
.../fast-json-stable-stringify/.travis.yml | 8 +
.../fast-json-stable-stringify/LICENSE | 21 +
.../fast-json-stable-stringify/README.md | 131 +
.../benchmark/index.js | 31 +
.../benchmark/test.json | 137 +
.../example/key_cmp.js | 7 +
.../example/nested.js | 3 +
.../fast-json-stable-stringify/example/str.js | 3 +
.../example/value_cmp.js | 7 +
.../fast-json-stable-stringify/index.d.ts | 4 +
.../fast-json-stable-stringify/index.js | 59 +
.../fast-json-stable-stringify/package.json | 52 +
.../fast-json-stable-stringify/test/cmp.js | 13 +
.../fast-json-stable-stringify/test/nested.js | 44 +
.../fast-json-stable-stringify/test/str.js | 46 +
.../test/to-json.js | 22 +
.../node_modules/fast-levenshtein/LICENSE.md | 25 +
.../node_modules/fast-levenshtein/README.md | 104 +
.../fast-levenshtein/levenshtein.js | 136 +
.../fast-levenshtein/package.json | 39 +
.../node_modules/fb-watchman/README.md | 34 +
.../node_modules/fb-watchman/index.js | 322 +
.../node_modules/fb-watchman/package.json | 35 +
.../node_modules/fill-range/LICENSE | 21 +
.../node_modules/fill-range/README.md | 237 +
.../node_modules/fill-range/index.js | 249 +
.../node_modules/fill-range/package.json | 69 +
.../node_modules/find-up/index.d.ts | 137 +
.../examples_4/node_modules/find-up/index.js | 89 +
.../examples_4/node_modules/find-up/license | 9 +
.../node_modules/find-up/package.json | 53 +
.../examples_4/node_modules/find-up/readme.md | 156 +
.../examples_4/node_modules/form-data/License | 19 +
.../node_modules/form-data/README.md.bak | 356 +
.../node_modules/form-data/Readme.md | 356 +
.../node_modules/form-data/index.d.ts | 62 +
.../node_modules/form-data/lib/browser.js | 2 +
.../node_modules/form-data/lib/form_data.js | 498 +
.../node_modules/form-data/lib/populate.js | 10 +
.../node_modules/form-data/package.json | 68 +
.../node_modules/fs.realpath/LICENSE | 43 +
.../node_modules/fs.realpath/README.md | 33 +
.../node_modules/fs.realpath/index.js | 66 +
.../node_modules/fs.realpath/old.js | 303 +
.../node_modules/fs.realpath/package.json | 26 +
.../node_modules/function-bind/.editorconfig | 20 +
.../node_modules/function-bind/.eslintrc | 15 +
.../node_modules/function-bind/.jscs.json | 176 +
.../node_modules/function-bind/.npmignore | 22 +
.../node_modules/function-bind/.travis.yml | 168 +
.../node_modules/function-bind/LICENSE | 20 +
.../node_modules/function-bind/README.md | 48 +
.../function-bind/implementation.js | 52 +
.../node_modules/function-bind/index.js | 5 +
.../node_modules/function-bind/package.json | 63 +
.../node_modules/function-bind/test/.eslintrc | 9 +
.../node_modules/function-bind/test/index.js | 252 +
.../examples_4/node_modules/gensync/LICENSE | 7 +
.../examples_4/node_modules/gensync/README.md | 196 +
.../examples_4/node_modules/gensync/index.js | 373 +
.../node_modules/gensync/index.js.flow | 32 +
.../node_modules/gensync/package.json | 37 +
.../node_modules/gensync/test/.babelrc | 5 +
.../node_modules/gensync/test/index.test.js | 489 +
.../node_modules/get-caller-file/LICENSE.md | 6 +
.../node_modules/get-caller-file/README.md | 41 +
.../node_modules/get-caller-file/index.d.ts | 2 +
.../node_modules/get-caller-file/index.js | 22 +
.../node_modules/get-caller-file/index.js.map | 1 +
.../node_modules/get-caller-file/package.json | 42 +
.../get-package-type/CHANGELOG.md | 10 +
.../node_modules/get-package-type/LICENSE | 21 +
.../node_modules/get-package-type/README.md | 32 +
.../node_modules/get-package-type/async.cjs | 52 +
.../node_modules/get-package-type/cache.cjs | 3 +
.../node_modules/get-package-type/index.cjs | 7 +
.../get-package-type/is-node-modules.cjs | 15 +
.../get-package-type/package.json | 35 +
.../node_modules/get-package-type/sync.cjs | 42 +
.../node_modules/get-stream/buffer-stream.js | 52 +
.../node_modules/get-stream/index.d.ts | 105 +
.../node_modules/get-stream/index.js | 61 +
.../node_modules/get-stream/license | 9 +
.../node_modules/get-stream/package.json | 47 +
.../node_modules/get-stream/readme.md | 124 +
.../examples_4/node_modules/glob/LICENSE | 21 +
.../examples_4/node_modules/glob/README.md | 378 +
.../examples_4/node_modules/glob/common.js | 236 +
.../examples_4/node_modules/glob/glob.js | 787 +
.../examples_4/node_modules/glob/package.json | 52 +
.../examples_4/node_modules/glob/sync.js | 483 +
.../node_modules/globals/globals.json | 1563 ++
.../examples_4/node_modules/globals/index.js | 2 +
.../examples_4/node_modules/globals/license | 9 +
.../node_modules/globals/package.json | 41 +
.../examples_4/node_modules/globals/readme.md | 41 +
.../node_modules/graceful-fs/LICENSE | 15 +
.../node_modules/graceful-fs/README.md | 143 +
.../node_modules/graceful-fs/clone.js | 23 +
.../node_modules/graceful-fs/graceful-fs.js | 448 +
.../graceful-fs/legacy-streams.js | 118 +
.../node_modules/graceful-fs/package.json | 50 +
.../node_modules/graceful-fs/polyfills.js | 355 +
.../node_modules/has-flag/index.d.ts | 39 +
.../examples_4/node_modules/has-flag/index.js | 8 +
.../examples_4/node_modules/has-flag/license | 9 +
.../node_modules/has-flag/package.json | 46 +
.../node_modules/has-flag/readme.md | 89 +
.../examples_4/node_modules/has/LICENSE-MIT | 22 +
.../examples_4/node_modules/has/README.md | 18 +
.../examples_4/node_modules/has/package.json | 48 +
.../examples_4/node_modules/has/src/index.js | 5 +
.../examples_4/node_modules/has/test/index.js | 10 +
.../html-encoding-sniffer/LICENSE.txt | 7 +
.../html-encoding-sniffer/README.md | 38 +
.../lib/html-encoding-sniffer.js | 295 +
.../html-encoding-sniffer/package.json | 30 +
.../node_modules/html-escaper/LICENSE.txt | 19 +
.../node_modules/html-escaper/README.md | 97 +
.../node_modules/html-escaper/cjs/index.js | 65 +
.../html-escaper/cjs/package.json | 1 +
.../node_modules/html-escaper/esm/index.js | 62 +
.../node_modules/html-escaper/index.js | 70 +
.../node_modules/html-escaper/min.js | 1 +
.../node_modules/html-escaper/package.json | 42 +
.../node_modules/html-escaper/test/index.js | 23 +
.../html-escaper/test/package.json | 1 +
.../node_modules/http-proxy-agent/README.md | 74 +
.../http-proxy-agent/dist/agent.d.ts | 32 +
.../http-proxy-agent/dist/agent.js | 145 +
.../http-proxy-agent/dist/agent.js.map | 1 +
.../http-proxy-agent/dist/index.d.ts | 21 +
.../http-proxy-agent/dist/index.js | 14 +
.../http-proxy-agent/dist/index.js.map | 1 +
.../http-proxy-agent/package.json | 57 +
.../node_modules/https-proxy-agent/README.md | 137 +
.../https-proxy-agent/dist/agent.d.ts | 30 +
.../https-proxy-agent/dist/agent.js | 180 +
.../https-proxy-agent/dist/agent.js.map | 1 +
.../https-proxy-agent/dist/index.d.ts | 23 +
.../https-proxy-agent/dist/index.js | 14 +
.../https-proxy-agent/dist/index.js.map | 1 +
.../dist/parse-proxy-response.d.ts | 7 +
.../dist/parse-proxy-response.js | 66 +
.../dist/parse-proxy-response.js.map | 1 +
.../https-proxy-agent/package.json | 56 +
.../node_modules/human-signals/CHANGELOG.md | 11 +
.../node_modules/human-signals/LICENSE | 201 +
.../node_modules/human-signals/README.md | 165 +
.../human-signals/build/src/core.js | 273 +
.../human-signals/build/src/core.js.map | 1 +
.../human-signals/build/src/main.d.ts | 52 +
.../human-signals/build/src/main.js | 71 +
.../human-signals/build/src/main.js.map | 1 +
.../human-signals/build/src/realtime.js | 19 +
.../human-signals/build/src/realtime.js.map | 1 +
.../human-signals/build/src/signals.js | 35 +
.../human-signals/build/src/signals.js.map | 1 +
.../node_modules/human-signals/package.json | 64 +
.../node_modules/iconv-lite/Changelog.md | 162 +
.../node_modules/iconv-lite/LICENSE | 21 +
.../node_modules/iconv-lite/README.md | 156 +
.../iconv-lite/encodings/dbcs-codec.js | 555 +
.../iconv-lite/encodings/dbcs-data.js | 176 +
.../iconv-lite/encodings/index.js | 22 +
.../iconv-lite/encodings/internal.js | 188 +
.../iconv-lite/encodings/sbcs-codec.js | 72 +
.../encodings/sbcs-data-generated.js | 451 +
.../iconv-lite/encodings/sbcs-data.js | 174 +
.../encodings/tables/big5-added.json | 122 +
.../iconv-lite/encodings/tables/cp936.json | 264 +
.../iconv-lite/encodings/tables/cp949.json | 273 +
.../iconv-lite/encodings/tables/cp950.json | 177 +
.../iconv-lite/encodings/tables/eucjp.json | 182 +
.../encodings/tables/gb18030-ranges.json | 1 +
.../encodings/tables/gbk-added.json | 55 +
.../iconv-lite/encodings/tables/shiftjis.json | 125 +
.../iconv-lite/encodings/utf16.js | 177 +
.../node_modules/iconv-lite/encodings/utf7.js | 290 +
.../iconv-lite/lib/bom-handling.js | 52 +
.../iconv-lite/lib/extend-node.js | 217 +
.../node_modules/iconv-lite/lib/index.d.ts | 24 +
.../node_modules/iconv-lite/lib/index.js | 153 +
.../node_modules/iconv-lite/lib/streams.js | 121 +
.../node_modules/iconv-lite/package.json | 46 +
.../node_modules/import-local/fixtures/cli.js | 7 +
.../node_modules/import-local/index.js | 24 +
.../node_modules/import-local/license | 9 +
.../node_modules/import-local/package.json | 52 +
.../node_modules/import-local/readme.md | 37 +
.../node_modules/imurmurhash/README.md | 122 +
.../node_modules/imurmurhash/imurmurhash.js | 138 +
.../imurmurhash/imurmurhash.min.js | 12 +
.../node_modules/imurmurhash/package.json | 40 +
.../examples_4/node_modules/inflight/LICENSE | 15 +
.../node_modules/inflight/README.md | 37 +
.../node_modules/inflight/inflight.js | 54 +
.../node_modules/inflight/package.json | 29 +
.../examples_4/node_modules/inherits/LICENSE | 16 +
.../node_modules/inherits/README.md | 42 +
.../node_modules/inherits/inherits.js | 9 +
.../node_modules/inherits/inherits_browser.js | 27 +
.../node_modules/inherits/package.json | 29 +
.../node_modules/is-arrayish/.editorconfig | 18 +
.../node_modules/is-arrayish/.istanbul.yml | 4 +
.../node_modules/is-arrayish/.npmignore | 5 +
.../node_modules/is-arrayish/.travis.yml | 17 +
.../node_modules/is-arrayish/LICENSE | 21 +
.../node_modules/is-arrayish/README.md | 16 +
.../node_modules/is-arrayish/index.js | 10 +
.../node_modules/is-arrayish/package.json | 34 +
.../node_modules/is-core-module/.eslintrc | 17 +
.../node_modules/is-core-module/.nycrc | 9 +
.../node_modules/is-core-module/CHANGELOG.md | 127 +
.../node_modules/is-core-module/LICENSE | 20 +
.../node_modules/is-core-module/README.md | 40 +
.../node_modules/is-core-module/core.json | 152 +
.../node_modules/is-core-module/index.js | 69 +
.../node_modules/is-core-module/package.json | 69 +
.../node_modules/is-core-module/test/index.js | 130 +
.../is-fullwidth-code-point/index.d.ts | 17 +
.../is-fullwidth-code-point/index.js | 50 +
.../is-fullwidth-code-point/license | 9 +
.../is-fullwidth-code-point/package.json | 42 +
.../is-fullwidth-code-point/readme.md | 39 +
.../node_modules/is-generator-fn/index.d.ts | 24 +
.../node_modules/is-generator-fn/index.js | 14 +
.../node_modules/is-generator-fn/license | 9 +
.../node_modules/is-generator-fn/package.json | 38 +
.../node_modules/is-generator-fn/readme.md | 33 +
.../examples_4/node_modules/is-number/LICENSE | 21 +
.../node_modules/is-number/README.md | 187 +
.../node_modules/is-number/index.js | 18 +
.../node_modules/is-number/package.json | 82 +
.../LICENSE-MIT.txt | 20 +
.../README.md | 40 +
.../is-potential-custom-element-name/index.js | 9 +
.../package.json | 35 +
.../node_modules/is-stream/index.d.ts | 79 +
.../node_modules/is-stream/index.js | 28 +
.../examples_4/node_modules/is-stream/license | 9 +
.../node_modules/is-stream/package.json | 42 +
.../node_modules/is-stream/readme.md | 60 +
.../node_modules/is-typedarray/LICENSE.md | 18 +
.../node_modules/is-typedarray/README.md | 16 +
.../node_modules/is-typedarray/index.js | 41 +
.../node_modules/is-typedarray/package.json | 30 +
.../node_modules/is-typedarray/test.js | 34 +
.../examples_4/node_modules/isexe/.npmignore | 2 +
.../examples_4/node_modules/isexe/LICENSE | 15 +
.../examples_4/node_modules/isexe/README.md | 51 +
.../examples_4/node_modules/isexe/index.js | 57 +
.../examples_4/node_modules/isexe/mode.js | 41 +
.../node_modules/isexe/package.json | 31 +
.../node_modules/isexe/test/basic.js | 221 +
.../examples_4/node_modules/isexe/windows.js | 42 +
.../istanbul-lib-coverage/CHANGELOG.md | 193 +
.../istanbul-lib-coverage/LICENSE | 24 +
.../istanbul-lib-coverage/README.md | 29 +
.../istanbul-lib-coverage/index.js | 64 +
.../istanbul-lib-coverage/lib/coverage-map.js | 134 +
.../lib/coverage-summary.js | 112 +
.../lib/data-properties.js | 12 +
.../lib/file-coverage.js | 345 +
.../istanbul-lib-coverage/lib/percent.js | 15 +
.../istanbul-lib-coverage/package.json | 47 +
.../istanbul-lib-instrument/CHANGELOG.md | 617 +
.../istanbul-lib-instrument/LICENSE | 24 +
.../istanbul-lib-instrument/README.md | 22 +
.../istanbul-lib-instrument/package.json | 50 +
.../istanbul-lib-instrument/src/constants.js | 14 +
.../istanbul-lib-instrument/src/index.js | 21 +
.../src/instrumenter.js | 160 +
.../src/read-coverage.js | 77 +
.../src/source-coverage.js | 135 +
.../istanbul-lib-instrument/src/visitor.js | 746 +
.../istanbul-lib-report/CHANGELOG.md | 185 +
.../node_modules/istanbul-lib-report/LICENSE | 24 +
.../istanbul-lib-report/README.md | 43 +
.../node_modules/istanbul-lib-report/index.js | 40 +
.../istanbul-lib-report/lib/context.js | 132 +
.../istanbul-lib-report/lib/file-writer.js | 189 +
.../istanbul-lib-report/lib/path.js | 169 +
.../istanbul-lib-report/lib/report-base.js | 16 +
.../lib/summarizer-factory.js | 284 +
.../istanbul-lib-report/lib/tree.js | 137 +
.../istanbul-lib-report/lib/watermarks.js | 15 +
.../istanbul-lib-report/lib/xml-writer.js | 90 +
.../istanbul-lib-report/package.json | 45 +
.../istanbul-lib-source-maps/CHANGELOG.md | 295 +
.../istanbul-lib-source-maps/LICENSE | 24 +
.../istanbul-lib-source-maps/README.md | 11 +
.../istanbul-lib-source-maps/index.js | 15 +
.../lib/get-mapping.js | 182 +
.../istanbul-lib-source-maps/lib/map-store.js | 226 +
.../istanbul-lib-source-maps/lib/mapped.js | 113 +
.../istanbul-lib-source-maps/lib/pathutils.js | 21 +
.../lib/transform-utils.js | 21 +
.../lib/transformer.js | 147 +
.../istanbul-lib-source-maps/package.json | 45 +
.../istanbul-reports/CHANGELOG.md | 442 +
.../node_modules/istanbul-reports/LICENSE | 24 +
.../node_modules/istanbul-reports/README.md | 13 +
.../node_modules/istanbul-reports/index.js | 24 +
.../istanbul-reports/lib/clover/index.js | 164 +
.../istanbul-reports/lib/cobertura/index.js | 151 +
.../istanbul-reports/lib/html-spa/.babelrc | 3 +
.../lib/html-spa/assets/bundle.js | 30 +
.../lib/html-spa/assets/sort-arrow-sprite.png | Bin 0 -> 209 bytes
.../lib/html-spa/assets/spa.css | 298 +
.../istanbul-reports/lib/html-spa/index.js | 176 +
.../lib/html-spa/src/fileBreadcrumbs.js | 31 +
.../lib/html-spa/src/filterToggle.js | 50 +
.../lib/html-spa/src/flattenToggle.js | 25 +
.../lib/html-spa/src/getChildData.js | 155 +
.../lib/html-spa/src/index.js | 160 +
.../lib/html-spa/src/routing.js | 52 +
.../lib/html-spa/src/summaryHeader.js | 63 +
.../lib/html-spa/src/summaryTableHeader.js | 130 +
.../lib/html-spa/src/summaryTableLine.js | 159 +
.../lib/html-spa/webpack.config.js | 22 +
.../istanbul-reports/lib/html/annotator.js | 288 +
.../istanbul-reports/lib/html/assets/base.css | 224 +
.../lib/html/assets/block-navigation.js | 86 +
.../lib/html/assets/favicon.png | Bin 0 -> 540 bytes
.../lib/html/assets/sort-arrow-sprite.png | Bin 0 -> 209 bytes
.../lib/html/assets/sorter.js | 195 +
.../lib/html/assets/vendor/prettify.css | 1 +
.../lib/html/assets/vendor/prettify.js | 1 +
.../istanbul-reports/lib/html/index.js | 421 +
.../lib/html/insertion-text.js | 114 +
.../lib/json-summary/index.js | 56 +
.../istanbul-reports/lib/json/index.js | 44 +
.../istanbul-reports/lib/lcov/index.js | 33 +
.../istanbul-reports/lib/lcovonly/index.js | 77 +
.../istanbul-reports/lib/none/index.js | 10 +
.../istanbul-reports/lib/teamcity/index.js | 67 +
.../istanbul-reports/lib/text-lcov/index.js | 17 +
.../lib/text-summary/index.js | 62 +
.../istanbul-reports/lib/text/index.js | 298 +
.../istanbul-reports/package.json | 60 +
.../node_modules/jest-changed-files/LICENSE | 21 +
.../node_modules/jest-changed-files/README.md | 63 +
.../jest-changed-files/build/git.d.ts | 10 +
.../jest-changed-files/build/git.js | 179 +
.../jest-changed-files/build/hg.d.ts | 10 +
.../jest-changed-files/build/hg.js | 133 +
.../jest-changed-files/build/index.d.ts | 12 +
.../jest-changed-files/build/index.js | 86 +
.../jest-changed-files/build/types.d.ts | 28 +
.../jest-changed-files/build/types.js | 1 +
.../jest-changed-files/package.json | 31 +
.../node_modules/jest-circus/LICENSE | 21 +
.../node_modules/jest-circus/README.md | 65 +
.../jest-circus/build/eventHandler.d.ts | 9 +
.../jest-circus/build/eventHandler.js | 338 +
.../build/formatNodeAssertErrors.d.ts | 9 +
.../build/formatNodeAssertErrors.js | 204 +
.../build/globalErrorHandlers.d.ts | 9 +
.../jest-circus/build/globalErrorHandlers.js | 51 +
.../node_modules/jest-circus/build/index.d.ts | 52 +
.../node_modules/jest-circus/build/index.js | 226 +
.../legacy-code-todo-rewrite/jestAdapter.d.ts | 12 +
.../legacy-code-todo-rewrite/jestAdapter.js | 123 +
.../jestAdapterInit.d.ts | 36 +
.../jestAdapterInit.js | 299 +
.../legacy-code-todo-rewrite/jestExpect.d.ts | 10 +
.../legacy-code-todo-rewrite/jestExpect.js | 37 +
.../node_modules/jest-circus/build/run.d.ts | 9 +
.../node_modules/jest-circus/build/run.js | 236 +
.../node_modules/jest-circus/build/state.d.ts | 14 +
.../node_modules/jest-circus/build/state.js | 93 +
.../build/testCaseReportHandler.d.ts | 10 +
.../build/testCaseReportHandler.js | 28 +
.../node_modules/jest-circus/build/types.d.ts | 21 +
.../node_modules/jest-circus/build/types.js | 35 +
.../node_modules/jest-circus/build/utils.d.ts | 33 +
.../node_modules/jest-circus/build/utils.js | 637 +
.../node_modules/jest-circus/package.json | 58 +
.../node_modules/jest-circus/runner.js | 10 +
.../examples_4/node_modules/jest-cli/LICENSE | 21 +
.../node_modules/jest-cli/README.md | 11 +
.../node_modules/jest-cli/bin/jest.js | 17 +
.../node_modules/jest-cli/build/cli/args.d.ts | 448 +
.../node_modules/jest-cli/build/cli/args.js | 710 +
.../jest-cli/build/cli/index.d.ts | 9 +
.../node_modules/jest-cli/build/cli/index.js | 265 +
.../node_modules/jest-cli/build/index.d.ts | 7 +
.../node_modules/jest-cli/build/index.js | 13 +
.../jest-cli/build/init/errors.d.ts | 12 +
.../jest-cli/build/init/errors.js | 35 +
.../build/init/generateConfigFile.d.ts | 8 +
.../jest-cli/build/init/generateConfigFile.js | 104 +
.../jest-cli/build/init/index.d.ts | 7 +
.../node_modules/jest-cli/build/init/index.js | 246 +
.../build/init/modifyPackageJson.d.ts | 12 +
.../jest-cli/build/init/modifyPackageJson.js | 28 +
.../jest-cli/build/init/questions.d.ts | 10 +
.../jest-cli/build/init/questions.js | 76 +
.../jest-cli/build/init/types.d.ts | 12 +
.../node_modules/jest-cli/build/init/types.js | 1 +
.../node_modules/jest-cli/package.json | 89 +
.../node_modules/jest-config/LICENSE | 21 +
.../jest-config/build/Defaults.d.ts | 9 +
.../jest-config/build/Defaults.js | 125 +
.../jest-config/build/Deprecated.d.ts | 9 +
.../jest-config/build/Deprecated.js | 98 +
.../jest-config/build/Descriptions.d.ts | 11 +
.../jest-config/build/Descriptions.js | 107 +
.../build/ReporterValidationErrors.d.ts | 19 +
.../build/ReporterValidationErrors.js | 138 +
.../jest-config/build/ValidConfig.d.ts | 9 +
.../jest-config/build/ValidConfig.js | 199 +
.../node_modules/jest-config/build/color.d.ts | 10 +
.../node_modules/jest-config/build/color.js | 37 +
.../jest-config/build/constants.d.ts | 17 +
.../jest-config/build/constants.js | 104 +
.../jest-config/build/getCacheDirectory.d.ts | 9 +
.../jest-config/build/getCacheDirectory.js | 104 +
.../jest-config/build/getMaxWorkers.d.ts | 8 +
.../jest-config/build/getMaxWorkers.js | 65 +
.../node_modules/jest-config/build/index.d.ts | 28 +
.../node_modules/jest-config/build/index.js | 495 +
.../jest-config/build/normalize.d.ts | 13 +
.../jest-config/build/normalize.js | 1372 ++
.../build/readConfigFileAndSetRootDir.d.ts | 8 +
.../build/readConfigFileAndSetRootDir.js | 204 +
.../jest-config/build/resolveConfigPath.d.ts | 8 +
.../jest-config/build/resolveConfigPath.js | 247 +
.../jest-config/build/setFromArgv.d.ts | 8 +
.../jest-config/build/setFromArgv.js | 68 +
.../node_modules/jest-config/build/utils.d.ts | 27 +
.../node_modules/jest-config/build/utils.js | 209 +
.../jest-config/build/validatePattern.d.ts | 7 +
.../jest-config/build/validatePattern.js | 25 +
.../node_modules/jest-config/package.json | 68 +
.../examples_4/node_modules/jest-diff/LICENSE | 21 +
.../node_modules/jest-diff/README.md | 671 +
.../jest-diff/build/cleanupSemantic.d.ts | 57 +
.../jest-diff/build/cleanupSemantic.js | 655 +
.../jest-diff/build/constants.d.ts | 8 +
.../node_modules/jest-diff/build/constants.js | 19 +
.../jest-diff/build/diffLines.d.ts | 12 +
.../node_modules/jest-diff/build/diffLines.js | 220 +
.../jest-diff/build/diffStrings.d.ts | 9 +
.../jest-diff/build/diffStrings.js | 78 +
.../jest-diff/build/getAlignedDiffs.d.ts | 10 +
.../jest-diff/build/getAlignedDiffs.js | 244 +
.../node_modules/jest-diff/build/index.d.ts | 15 +
.../node_modules/jest-diff/build/index.js | 267 +
.../jest-diff/build/joinAlignedDiffs.d.ts | 10 +
.../jest-diff/build/joinAlignedDiffs.js | 303 +
.../jest-diff/build/normalizeDiffOptions.d.ts | 9 +
.../jest-diff/build/normalizeDiffOptions.js | 64 +
.../jest-diff/build/printDiffs.d.ts | 10 +
.../jest-diff/build/printDiffs.js | 85 +
.../node_modules/jest-diff/build/types.d.ts | 48 +
.../node_modules/jest-diff/build/types.js | 1 +
.../node_modules/jest-diff/package.json | 36 +
.../node_modules/jest-docblock/LICENSE | 21 +
.../node_modules/jest-docblock/README.md | 108 +
.../jest-docblock/build/index.d.ts | 19 +
.../node_modules/jest-docblock/build/index.js | 153 +
.../node_modules/jest-docblock/package.json | 32 +
.../examples_4/node_modules/jest-each/LICENSE | 21 +
.../node_modules/jest-each/README.md | 548 +
.../node_modules/jest-each/build/bind.d.ts | 15 +
.../node_modules/jest-each/build/bind.js | 79 +
.../node_modules/jest-each/build/index.d.ts | 79 +
.../node_modules/jest-each/build/index.js | 97 +
.../jest-each/build/table/array.d.ts | 10 +
.../jest-each/build/table/array.js | 151 +
.../jest-each/build/table/interpolation.d.ts | 17 +
.../jest-each/build/table/interpolation.js | 69 +
.../jest-each/build/table/template.d.ts | 11 +
.../jest-each/build/table/template.js | 45 +
.../jest-each/build/validation.d.ts | 11 +
.../jest-each/build/validation.js | 133 +
.../node_modules/jest-each/package.json | 41 +
.../jest-environment-jsdom/LICENSE | 21 +
.../jest-environment-jsdom/build/index.d.ts | 30 +
.../jest-environment-jsdom/build/index.js | 195 +
.../jest-environment-jsdom/package.json | 39 +
.../jest-environment-node/LICENSE | 21 +
.../jest-environment-node/build/index.d.ts | 29 +
.../jest-environment-node/build/index.js | 184 +
.../jest-environment-node/package.json | 37 +
.../node_modules/jest-get-type/LICENSE | 21 +
.../jest-get-type/build/index.d.ts | 10 +
.../node_modules/jest-get-type/build/index.js | 57 +
.../node_modules/jest-get-type/package.json | 27 +
.../node_modules/jest-haste-map/LICENSE | 21 +
.../jest-haste-map/build/HasteFS.d.ts | 27 +
.../jest-haste-map/build/HasteFS.js | 179 +
.../jest-haste-map/build/ModuleMap.d.ts | 41 +
.../jest-haste-map/build/ModuleMap.js | 305 +
.../jest-haste-map/build/blacklist.d.ts | 8 +
.../jest-haste-map/build/blacklist.js | 59 +
.../jest-haste-map/build/constants.d.ts | 9 +
.../jest-haste-map/build/constants.js | 52 +
.../jest-haste-map/build/crawlers/node.d.ts | 12 +
.../jest-haste-map/build/crawlers/node.js | 309 +
.../build/crawlers/watchman.d.ts | 13 +
.../jest-haste-map/build/crawlers/watchman.js | 385 +
.../jest-haste-map/build/getMockName.d.ts | 8 +
.../jest-haste-map/build/getMockName.js | 76 +
.../jest-haste-map/build/index.d.ts | 184 +
.../jest-haste-map/build/index.js | 1266 ++
.../build/lib/dependencyExtractor.d.ts | 7 +
.../build/lib/dependencyExtractor.js | 99 +
.../jest-haste-map/build/lib/fast_path.d.ts | 8 +
.../jest-haste-map/build/lib/fast_path.js | 81 +
.../build/lib/getPlatformExtension.d.ts | 7 +
.../build/lib/getPlatformExtension.js | 31 +
.../build/lib/isRegExpSupported.d.ts | 7 +
.../build/lib/isRegExpSupported.js | 22 +
.../build/lib/normalizePathSep.d.ts | 8 +
.../build/lib/normalizePathSep.js | 75 +
.../jest-haste-map/build/types.d.ts | 126 +
.../jest-haste-map/build/types.js | 1 +
.../build/watchers/FSEventsWatcher.d.ts | 44 +
.../build/watchers/FSEventsWatcher.js | 294 +
.../build/watchers/NodeWatcher.js | 375 +
.../build/watchers/RecrawlWarning.js | 57 +
.../build/watchers/WatchmanWatcher.js | 418 +
.../jest-haste-map/build/watchers/common.js | 114 +
.../jest-haste-map/build/worker.d.ts | 9 +
.../jest-haste-map/build/worker.js | 197 +
.../node_modules/jest-haste-map/package.json | 49 +
.../node_modules/jest-jasmine2/LICENSE | 21 +
.../build/ExpectationFailed.d.ts | 8 +
.../jest-jasmine2/build/ExpectationFailed.js | 16 +
.../jest-jasmine2/build/PCancelable.d.ts | 17 +
.../jest-jasmine2/build/PCancelable.js | 139 +
.../build/assertionErrorMessage.d.ts | 10 +
.../build/assertionErrorMessage.js | 156 +
.../jest-jasmine2/build/each.d.ts | 8 +
.../node_modules/jest-jasmine2/build/each.js | 44 +
.../jest-jasmine2/build/errorOnPrivate.d.ts | 8 +
.../jest-jasmine2/build/errorOnPrivate.js | 66 +
.../build/expectationResultFactory.d.ts | 16 +
.../build/expectationResultFactory.js | 93 +
.../jest-jasmine2/build/index.d.ts | 12 +
.../node_modules/jest-jasmine2/build/index.js | 247 +
.../jest-jasmine2/build/isError.d.ts | 10 +
.../jest-jasmine2/build/isError.js | 32 +
.../build/jasmine/CallTracker.d.ts | 25 +
.../build/jasmine/CallTracker.js | 121 +
.../jest-jasmine2/build/jasmine/Env.d.ts | 43 +
.../jest-jasmine2/build/jasmine/Env.js | 716 +
.../build/jasmine/JsApiReporter.d.ts | 31 +
.../build/jasmine/JsApiReporter.js | 173 +
.../build/jasmine/ReportDispatcher.d.ts | 22 +
.../build/jasmine/ReportDispatcher.js | 127 +
.../jest-jasmine2/build/jasmine/Spec.d.ts | 81 +
.../jest-jasmine2/build/jasmine/Spec.js | 298 +
.../build/jasmine/SpyStrategy.d.ts | 22 +
.../build/jasmine/SpyStrategy.js | 143 +
.../jest-jasmine2/build/jasmine/Suite.d.ts | 61 +
.../jest-jasmine2/build/jasmine/Suite.js | 235 +
.../jest-jasmine2/build/jasmine/Timer.d.ts | 14 +
.../jest-jasmine2/build/jasmine/Timer.js | 79 +
.../build/jasmine/createSpy.d.ts | 13 +
.../jest-jasmine2/build/jasmine/createSpy.js | 88 +
.../build/jasmine/jasmineLight.d.ts | 27 +
.../build/jasmine/jasmineLight.js | 171 +
.../build/jasmine/spyRegistry.d.ts | 18 +
.../build/jasmine/spyRegistry.js | 222 +
.../build/jasmineAsyncInstall.d.ts | 8 +
.../build/jasmineAsyncInstall.js | 259 +
.../jest-jasmine2/build/jestExpect.d.ts | 9 +
.../jest-jasmine2/build/jestExpect.js | 69 +
.../jest-jasmine2/build/pTimeout.d.ts | 7 +
.../jest-jasmine2/build/pTimeout.js | 78 +
.../jest-jasmine2/build/queueRunner.d.ts | 29 +
.../jest-jasmine2/build/queueRunner.js | 127 +
.../jest-jasmine2/build/reporter.d.ts | 31 +
.../jest-jasmine2/build/reporter.js | 250 +
.../build/setup_jest_globals.d.ts | 16 +
.../jest-jasmine2/build/setup_jest_globals.js | 121 +
.../jest-jasmine2/build/treeProcessor.d.ts | 26 +
.../jest-jasmine2/build/treeProcessor.js | 82 +
.../jest-jasmine2/build/types.d.ts | 82 +
.../node_modules/jest-jasmine2/build/types.js | 7 +
.../node_modules/jest-jasmine2/package.json | 48 +
.../node_modules/jest-leak-detector/LICENSE | 21 +
.../node_modules/jest-leak-detector/README.md | 27 +
.../jest-leak-detector/build/index.d.ts | 12 +
.../jest-leak-detector/build/index.js | 135 +
.../jest-leak-detector/package.json | 34 +
.../node_modules/jest-matcher-utils/LICENSE | 21 +
.../node_modules/jest-matcher-utils/README.md | 24 +
.../jest-matcher-utils/build/Replaceable.d.ts | 17 +
.../jest-matcher-utils/build/Replaceable.js | 82 +
.../build/deepCyclicCopyReplaceable.d.ts | 7 +
.../build/deepCyclicCopyReplaceable.js | 110 +
.../jest-matcher-utils/build/index.d.ts | 53 +
.../jest-matcher-utils/build/index.js | 590 +
.../jest-matcher-utils/package.json | 37 +
.../node_modules/jest-message-util/LICENSE | 21 +
.../jest-message-util/build/index.d.ts | 23 +
.../jest-message-util/build/index.js | 501 +
.../jest-message-util/build/types.d.ts | 10 +
.../jest-message-util/build/types.js | 1 +
.../jest-message-util/package.json | 42 +
.../examples_4/node_modules/jest-mock/LICENSE | 21 +
.../node_modules/jest-mock/README.md | 92 +
.../node_modules/jest-mock/build/index.d.ts | 185 +
.../node_modules/jest-mock/build/index.js | 964 +
.../node_modules/jest-mock/package.json | 30 +
.../node_modules/jest-pnp-resolver/README.md | 34 +
.../jest-pnp-resolver/createRequire.js | 25 +
.../jest-pnp-resolver/getDefaultResolver.js | 13 +
.../node_modules/jest-pnp-resolver/index.d.ts | 10 +
.../node_modules/jest-pnp-resolver/index.js | 49 +
.../jest-pnp-resolver/package.json | 31 +
.../node_modules/jest-regex-util/LICENSE | 21 +
.../jest-regex-util/build/index.d.ts | 10 +
.../jest-regex-util/build/index.js | 48 +
.../node_modules/jest-regex-util/package.json | 29 +
.../jest-resolve-dependencies/LICENSE | 21 +
.../build/index.d.ts | 27 +
.../jest-resolve-dependencies/build/index.js | 238 +
.../jest-resolve-dependencies/package.json | 37 +
.../node_modules/jest-resolve/LICENSE | 21 +
.../build/ModuleNotFoundError.d.ts | 18 +
.../jest-resolve/build/ModuleNotFoundError.js | 146 +
.../jest-resolve/build/defaultResolver.d.ts | 29 +
.../jest-resolve/build/defaultResolver.js | 123 +
.../jest-resolve/build/fileWalkers.d.ts | 14 +
.../jest-resolve/build/fileWalkers.js | 214 +
.../jest-resolve/build/index.d.ts | 10 +
.../node_modules/jest-resolve/build/index.js | 36 +
.../jest-resolve/build/isBuiltinModule.d.ts | 7 +
.../jest-resolve/build/isBuiltinModule.js | 36 +
.../jest-resolve/build/nodeModulesPaths.d.ts | 15 +
.../jest-resolve/build/nodeModulesPaths.js | 128 +
.../jest-resolve/build/resolver.d.ts | 58 +
.../jest-resolve/build/resolver.js | 595 +
.../jest-resolve/build/shouldLoadAsEsm.d.ts | 9 +
.../jest-resolve/build/shouldLoadAsEsm.js | 112 +
.../jest-resolve/build/types.d.ts | 23 +
.../node_modules/jest-resolve/build/types.js | 1 +
.../jest-resolve/build/utils.d.ts | 51 +
.../node_modules/jest-resolve/build/utils.js | 269 +
.../node_modules/jest-resolve/package.json | 42 +
.../node_modules/jest-runner/LICENSE | 21 +
.../node_modules/jest-runner/build/index.d.ts | 24 +
.../node_modules/jest-runner/build/index.js | 300 +
.../jest-runner/build/runTest.d.ts | 12 +
.../node_modules/jest-runner/build/runTest.js | 494 +
.../jest-runner/build/testWorker.d.ts | 26 +
.../jest-runner/build/testWorker.js | 150 +
.../node_modules/jest-runner/build/types.d.ts | 41 +
.../node_modules/jest-runner/build/types.js | 15 +
.../node_modules/jest-runner/package.json | 55 +
.../node_modules/jest-runtime/LICENSE | 21 +
.../jest-runtime/build/helpers.d.ts | 10 +
.../jest-runtime/build/helpers.js | 157 +
.../jest-runtime/build/index.d.ts | 142 +
.../node_modules/jest-runtime/build/index.js | 2454 +++
.../jest-runtime/build/types.d.ts | 15 +
.../node_modules/jest-runtime/build/types.js | 1 +
.../node_modules/jest-runtime/package.json | 57 +
.../node_modules/jest-serializer/LICENSE | 21 +
.../node_modules/jest-serializer/README.md | 47 +
.../jest-serializer/build/index.d.ts | 20 +
.../jest-serializer/build/index.js | 109 +
.../node_modules/jest-serializer/package.json | 33 +
.../node_modules/jest-serializer/v8.d.ts | 11 +
.../node_modules/jest-snapshot/LICENSE | 21 +
.../jest-snapshot/build/InlineSnapshots.d.ts | 15 +
.../jest-snapshot/build/InlineSnapshots.js | 503 +
.../jest-snapshot/build/SnapshotResolver.d.ts | 18 +
.../jest-snapshot/build/SnapshotResolver.js | 179 +
.../jest-snapshot/build/State.d.ts | 62 +
.../node_modules/jest-snapshot/build/State.js | 389 +
.../jest-snapshot/build/colors.d.ts | 15 +
.../jest-snapshot/build/colors.js | 38 +
.../jest-snapshot/build/dedentLines.d.ts | 7 +
.../jest-snapshot/build/dedentLines.js | 149 +
.../jest-snapshot/build/index.d.ts | 34 +
.../node_modules/jest-snapshot/build/index.js | 645 +
.../jest-snapshot/build/mockSerializer.d.ts | 11 +
.../jest-snapshot/build/mockSerializer.js | 52 +
.../jest-snapshot/build/plugins.d.ts | 9 +
.../jest-snapshot/build/plugins.js | 48 +
.../jest-snapshot/build/printSnapshot.d.ts | 24 +
.../jest-snapshot/build/printSnapshot.js | 407 +
.../jest-snapshot/build/types.d.ts | 25 +
.../node_modules/jest-snapshot/build/types.js | 1 +
.../jest-snapshot/build/utils.d.ts | 28 +
.../node_modules/jest-snapshot/build/utils.js | 460 +
.../jest-snapshot/node_modules/.bin/semver | 12 +
.../node_modules/.bin/semver.cmd | 17 +
.../node_modules/.bin/semver.ps1 | 28 +
.../jest-snapshot/node_modules/semver/LICENSE | 15 +
.../node_modules/semver/README.md | 568 +
.../node_modules/semver/bin/semver.js | 182 +
.../node_modules/semver/classes/comparator.js | 136 +
.../node_modules/semver/classes/index.js | 5 +
.../node_modules/semver/classes/range.js | 519 +
.../node_modules/semver/classes/semver.js | 287 +
.../node_modules/semver/functions/clean.js | 6 +
.../node_modules/semver/functions/cmp.js | 52 +
.../node_modules/semver/functions/coerce.js | 52 +
.../semver/functions/compare-build.js | 7 +
.../semver/functions/compare-loose.js | 3 +
.../node_modules/semver/functions/compare.js | 5 +
.../node_modules/semver/functions/diff.js | 23 +
.../node_modules/semver/functions/eq.js | 3 +
.../node_modules/semver/functions/gt.js | 3 +
.../node_modules/semver/functions/gte.js | 3 +
.../node_modules/semver/functions/inc.js | 15 +
.../node_modules/semver/functions/lt.js | 3 +
.../node_modules/semver/functions/lte.js | 3 +
.../node_modules/semver/functions/major.js | 3 +
.../node_modules/semver/functions/minor.js | 3 +
.../node_modules/semver/functions/neq.js | 3 +
.../node_modules/semver/functions/parse.js | 33 +
.../node_modules/semver/functions/patch.js | 3 +
.../semver/functions/prerelease.js | 6 +
.../node_modules/semver/functions/rcompare.js | 3 +
.../node_modules/semver/functions/rsort.js | 3 +
.../semver/functions/satisfies.js | 10 +
.../node_modules/semver/functions/sort.js | 3 +
.../node_modules/semver/functions/valid.js | 6 +
.../node_modules/semver/index.js | 48 +
.../node_modules/semver/internal/constants.js | 17 +
.../node_modules/semver/internal/debug.js | 9 +
.../semver/internal/identifiers.js | 23 +
.../semver/internal/parse-options.js | 11 +
.../node_modules/semver/internal/re.js | 182 +
.../node_modules/semver/package.json | 74 +
.../node_modules/semver/preload.js | 2 +
.../node_modules/semver/range.bnf | 16 +
.../node_modules/semver/ranges/gtr.js | 4 +
.../node_modules/semver/ranges/intersects.js | 7 +
.../node_modules/semver/ranges/ltr.js | 4 +
.../semver/ranges/max-satisfying.js | 25 +
.../semver/ranges/min-satisfying.js | 24 +
.../node_modules/semver/ranges/min-version.js | 61 +
.../node_modules/semver/ranges/outside.js | 80 +
.../node_modules/semver/ranges/simplify.js | 47 +
.../node_modules/semver/ranges/subset.js | 244 +
.../semver/ranges/to-comparators.js | 8 +
.../node_modules/semver/ranges/valid.js | 11 +
.../node_modules/jest-snapshot/package.json | 61 +
.../examples_4/node_modules/jest-util/LICENSE | 21 +
.../jest-util/build/ErrorWithStack.d.ts | 9 +
.../jest-util/build/ErrorWithStack.js | 33 +
.../jest-util/build/clearLine.d.ts | 8 +
.../node_modules/jest-util/build/clearLine.js | 18 +
.../build/convertDescriptorToString.d.ts | 7 +
.../build/convertDescriptorToString.js | 41 +
.../jest-util/build/createDirectory.d.ts | 8 +
.../jest-util/build/createDirectory.js | 76 +
.../jest-util/build/createProcessObject.d.ts | 8 +
.../jest-util/build/createProcessObject.js | 126 +
.../jest-util/build/deepCyclicCopy.d.ts | 11 +
.../jest-util/build/deepCyclicCopy.js | 84 +
.../jest-util/build/formatTime.d.ts | 7 +
.../jest-util/build/formatTime.js | 24 +
.../jest-util/build/globsToMatcher.d.ts | 27 +
.../jest-util/build/globsToMatcher.js | 108 +
.../node_modules/jest-util/build/index.d.ts | 25 +
.../node_modules/jest-util/build/index.js | 209 +
.../jest-util/build/installCommonGlobals.d.ts | 8 +
.../jest-util/build/installCommonGlobals.js | 123 +
.../build/interopRequireDefault.d.ts | 7 +
.../jest-util/build/interopRequireDefault.js | 22 +
.../jest-util/build/isInteractive.d.ts | 8 +
.../jest-util/build/isInteractive.js | 27 +
.../jest-util/build/isPromise.d.ts | 8 +
.../node_modules/jest-util/build/isPromise.js | 20 +
.../jest-util/build/pluralize.d.ts | 7 +
.../node_modules/jest-util/build/pluralize.js | 16 +
.../jest-util/build/preRunMessage.d.ts | 9 +
.../jest-util/build/preRunMessage.js | 48 +
.../build/replacePathSepForGlob.d.ts | 8 +
.../jest-util/build/replacePathSepForGlob.js | 16 +
.../build/requireOrImportModule.d.ts | 8 +
.../jest-util/build/requireOrImportModule.js | 91 +
.../jest-util/build/setGlobal.d.ts | 7 +
.../node_modules/jest-util/build/setGlobal.js | 17 +
.../jest-util/build/specialChars.d.ts | 14 +
.../jest-util/build/specialChars.js | 25 +
.../build/testPathPatternToRegExp.d.ts | 8 +
.../build/testPathPatternToRegExp.js | 19 +
.../jest-util/build/tryRealpath.d.ts | 8 +
.../jest-util/build/tryRealpath.js | 34 +
.../node_modules/jest-util/package.json | 39 +
.../node_modules/jest-validate/LICENSE | 21 +
.../node_modules/jest-validate/README.md | 196 +
.../jest-validate/build/condition.d.ts | 9 +
.../jest-validate/build/condition.js | 48 +
.../jest-validate/build/defaultConfig.d.ts | 9 +
.../jest-validate/build/defaultConfig.js | 42 +
.../jest-validate/build/deprecated.d.ts | 8 +
.../jest-validate/build/deprecated.js | 32 +
.../jest-validate/build/errors.d.ts | 8 +
.../jest-validate/build/errors.js | 75 +
.../jest-validate/build/exampleConfig.d.ts | 9 +
.../jest-validate/build/exampleConfig.js | 36 +
.../jest-validate/build/index.d.ts | 11 +
.../node_modules/jest-validate/build/index.js | 61 +
.../jest-validate/build/types.d.ts | 26 +
.../node_modules/jest-validate/build/types.js | 1 +
.../jest-validate/build/utils.d.ts | 18 +
.../node_modules/jest-validate/build/utils.js | 129 +
.../jest-validate/build/validate.d.ts | 13 +
.../jest-validate/build/validate.js | 131 +
.../build/validateCLIOptions.d.ts | 14 +
.../jest-validate/build/validateCLIOptions.js | 141 +
.../jest-validate/build/warnings.d.ts | 8 +
.../jest-validate/build/warnings.js | 48 +
.../node_modules/camelcase/index.d.ts | 103 +
.../node_modules/camelcase/index.js | 113 +
.../node_modules/camelcase/license | 9 +
.../node_modules/camelcase/package.json | 44 +
.../node_modules/camelcase/readme.md | 144 +
.../node_modules/jest-validate/package.json | 37 +
.../node_modules/jest-watcher/LICENSE | 21 +
.../jest-watcher/build/BaseWatchPlugin.d.ts | 22 +
.../jest-watcher/build/BaseWatchPlugin.js | 52 +
.../jest-watcher/build/JestHooks.d.ts | 18 +
.../jest-watcher/build/JestHooks.js | 91 +
.../jest-watcher/build/PatternPrompt.d.ts | 20 +
.../jest-watcher/build/PatternPrompt.js | 113 +
.../jest-watcher/build/constants.d.ts | 18 +
.../jest-watcher/build/constants.js | 27 +
.../jest-watcher/build/index.d.ts | 13 +
.../node_modules/jest-watcher/build/index.js | 75 +
.../jest-watcher/build/lib/Prompt.d.ts | 25 +
.../jest-watcher/build/lib/Prompt.js | 158 +
.../jest-watcher/build/lib/colorize.d.ts | 7 +
.../jest-watcher/build/lib/colorize.js | 34 +
.../build/lib/formatTestNameByPattern.d.ts | 7 +
.../build/lib/formatTestNameByPattern.js | 81 +
.../build/lib/patternModeHelpers.d.ts | 9 +
.../build/lib/patternModeHelpers.js | 68 +
.../jest-watcher/build/lib/scroll.d.ts | 12 +
.../jest-watcher/build/lib/scroll.js | 34 +
.../jest-watcher/build/types.d.ts | 60 +
.../node_modules/jest-watcher/build/types.js | 1 +
.../node_modules/jest-watcher/package.json | 40 +
.../node_modules/jest-worker/LICENSE | 21 +
.../node_modules/jest-worker/README.md | 247 +
.../node_modules/jest-worker/build/Farm.d.ts | 29 +
.../node_modules/jest-worker/build/Farm.js | 206 +
.../jest-worker/build/FifoQueue.d.ts | 18 +
.../jest-worker/build/FifoQueue.js | 171 +
.../jest-worker/build/PriorityQueue.d.ts | 41 +
.../jest-worker/build/PriorityQueue.js | 188 +
.../jest-worker/build/WorkerPool.d.ts | 13 +
.../jest-worker/build/WorkerPool.js | 49 +
.../build/base/BaseWorkerPool.d.ts | 21 +
.../jest-worker/build/base/BaseWorkerPool.js | 201 +
.../node_modules/jest-worker/build/index.d.ts | 49 +
.../node_modules/jest-worker/build/index.js | 223 +
.../node_modules/jest-worker/build/types.d.ts | 143 +
.../node_modules/jest-worker/build/types.js | 39 +
.../build/workers/ChildProcessWorker.d.ts | 51 +
.../build/workers/ChildProcessWorker.js | 333 +
.../build/workers/NodeThreadsWorker.d.ts | 34 +
.../build/workers/NodeThreadsWorker.js | 344 +
.../build/workers/messageParent.d.ts | 8 +
.../build/workers/messageParent.js | 38 +
.../build/workers/processChild.d.ts | 7 +
.../jest-worker/build/workers/processChild.js | 148 +
.../build/workers/threadChild.d.ts | 7 +
.../jest-worker/build/workers/threadChild.js | 159 +
.../node_modules/supports-color/browser.js | 24 +
.../node_modules/supports-color/index.js | 152 +
.../node_modules/supports-color/license | 9 +
.../node_modules/supports-color/package.json | 58 +
.../node_modules/supports-color/readme.md | 77 +
.../node_modules/jest-worker/package.json | 38 +
.../examples_4/node_modules/jest/LICENSE | 21 +
.../examples_4/node_modules/jest/README.md | 11 +
.../examples_4/node_modules/jest/bin/jest.js | 13 +
.../node_modules/jest/build/jest.d.ts | 8 +
.../node_modules/jest/build/jest.js | 61 +
.../examples_4/node_modules/jest/package.json | 68 +
.../node_modules/js-tokens/CHANGELOG.md | 151 +
.../examples_4/node_modules/js-tokens/LICENSE | 21 +
.../node_modules/js-tokens/README.md | 240 +
.../node_modules/js-tokens/index.js | 23 +
.../node_modules/js-tokens/package.json | 30 +
.../node_modules/js-yaml/CHANGELOG.md | 557 +
.../examples_4/node_modules/js-yaml/LICENSE | 21 +
.../examples_4/node_modules/js-yaml/README.md | 299 +
.../node_modules/js-yaml/bin/js-yaml.js | 132 +
.../node_modules/js-yaml/dist/js-yaml.js | 3989 ++++
.../node_modules/js-yaml/dist/js-yaml.min.js | 1 +
.../examples_4/node_modules/js-yaml/index.js | 7 +
.../node_modules/js-yaml/lib/js-yaml.js | 39 +
.../js-yaml/lib/js-yaml/common.js | 59 +
.../js-yaml/lib/js-yaml/dumper.js | 850 +
.../js-yaml/lib/js-yaml/exception.js | 43 +
.../js-yaml/lib/js-yaml/loader.js | 1644 ++
.../node_modules/js-yaml/lib/js-yaml/mark.js | 76 +
.../js-yaml/lib/js-yaml/schema.js | 108 +
.../js-yaml/lib/js-yaml/schema/core.js | 18 +
.../lib/js-yaml/schema/default_full.js | 25 +
.../lib/js-yaml/schema/default_safe.js | 28 +
.../js-yaml/lib/js-yaml/schema/failsafe.js | 17 +
.../js-yaml/lib/js-yaml/schema/json.js | 25 +
.../node_modules/js-yaml/lib/js-yaml/type.js | 61 +
.../js-yaml/lib/js-yaml/type/binary.js | 138 +
.../js-yaml/lib/js-yaml/type/bool.js | 35 +
.../js-yaml/lib/js-yaml/type/float.js | 116 +
.../js-yaml/lib/js-yaml/type/int.js | 173 +
.../js-yaml/lib/js-yaml/type/js/function.js | 93 +
.../js-yaml/lib/js-yaml/type/js/regexp.js | 60 +
.../js-yaml/lib/js-yaml/type/js/undefined.js | 28 +
.../js-yaml/lib/js-yaml/type/map.js | 8 +
.../js-yaml/lib/js-yaml/type/merge.js | 12 +
.../js-yaml/lib/js-yaml/type/null.js | 34 +
.../js-yaml/lib/js-yaml/type/omap.js | 44 +
.../js-yaml/lib/js-yaml/type/pairs.js | 53 +
.../js-yaml/lib/js-yaml/type/seq.js | 8 +
.../js-yaml/lib/js-yaml/type/set.js | 29 +
.../js-yaml/lib/js-yaml/type/str.js | 8 +
.../js-yaml/lib/js-yaml/type/timestamp.js | 88 +
.../node_modules/js-yaml/package.json | 49 +
.../examples_4/node_modules/jsdom/LICENSE.txt | 22 +
.../examples_4/node_modules/jsdom/README.md | 522 +
.../examples_4/node_modules/jsdom/lib/api.js | 333 +
.../jsdom/lib/jsdom/browser/Window.js | 933 +
.../lib/jsdom/browser/default-stylesheet.js | 789 +
.../jsdom/lib/jsdom/browser/js-globals.json | 307 +
.../lib/jsdom/browser/not-implemented.js | 13 +
.../jsdom/lib/jsdom/browser/parser/html.js | 223 +
.../jsdom/lib/jsdom/browser/parser/index.js | 37 +
.../jsdom/lib/jsdom/browser/parser/xml.js | 202 +
.../browser/resources/async-resource-queue.js | 114 +
.../resources/no-op-resource-loader.js | 8 +
.../resources/per-document-resource-loader.js | 95 +
.../browser/resources/request-manager.js | 33 +
.../browser/resources/resource-loader.js | 142 +
.../jsdom/browser/resources/resource-queue.js | 142 +
.../jsdom/lib/jsdom/level2/style.js | 57 +
.../jsdom/lib/jsdom/level3/xpath.js | 1874 ++
.../living/aborting/AbortController-impl.js | 17 +
.../jsdom/living/aborting/AbortSignal-impl.js | 55 +
.../jsdom/lib/jsdom/living/attributes.js | 312 +
.../lib/jsdom/living/attributes/Attr-impl.js | 60 +
.../living/attributes/NamedNodeMap-impl.js | 78 +
.../DefaultConstraintValidation-impl.js | 75 +
.../ValidityState-impl.js | 66 +
.../jsdom/living/cssom/StyleSheetList-impl.js | 38 +
.../CustomElementRegistry-impl.js | 265 +
.../jsdom/lib/jsdom/living/documents.js | 15 +
.../jsdom/living/domparsing/DOMParser-impl.js | 58 +
.../jsdom/living/domparsing/InnerHTML-impl.js | 29 +
.../living/domparsing/XMLSerializer-impl.js | 18 +
.../parse5-adapter-serialization.js | 63 +
.../jsdom/living/domparsing/serialization.js | 45 +
.../jsdom/living/events/CloseEvent-impl.js | 10 +
.../living/events/CompositionEvent-impl.js | 20 +
.../jsdom/living/events/CustomEvent-impl.js | 21 +
.../jsdom/living/events/ErrorEvent-impl.js | 14 +
.../lib/jsdom/living/events/Event-impl.js | 197 +
.../living/events/EventModifierMixin-impl.js | 18 +
.../jsdom/living/events/EventTarget-impl.js | 403 +
.../jsdom/living/events/FocusEvent-impl.js | 9 +
.../living/events/HashChangeEvent-impl.js | 14 +
.../jsdom/living/events/InputEvent-impl.js | 11 +
.../jsdom/living/events/KeyboardEvent-impl.js | 29 +
.../jsdom/living/events/MessageEvent-impl.js | 25 +
.../jsdom/living/events/MouseEvent-impl.js | 49 +
.../living/events/PageTransitionEvent-impl.js | 20 +
.../jsdom/living/events/PopStateEvent-impl.js | 9 +
.../jsdom/living/events/ProgressEvent-impl.js | 14 +
.../jsdom/living/events/StorageEvent-impl.js | 26 +
.../jsdom/living/events/TouchEvent-impl.js | 14 +
.../lib/jsdom/living/events/UIEvent-impl.js | 59 +
.../jsdom/living/events/WheelEvent-impl.js | 12 +
.../lib/jsdom/living/fetch/Headers-impl.js | 165 +
.../lib/jsdom/living/fetch/header-list.js | 54 +
.../lib/jsdom/living/fetch/header-types.js | 103 +
.../lib/jsdom/living/file-api/Blob-impl.js | 93 +
.../lib/jsdom/living/file-api/File-impl.js | 12 +
.../jsdom/living/file-api/FileList-impl.js | 15 +
.../jsdom/living/file-api/FileReader-impl.js | 130 +
.../jsdom/living/generated/AbortController.js | 130 +
.../lib/jsdom/living/generated/AbortSignal.js | 159 +
.../jsdom/living/generated/AbstractRange.js | 162 +
.../generated/AddEventListenerOptions.js | 44 +
.../living/generated/AssignedNodesOptions.js | 28 +
.../jsdom/lib/jsdom/living/generated/Attr.js | 215 +
.../lib/jsdom/living/generated/BarProp.js | 118 +
.../lib/jsdom/living/generated/BinaryType.js | 12 +
.../jsdom/lib/jsdom/living/generated/Blob.js | 198 +
.../jsdom/living/generated/BlobCallback.js | 34 +
.../jsdom/living/generated/BlobPropertyBag.js | 42 +
.../jsdom/living/generated/CDATASection.js | 114 +
.../living/generated/CanPlayTypeResult.js | 12 +
.../jsdom/living/generated/CharacterData.js | 436 +
.../lib/jsdom/living/generated/CloseEvent.js | 164 +
.../jsdom/living/generated/CloseEventInit.js | 56 +
.../lib/jsdom/living/generated/Comment.js | 122 +
.../living/generated/CompositionEvent.js | 217 +
.../living/generated/CompositionEventInit.js | 32 +
.../generated/CustomElementConstructor.js | 38 +
.../living/generated/CustomElementRegistry.js | 242 +
.../lib/jsdom/living/generated/CustomEvent.js | 200 +
.../jsdom/living/generated/CustomEventInit.js | 32 +
.../living/generated/DOMImplementation.js | 232 +
.../lib/jsdom/living/generated/DOMParser.js | 140 +
.../jsdom/living/generated/DOMStringMap.js | 322 +
.../jsdom/living/generated/DOMTokenList.js | 531 +
.../lib/jsdom/living/generated/Document.js | 3322 +++
.../living/generated/DocumentFragment.js | 325 +
.../living/generated/DocumentReadyState.js | 12 +
.../jsdom/living/generated/DocumentType.js | 246 +
.../lib/jsdom/living/generated/Element.js | 1609 ++
.../generated/ElementCreationOptions.js | 26 +
.../generated/ElementDefinitionOptions.js | 26 +
.../lib/jsdom/living/generated/EndingType.js | 12 +
.../lib/jsdom/living/generated/ErrorEvent.js | 186 +
.../jsdom/living/generated/ErrorEventInit.js | 80 +
.../jsdom/lib/jsdom/living/generated/Event.js | 390 +
.../living/generated/EventHandlerNonNull.js | 40 +
.../lib/jsdom/living/generated/EventInit.js | 52 +
.../jsdom/living/generated/EventListener.js | 35 +
.../living/generated/EventListenerOptions.js | 28 +
.../living/generated/EventModifierInit.js | 188 +
.../lib/jsdom/living/generated/EventTarget.js | 252 +
.../lib/jsdom/living/generated/External.js | 129 +
.../jsdom/lib/jsdom/living/generated/File.js | 176 +
.../lib/jsdom/living/generated/FileList.js | 305 +
.../jsdom/living/generated/FilePropertyBag.js | 30 +
.../lib/jsdom/living/generated/FileReader.js | 440 +
.../lib/jsdom/living/generated/FocusEvent.js | 142 +
.../jsdom/living/generated/FocusEventInit.js | 36 +
.../lib/jsdom/living/generated/FormData.js | 421 +
.../lib/jsdom/living/generated/Function.js | 46 +
.../living/generated/GetRootNodeOptions.js | 28 +
.../living/generated/HTMLAnchorElement.js | 915 +
.../jsdom/living/generated/HTMLAreaElement.js | 739 +
.../living/generated/HTMLAudioElement.js | 115 +
.../jsdom/living/generated/HTMLBRElement.js | 153 +
.../jsdom/living/generated/HTMLBaseElement.js | 188 +
.../jsdom/living/generated/HTMLBodyElement.js | 808 +
.../living/generated/HTMLButtonElement.js | 487 +
.../living/generated/HTMLCanvasElement.js | 291 +
.../jsdom/living/generated/HTMLCollection.js | 358 +
.../living/generated/HTMLDListElement.js | 156 +
.../jsdom/living/generated/HTMLDataElement.js | 153 +
.../living/generated/HTMLDataListElement.js | 128 +
.../living/generated/HTMLDetailsElement.js | 156 +
.../living/generated/HTMLDialogElement.js | 156 +
.../living/generated/HTMLDirectoryElement.js | 156 +
.../jsdom/living/generated/HTMLDivElement.js | 153 +
.../lib/jsdom/living/generated/HTMLElement.js | 2269 ++
.../living/generated/HTMLEmbedElement.js | 346 +
.../living/generated/HTMLFieldSetElement.js | 315 +
.../jsdom/living/generated/HTMLFontElement.js | 226 +
.../jsdom/living/generated/HTMLFormElement.js | 457 +
.../living/generated/HTMLFrameElement.js | 459 +
.../living/generated/HTMLFrameSetElement.js | 683 +
.../jsdom/living/generated/HTMLHRElement.js | 300 +
.../jsdom/living/generated/HTMLHeadElement.js | 115 +
.../living/generated/HTMLHeadingElement.js | 153 +
.../jsdom/living/generated/HTMLHtmlElement.js | 153 +
.../living/generated/HTMLIFrameElement.js | 621 +
.../living/generated/HTMLImageElement.js | 789 +
.../living/generated/HTMLInputElement.js | 1696 ++
.../jsdom/living/generated/HTMLLIElement.js | 194 +
.../living/generated/HTMLLabelElement.js | 175 +
.../living/generated/HTMLLegendElement.js | 164 +
.../jsdom/living/generated/HTMLLinkElement.js | 496 +
.../jsdom/living/generated/HTMLMapElement.js | 166 +
.../living/generated/HTMLMarqueeElement.js | 509 +
.../living/generated/HTMLMediaElement.js | 802 +
.../jsdom/living/generated/HTMLMenuElement.js | 156 +
.../jsdom/living/generated/HTMLMetaElement.js | 261 +
.../living/generated/HTMLMeterElement.js | 338 +
.../jsdom/living/generated/HTMLModElement.js | 202 +
.../living/generated/HTMLOListElement.js | 266 +
.../living/generated/HTMLObjectElement.js | 839 +
.../living/generated/HTMLOptGroupElement.js | 192 +
.../living/generated/HTMLOptionElement.js | 351 +
.../living/generated/HTMLOptionsCollection.js | 533 +
.../living/generated/HTMLOutputElement.js | 371 +
.../living/generated/HTMLParagraphElement.js | 153 +
.../living/generated/HTMLParamElement.js | 261 +
.../living/generated/HTMLPictureElement.js | 115 +
.../jsdom/living/generated/HTMLPreElement.js | 158 +
.../living/generated/HTMLProgressElement.js | 209 +
.../living/generated/HTMLQuoteElement.js | 166 +
.../living/generated/HTMLScriptElement.js | 424 +
.../living/generated/HTMLSelectElement.js | 957 +
.../jsdom/living/generated/HTMLSlotElement.js | 188 +
.../living/generated/HTMLSourceElement.js | 310 +
.../jsdom/living/generated/HTMLSpanElement.js | 115 +
.../living/generated/HTMLStyleElement.js | 200 +
.../generated/HTMLTableCaptionElement.js | 153 +
.../living/generated/HTMLTableCellElement.js | 635 +
.../living/generated/HTMLTableColElement.js | 339 +
.../living/generated/HTMLTableElement.js | 725 +
.../living/generated/HTMLTableRowElement.js | 386 +
.../generated/HTMLTableSectionElement.js | 329 +
.../living/generated/HTMLTemplateElement.js | 126 +
.../living/generated/HTMLTextAreaElement.js | 1088 +
.../jsdom/living/generated/HTMLTimeElement.js | 153 +
.../living/generated/HTMLTitleElement.js | 152 +
.../living/generated/HTMLTrackElement.js | 334 +
.../living/generated/HTMLUListElement.js | 192 +
.../living/generated/HTMLUnknownElement.js | 114 +
.../living/generated/HTMLVideoElement.js | 310 +
.../jsdom/living/generated/HashChangeEvent.js | 153 +
.../living/generated/HashChangeEventInit.js | 44 +
.../lib/jsdom/living/generated/Headers.js | 379 +
.../lib/jsdom/living/generated/History.js | 256 +
.../lib/jsdom/living/generated/InputEvent.js | 164 +
.../jsdom/living/generated/InputEventInit.js | 59 +
.../jsdom/living/generated/KeyboardEvent.js | 413 +
.../living/generated/KeyboardEventInit.js | 104 +
.../lib/jsdom/living/generated/Location.js | 370 +
.../jsdom/living/generated/MessageEvent.js | 301 +
.../living/generated/MessageEventInit.js | 94 +
.../lib/jsdom/living/generated/MimeType.js | 151 +
.../jsdom/living/generated/MimeTypeArray.js | 330 +
.../lib/jsdom/living/generated/MouseEvent.js | 463 +
.../jsdom/living/generated/MouseEventInit.js | 108 +
.../living/generated/MutationCallback.js | 38 +
.../living/generated/MutationObserver.js | 171 +
.../living/generated/MutationObserverInit.js | 103 +
.../jsdom/living/generated/MutationRecord.js | 216 +
.../jsdom/living/generated/NamedNodeMap.js | 522 +
.../lib/jsdom/living/generated/Navigator.js | 297 +
.../jsdom/lib/jsdom/living/generated/Node.js | 736 +
.../lib/jsdom/living/generated/NodeFilter.js | 74 +
.../jsdom/living/generated/NodeIterator.js | 196 +
.../lib/jsdom/living/generated/NodeList.js | 309 +
.../OnBeforeUnloadEventHandlerNonNull.js | 46 +
.../generated/OnErrorEventHandlerNonNull.js | 60 +
.../living/generated/PageTransitionEvent.js | 146 +
.../generated/PageTransitionEventInit.js | 32 +
.../lib/jsdom/living/generated/Performance.js | 145 +
.../lib/jsdom/living/generated/Plugin.js | 361 +
.../lib/jsdom/living/generated/PluginArray.js | 340 +
.../jsdom/living/generated/PopStateEvent.js | 142 +
.../living/generated/PopStateEventInit.js | 32 +
.../living/generated/ProcessingInstruction.js | 125 +
.../jsdom/living/generated/ProgressEvent.js | 166 +
.../living/generated/ProgressEventInit.js | 56 +
.../jsdom/lib/jsdom/living/generated/Range.js | 619 +
.../living/generated/SVGAnimatedString.js | 143 +
.../living/generated/SVGBoundingBoxOptions.js | 64 +
.../lib/jsdom/living/generated/SVGElement.js | 1986 ++
.../living/generated/SVGGraphicsElement.js | 144 +
.../lib/jsdom/living/generated/SVGNumber.js | 130 +
.../jsdom/living/generated/SVGSVGElement.js | 681 +
.../jsdom/living/generated/SVGStringList.js | 504 +
.../jsdom/living/generated/SVGTitleElement.js | 114 +
.../lib/jsdom/living/generated/Screen.js | 173 +
.../jsdom/living/generated/ScrollBehavior.js | 12 +
.../living/generated/ScrollIntoViewOptions.js | 45 +
.../living/generated/ScrollLogicalPosition.js | 12 +
.../jsdom/living/generated/ScrollOptions.js | 30 +
.../living/generated/ScrollRestoration.js | 12 +
.../lib/jsdom/living/generated/Selection.js | 527 +
.../jsdom/living/generated/SelectionMode.js | 12 +
.../lib/jsdom/living/generated/ShadowRoot.js | 185 +
.../jsdom/living/generated/ShadowRootInit.js | 30 +
.../jsdom/living/generated/ShadowRootMode.js | 12 +
.../lib/jsdom/living/generated/StaticRange.js | 126 +
.../jsdom/living/generated/StaticRangeInit.js | 66 +
.../lib/jsdom/living/generated/Storage.js | 389 +
.../jsdom/living/generated/StorageEvent.js | 305 +
.../living/generated/StorageEventInit.js | 93 +
.../jsdom/living/generated/StyleSheetList.js | 307 +
.../jsdom/living/generated/SupportedType.js | 18 +
.../jsdom/lib/jsdom/living/generated/Text.js | 169 +
.../jsdom/living/generated/TextTrackKind.js | 12 +
.../lib/jsdom/living/generated/TouchEvent.js | 208 +
.../jsdom/living/generated/TouchEventInit.js | 89 +
.../lib/jsdom/living/generated/TreeWalker.js | 236 +
.../lib/jsdom/living/generated/UIEvent.js | 235 +
.../lib/jsdom/living/generated/UIEventInit.js | 59 +
.../jsdom/living/generated/ValidityState.js | 228 +
.../jsdom/living/generated/VisibilityState.js | 12 +
.../jsdom/living/generated/VoidFunction.js | 30 +
.../lib/jsdom/living/generated/WebSocket.js | 444 +
.../lib/jsdom/living/generated/WheelEvent.js | 183 +
.../jsdom/living/generated/WheelEventInit.js | 68 +
.../lib/jsdom/living/generated/XMLDocument.js | 114 +
.../jsdom/living/generated/XMLHttpRequest.js | 617 +
.../generated/XMLHttpRequestEventTarget.js | 341 +
.../generated/XMLHttpRequestResponseType.js | 12 +
.../living/generated/XMLHttpRequestUpload.js | 114 +
.../jsdom/living/generated/XMLSerializer.js | 133 +
.../jsdom/lib/jsdom/living/generated/utils.js | 141 +
.../lib/jsdom/living/helpers/agent-factory.js | 15 +
.../lib/jsdom/living/helpers/binary-data.js | 9 +
.../jsdom/living/helpers/create-element.js | 320 +
.../living/helpers/create-event-accessor.js | 188 +
.../jsdom/living/helpers/custom-elements.js | 270 +
.../jsdom/living/helpers/dates-and-times.js | 270 +
.../jsdom/lib/jsdom/living/helpers/details.js | 15 +
.../jsdom/living/helpers/document-base-url.js | 54 +
.../jsdom/lib/jsdom/living/helpers/events.js | 24 +
.../lib/jsdom/living/helpers/focusing.js | 104 +
.../lib/jsdom/living/helpers/form-controls.js | 306 +
.../jsdom/living/helpers/html-constructor.js | 78 +
.../lib/jsdom/living/helpers/http-request.js | 254 +
.../living/helpers/internal-constants.js | 12 +
.../jsdom/living/helpers/iterable-weak-set.js | 48 +
.../jsdom/lib/jsdom/living/helpers/json.js | 12 +
.../living/helpers/mutation-observers.js | 198 +
.../lib/jsdom/living/helpers/namespaces.js | 15 +
.../jsdom/lib/jsdom/living/helpers/node.js | 68 +
.../living/helpers/number-and-date-inputs.js | 195 +
.../lib/jsdom/living/helpers/ordered-set.js | 104 +
.../living/helpers/runtime-script-errors.js | 76 +
.../lib/jsdom/living/helpers/selectors.js | 47 +
.../lib/jsdom/living/helpers/shadow-dom.js | 285 +
.../jsdom/lib/jsdom/living/helpers/strings.js | 148 +
.../lib/jsdom/living/helpers/style-rules.js | 114 +
.../lib/jsdom/living/helpers/stylesheets.js | 113 +
.../jsdom/living/helpers/svg/basic-types.js | 41 +
.../lib/jsdom/living/helpers/svg/render.js | 46 +
.../jsdom/lib/jsdom/living/helpers/text.js | 19 +
.../lib/jsdom/living/helpers/traversal.js | 72 +
.../jsdom/living/helpers/validate-names.js | 75 +
.../jsdom/living/hr-time/Performance-impl.js | 25 +
.../jsdom/lib/jsdom/living/interfaces.js | 217 +
.../MutationObserver-impl.js | 95 +
.../mutation-observer/MutationRecord-impl.js | 37 +
.../jsdom/living/named-properties-window.js | 141 +
.../jsdom/living/navigator/MimeType-impl.js | 3 +
.../living/navigator/MimeTypeArray-impl.js | 21 +
.../jsdom/living/navigator/Navigator-impl.js | 29 +
.../NavigatorConcurrentHardware-impl.js | 8 +
.../living/navigator/NavigatorCookies-impl.js | 7 +
.../living/navigator/NavigatorID-impl.js | 37 +
.../navigator/NavigatorLanguage-impl.js | 9 +
.../living/navigator/NavigatorOnLine-impl.js | 7 +
.../living/navigator/NavigatorPlugins-impl.js | 8 +
.../lib/jsdom/living/navigator/Plugin-impl.js | 3 +
.../living/navigator/PluginArray-impl.js | 23 +
.../jsdom/living/node-document-position.js | 10 +
.../jsdom/lib/jsdom/living/node-type.js | 16 +
.../jsdom/lib/jsdom/living/node.js | 331 +
.../jsdom/living/nodes/CDATASection-impl.js | 16 +
.../jsdom/living/nodes/CharacterData-impl.js | 118 +
.../lib/jsdom/living/nodes/ChildNode-impl.js | 80 +
.../lib/jsdom/living/nodes/Comment-impl.js | 20 +
.../living/nodes/DOMImplementation-impl.js | 120 +
.../jsdom/living/nodes/DOMStringMap-impl.js | 64 +
.../jsdom/living/nodes/DOMTokenList-impl.js | 171 +
.../lib/jsdom/living/nodes/Document-impl.js | 946 +
.../living/nodes/DocumentFragment-impl.js | 44 +
.../living/nodes/DocumentOrShadowRoot-impl.js | 28 +
.../jsdom/living/nodes/DocumentType-impl.js | 24 +
.../lib/jsdom/living/nodes/Element-impl.js | 578 +
.../nodes/ElementCSSInlineStyle-impl.js | 25 +
.../nodes/ElementContentEditable-impl.js | 7 +
.../living/nodes/GlobalEventHandlers-impl.js | 95 +
.../living/nodes/HTMLAnchorElement-impl.js | 50 +
.../living/nodes/HTMLAreaElement-impl.js | 43 +
.../living/nodes/HTMLAudioElement-impl.js | 9 +
.../jsdom/living/nodes/HTMLBRElement-impl.js | 9 +
.../living/nodes/HTMLBaseElement-impl.js | 27 +
.../living/nodes/HTMLBodyElement-impl.js | 17 +
.../living/nodes/HTMLButtonElement-impl.js | 79 +
.../living/nodes/HTMLCanvasElement-impl.js | 130 +
.../jsdom/living/nodes/HTMLCollection-impl.js | 96 +
.../living/nodes/HTMLDListElement-impl.js | 9 +
.../living/nodes/HTMLDataElement-impl.js | 9 +
.../living/nodes/HTMLDataListElement-impl.js | 20 +
.../living/nodes/HTMLDetailsElement-impl.js | 35 +
.../living/nodes/HTMLDialogElement-impl.js | 9 +
.../living/nodes/HTMLDirectoryElement-impl.js | 9 +
.../jsdom/living/nodes/HTMLDivElement-impl.js | 9 +
.../jsdom/living/nodes/HTMLElement-impl.js | 160 +
.../living/nodes/HTMLEmbedElement-impl.js | 8 +
.../living/nodes/HTMLFieldSetElement-impl.js | 43 +
.../living/nodes/HTMLFontElement-impl.js | 9 +
.../living/nodes/HTMLFormElement-impl.js | 226 +
.../living/nodes/HTMLFrameElement-impl.js | 261 +
.../living/nodes/HTMLFrameSetElement-impl.js | 17 +
.../jsdom/living/nodes/HTMLHRElement-impl.js | 9 +
.../living/nodes/HTMLHeadElement-impl.js | 9 +
.../living/nodes/HTMLHeadingElement-impl.js | 9 +
.../living/nodes/HTMLHtmlElement-impl.js | 9 +
.../nodes/HTMLHyperlinkElementUtils-impl.js | 371 +
.../living/nodes/HTMLIFrameElement-impl.js | 9 +
.../living/nodes/HTMLImageElement-impl.js | 132 +
.../living/nodes/HTMLInputElement-impl.js | 1128 +
.../jsdom/living/nodes/HTMLLIElement-impl.js | 9 +
.../living/nodes/HTMLLabelElement-impl.js | 94 +
.../living/nodes/HTMLLegendElement-impl.js | 18 +
.../living/nodes/HTMLLinkElement-impl.js | 101 +
.../jsdom/living/nodes/HTMLMapElement-impl.js | 13 +
.../living/nodes/HTMLMarqueeElement-impl.js | 9 +
.../living/nodes/HTMLMediaElement-impl.js | 138 +
.../living/nodes/HTMLMenuElement-impl.js | 9 +
.../living/nodes/HTMLMetaElement-impl.js | 9 +
.../living/nodes/HTMLMeterElement-impl.js | 180 +
.../jsdom/living/nodes/HTMLModElement-impl.js | 9 +
.../living/nodes/HTMLOListElement-impl.js | 22 +
.../living/nodes/HTMLObjectElement-impl.js | 26 +
.../living/nodes/HTMLOptGroupElement-impl.js | 9 +
.../living/nodes/HTMLOptionElement-impl.js | 146 +
.../nodes/HTMLOptionsCollection-impl.js | 110 +
.../living/nodes/HTMLOrSVGElement-impl.js | 85 +
.../living/nodes/HTMLOutputElement-impl.js | 88 +
.../living/nodes/HTMLParagraphElement-impl.js | 9 +
.../living/nodes/HTMLParamElement-impl.js | 9 +
.../living/nodes/HTMLPictureElement-impl.js | 9 +
.../jsdom/living/nodes/HTMLPreElement-impl.js | 9 +
.../living/nodes/HTMLProgressElement-impl.js | 74 +
.../living/nodes/HTMLQuoteElement-impl.js | 9 +
.../living/nodes/HTMLScriptElement-impl.js | 265 +
.../living/nodes/HTMLSelectElement-impl.js | 283 +
.../living/nodes/HTMLSlotElement-impl.js | 59 +
.../living/nodes/HTMLSourceElement-impl.js | 8 +
.../living/nodes/HTMLSpanElement-impl.js | 9 +
.../living/nodes/HTMLStyleElement-impl.js | 74 +
.../nodes/HTMLTableCaptionElement-impl.js | 9 +
.../living/nodes/HTMLTableCellElement-impl.js | 73 +
.../living/nodes/HTMLTableColElement-impl.js | 9 +
.../living/nodes/HTMLTableElement-impl.js | 236 +
.../living/nodes/HTMLTableRowElement-impl.js | 88 +
.../nodes/HTMLTableSectionElement-impl.js | 61 +
.../living/nodes/HTMLTemplateElement-impl.js | 67 +
.../living/nodes/HTMLTextAreaElement-impl.js | 272 +
.../living/nodes/HTMLTimeElement-impl.js | 9 +
.../living/nodes/HTMLTitleElement-impl.js | 18 +
.../living/nodes/HTMLTrackElement-impl.js | 13 +
.../living/nodes/HTMLUListElement-impl.js | 9 +
.../living/nodes/HTMLUnknownElement-impl.js | 9 +
.../living/nodes/HTMLVideoElement-impl.js | 17 +
.../lib/jsdom/living/nodes/LinkStyle-impl.js | 2 +
.../jsdom/lib/jsdom/living/nodes/Node-impl.js | 1165 ++
.../lib/jsdom/living/nodes/NodeList-impl.js | 43 +
.../nodes/NonDocumentTypeChildNode-impl.js | 28 +
.../living/nodes/NonElementParentNode-impl.js | 11 +
.../lib/jsdom/living/nodes/ParentNode-impl.js | 91 +
.../nodes/ProcessingInstruction-impl.js | 22 +
.../lib/jsdom/living/nodes/SVGElement-impl.js | 64 +
.../living/nodes/SVGGraphicsElement-impl.js | 16 +
.../jsdom/living/nodes/SVGSVGElement-impl.js | 42 +
.../lib/jsdom/living/nodes/SVGTests-impl.js | 42 +
.../living/nodes/SVGTitleElement-impl.js | 9 +
.../lib/jsdom/living/nodes/ShadowRoot-impl.js | 40 +
.../lib/jsdom/living/nodes/Slotable-impl.js | 48 +
.../jsdom/lib/jsdom/living/nodes/Text-impl.js | 96 +
.../living/nodes/WindowEventHandlers-impl.js | 52 +
.../jsdom/living/nodes/XMLDocument-impl.js | 4 +
.../jsdom/lib/jsdom/living/post-message.js | 39 +
.../jsdom/living/range/AbstractRange-impl.js | 43 +
.../lib/jsdom/living/range/Range-impl.js | 889 +
.../jsdom/living/range/StaticRange-impl.js | 39 +
.../lib/jsdom/living/range/boundary-point.js | 47 +
.../jsdom/living/selection/Selection-impl.js | 342 +
.../living/svg/SVGAnimatedString-impl.js | 38 +
.../jsdom/lib/jsdom/living/svg/SVGListBase.js | 195 +
.../lib/jsdom/living/svg/SVGNumber-impl.js | 48 +
.../jsdom/living/svg/SVGStringList-impl.js | 16 +
.../living/traversal/NodeIterator-impl.js | 127 +
.../jsdom/living/traversal/TreeWalker-impl.js | 217 +
.../lib/jsdom/living/traversal/helpers.js | 44 +
.../websockets/WebSocket-impl-browser.js | 175 +
.../jsdom/living/websockets/WebSocket-impl.js | 328 +
.../jsdom/living/webstorage/Storage-impl.js | 102 +
.../lib/jsdom/living/window/BarProp-impl.js | 10 +
.../lib/jsdom/living/window/External-impl.js | 9 +
.../lib/jsdom/living/window/History-impl.js | 134 +
.../lib/jsdom/living/window/Location-impl.js | 238 +
.../lib/jsdom/living/window/Screen-impl.js | 13 +
.../lib/jsdom/living/window/SessionHistory.js | 163 +
.../lib/jsdom/living/window/navigation.js | 84 +
.../lib/jsdom/living/xhr/FormData-impl.js | 171 +
.../jsdom/living/xhr/XMLHttpRequest-impl.js | 1023 +
.../xhr/XMLHttpRequestEventTarget-impl.js | 17 +
.../living/xhr/XMLHttpRequestUpload-impl.js | 4 +
.../lib/jsdom/living/xhr/xhr-sync-worker.js | 60 +
.../jsdom/lib/jsdom/living/xhr/xhr-utils.js | 438 +
.../lib/jsdom/named-properties-tracker.js | 158 +
.../node_modules/jsdom/lib/jsdom/utils.js | 165 +
.../jsdom/lib/jsdom/virtual-console.js | 34 +
.../node_modules/jsdom/lib/jsdom/vm-shim.js | 106 +
.../node_modules/jsdom/package.json | 116 +
.../node_modules/jsesc/LICENSE-MIT.txt | 20 +
.../examples_4/node_modules/jsesc/README.md | 421 +
.../examples_4/node_modules/jsesc/bin/jsesc | 148 +
.../examples_4/node_modules/jsesc/jsesc.js | 329 +
.../examples_4/node_modules/jsesc/man/jsesc.1 | 94 +
.../node_modules/jsesc/package.json | 54 +
.../CHANGELOG.md | 50 +
.../json-parse-even-better-errors/LICENSE.md | 25 +
.../json-parse-even-better-errors/README.md | 96 +
.../json-parse-even-better-errors/index.js | 121 +
.../package.json | 33 +
.../examples_4/node_modules/json5/LICENSE.md | 23 +
.../examples_4/node_modules/json5/README.md | 234 +
.../node_modules/json5/dist/index.js | 1710 ++
.../node_modules/json5/dist/index.min.js | 1 +
.../node_modules/json5/dist/index.min.mjs | 1 +
.../node_modules/json5/dist/index.mjs | 1399 ++
.../examples_4/node_modules/json5/lib/cli.js | 152 +
.../node_modules/json5/lib/index.d.ts | 4 +
.../node_modules/json5/lib/index.js | 9 +
.../node_modules/json5/lib/parse.d.ts | 15 +
.../node_modules/json5/lib/parse.js | 1087 +
.../node_modules/json5/lib/register.js | 13 +
.../node_modules/json5/lib/require.js | 4 +
.../node_modules/json5/lib/stringify.d.ts | 89 +
.../node_modules/json5/lib/stringify.js | 261 +
.../node_modules/json5/lib/unicode.d.ts | 3 +
.../node_modules/json5/lib/unicode.js | 4 +
.../node_modules/json5/lib/util.d.ts | 5 +
.../examples_4/node_modules/json5/lib/util.js | 35 +
.../node_modules/json5/package.json | 69 +
.../examples_4/node_modules/kleur/index.js | 104 +
.../examples_4/node_modules/kleur/kleur.d.ts | 45 +
.../examples_4/node_modules/kleur/license | 21 +
.../node_modules/kleur/package.json | 35 +
.../examples_4/node_modules/kleur/readme.md | 172 +
.../examples_4/node_modules/leven/index.d.ts | 21 +
.../examples_4/node_modules/leven/index.js | 77 +
.../examples_4/node_modules/leven/license | 9 +
.../node_modules/leven/package.json | 57 +
.../examples_4/node_modules/leven/readme.md | 50 +
.../examples_4/node_modules/levn/LICENSE | 22 +
.../examples_4/node_modules/levn/README.md | 196 +
.../examples_4/node_modules/levn/lib/cast.js | 298 +
.../node_modules/levn/lib/coerce.js | 285 +
.../examples_4/node_modules/levn/lib/index.js | 22 +
.../node_modules/levn/lib/parse-string.js | 113 +
.../examples_4/node_modules/levn/lib/parse.js | 102 +
.../examples_4/node_modules/levn/package.json | 47 +
.../node_modules/lines-and-columns/LICENSE | 21 +
.../node_modules/lines-and-columns/README.md | 33 +
.../lines-and-columns/build/index.d.ts | 13 +
.../lines-and-columns/build/index.js | 62 +
.../lines-and-columns/package.json | 49 +
.../node_modules/locate-path/index.d.ts | 83 +
.../node_modules/locate-path/index.js | 65 +
.../node_modules/locate-path/license | 9 +
.../node_modules/locate-path/package.json | 45 +
.../node_modules/locate-path/readme.md | 122 +
.../examples_4/node_modules/lodash/LICENSE | 47 +
.../examples_4/node_modules/lodash/README.md | 39 +
.../node_modules/lodash/_DataView.js | 7 +
.../examples_4/node_modules/lodash/_Hash.js | 32 +
.../node_modules/lodash/_LazyWrapper.js | 28 +
.../node_modules/lodash/_ListCache.js | 32 +
.../node_modules/lodash/_LodashWrapper.js | 22 +
.../examples_4/node_modules/lodash/_Map.js | 7 +
.../node_modules/lodash/_MapCache.js | 32 +
.../node_modules/lodash/_Promise.js | 7 +
.../examples_4/node_modules/lodash/_Set.js | 7 +
.../node_modules/lodash/_SetCache.js | 27 +
.../examples_4/node_modules/lodash/_Stack.js | 27 +
.../examples_4/node_modules/lodash/_Symbol.js | 6 +
.../node_modules/lodash/_Uint8Array.js | 6 +
.../node_modules/lodash/_WeakMap.js | 7 +
.../examples_4/node_modules/lodash/_apply.js | 21 +
.../node_modules/lodash/_arrayAggregator.js | 22 +
.../node_modules/lodash/_arrayEach.js | 22 +
.../node_modules/lodash/_arrayEachRight.js | 21 +
.../node_modules/lodash/_arrayEvery.js | 23 +
.../node_modules/lodash/_arrayFilter.js | 25 +
.../node_modules/lodash/_arrayIncludes.js | 17 +
.../node_modules/lodash/_arrayIncludesWith.js | 22 +
.../node_modules/lodash/_arrayLikeKeys.js | 49 +
.../node_modules/lodash/_arrayMap.js | 21 +
.../node_modules/lodash/_arrayPush.js | 20 +
.../node_modules/lodash/_arrayReduce.js | 26 +
.../node_modules/lodash/_arrayReduceRight.js | 24 +
.../node_modules/lodash/_arraySample.js | 15 +
.../node_modules/lodash/_arraySampleSize.js | 17 +
.../node_modules/lodash/_arrayShuffle.js | 15 +
.../node_modules/lodash/_arraySome.js | 23 +
.../node_modules/lodash/_asciiSize.js | 12 +
.../node_modules/lodash/_asciiToArray.js | 12 +
.../node_modules/lodash/_asciiWords.js | 15 +
.../node_modules/lodash/_assignMergeValue.js | 20 +
.../node_modules/lodash/_assignValue.js | 28 +
.../node_modules/lodash/_assocIndexOf.js | 21 +
.../node_modules/lodash/_baseAggregator.js | 21 +
.../node_modules/lodash/_baseAssign.js | 17 +
.../node_modules/lodash/_baseAssignIn.js | 17 +
.../node_modules/lodash/_baseAssignValue.js | 25 +
.../examples_4/node_modules/lodash/_baseAt.js | 23 +
.../node_modules/lodash/_baseClamp.js | 22 +
.../node_modules/lodash/_baseClone.js | 166 +
.../node_modules/lodash/_baseConforms.js | 18 +
.../node_modules/lodash/_baseConformsTo.js | 27 +
.../node_modules/lodash/_baseCreate.js | 30 +
.../node_modules/lodash/_baseDelay.js | 21 +
.../node_modules/lodash/_baseDifference.js | 67 +
.../node_modules/lodash/_baseEach.js | 14 +
.../node_modules/lodash/_baseEachRight.js | 14 +
.../node_modules/lodash/_baseEvery.js | 21 +
.../node_modules/lodash/_baseExtremum.js | 32 +
.../node_modules/lodash/_baseFill.js | 32 +
.../node_modules/lodash/_baseFilter.js | 21 +
.../node_modules/lodash/_baseFindIndex.js | 24 +
.../node_modules/lodash/_baseFindKey.js | 23 +
.../node_modules/lodash/_baseFlatten.js | 38 +
.../node_modules/lodash/_baseFor.js | 16 +
.../node_modules/lodash/_baseForOwn.js | 16 +
.../node_modules/lodash/_baseForOwnRight.js | 16 +
.../node_modules/lodash/_baseForRight.js | 15 +
.../node_modules/lodash/_baseFunctions.js | 19 +
.../node_modules/lodash/_baseGet.js | 24 +
.../node_modules/lodash/_baseGetAllKeys.js | 20 +
.../node_modules/lodash/_baseGetTag.js | 28 +
.../examples_4/node_modules/lodash/_baseGt.js | 14 +
.../node_modules/lodash/_baseHas.js | 19 +
.../node_modules/lodash/_baseHasIn.js | 13 +
.../node_modules/lodash/_baseInRange.js | 18 +
.../node_modules/lodash/_baseIndexOf.js | 20 +
.../node_modules/lodash/_baseIndexOfWith.js | 23 +
.../node_modules/lodash/_baseIntersection.js | 74 +
.../node_modules/lodash/_baseInverter.js | 21 +
.../node_modules/lodash/_baseInvoke.js | 24 +
.../node_modules/lodash/_baseIsArguments.js | 18 +
.../node_modules/lodash/_baseIsArrayBuffer.js | 17 +
.../node_modules/lodash/_baseIsDate.js | 18 +
.../node_modules/lodash/_baseIsEqual.js | 28 +
.../node_modules/lodash/_baseIsEqualDeep.js | 83 +
.../node_modules/lodash/_baseIsMap.js | 18 +
.../node_modules/lodash/_baseIsMatch.js | 62 +
.../node_modules/lodash/_baseIsNaN.js | 12 +
.../node_modules/lodash/_baseIsNative.js | 47 +
.../node_modules/lodash/_baseIsRegExp.js | 18 +
.../node_modules/lodash/_baseIsSet.js | 18 +
.../node_modules/lodash/_baseIsTypedArray.js | 60 +
.../node_modules/lodash/_baseIteratee.js | 31 +
.../node_modules/lodash/_baseKeys.js | 30 +
.../node_modules/lodash/_baseKeysIn.js | 33 +
.../node_modules/lodash/_baseLodash.js | 10 +
.../examples_4/node_modules/lodash/_baseLt.js | 14 +
.../node_modules/lodash/_baseMap.js | 22 +
.../node_modules/lodash/_baseMatches.js | 22 +
.../lodash/_baseMatchesProperty.js | 33 +
.../node_modules/lodash/_baseMean.js | 20 +
.../node_modules/lodash/_baseMerge.js | 42 +
.../node_modules/lodash/_baseMergeDeep.js | 94 +
.../node_modules/lodash/_baseNth.js | 20 +
.../node_modules/lodash/_baseOrderBy.js | 49 +
.../node_modules/lodash/_basePick.js | 19 +
.../node_modules/lodash/_basePickBy.js | 30 +
.../node_modules/lodash/_baseProperty.js | 14 +
.../node_modules/lodash/_basePropertyDeep.js | 16 +
.../node_modules/lodash/_basePropertyOf.js | 14 +
.../node_modules/lodash/_basePullAll.js | 51 +
.../node_modules/lodash/_basePullAt.js | 37 +
.../node_modules/lodash/_baseRandom.js | 18 +
.../node_modules/lodash/_baseRange.js | 28 +
.../node_modules/lodash/_baseReduce.js | 23 +
.../node_modules/lodash/_baseRepeat.js | 35 +
.../node_modules/lodash/_baseRest.js | 17 +
.../node_modules/lodash/_baseSample.js | 15 +
.../node_modules/lodash/_baseSampleSize.js | 18 +
.../node_modules/lodash/_baseSet.js | 51 +
.../node_modules/lodash/_baseSetData.js | 17 +
.../node_modules/lodash/_baseSetToString.js | 22 +
.../node_modules/lodash/_baseShuffle.js | 15 +
.../node_modules/lodash/_baseSlice.js | 31 +
.../node_modules/lodash/_baseSome.js | 22 +
.../node_modules/lodash/_baseSortBy.js | 21 +
.../node_modules/lodash/_baseSortedIndex.js | 42 +
.../node_modules/lodash/_baseSortedIndexBy.js | 67 +
.../node_modules/lodash/_baseSortedUniq.js | 30 +
.../node_modules/lodash/_baseSum.js | 24 +
.../node_modules/lodash/_baseTimes.js | 20 +
.../node_modules/lodash/_baseToNumber.js | 24 +
.../node_modules/lodash/_baseToPairs.js | 18 +
.../node_modules/lodash/_baseToString.js | 37 +
.../node_modules/lodash/_baseTrim.js | 19 +
.../node_modules/lodash/_baseUnary.js | 14 +
.../node_modules/lodash/_baseUniq.js | 72 +
.../node_modules/lodash/_baseUnset.js | 20 +
.../node_modules/lodash/_baseUpdate.js | 18 +
.../node_modules/lodash/_baseValues.js | 19 +
.../node_modules/lodash/_baseWhile.js | 26 +
.../node_modules/lodash/_baseWrapperValue.js | 25 +
.../node_modules/lodash/_baseXor.js | 36 +
.../node_modules/lodash/_baseZipObject.js | 23 +
.../node_modules/lodash/_cacheHas.js | 13 +
.../lodash/_castArrayLikeObject.js | 14 +
.../node_modules/lodash/_castFunction.js | 14 +
.../node_modules/lodash/_castPath.js | 21 +
.../node_modules/lodash/_castRest.js | 14 +
.../node_modules/lodash/_castSlice.js | 18 +
.../node_modules/lodash/_charsEndIndex.js | 19 +
.../node_modules/lodash/_charsStartIndex.js | 20 +
.../node_modules/lodash/_cloneArrayBuffer.js | 16 +
.../node_modules/lodash/_cloneBuffer.js | 35 +
.../node_modules/lodash/_cloneDataView.js | 16 +
.../node_modules/lodash/_cloneRegExp.js | 17 +
.../node_modules/lodash/_cloneSymbol.js | 18 +
.../node_modules/lodash/_cloneTypedArray.js | 16 +
.../node_modules/lodash/_compareAscending.js | 41 +
.../node_modules/lodash/_compareMultiple.js | 44 +
.../node_modules/lodash/_composeArgs.js | 39 +
.../node_modules/lodash/_composeArgsRight.js | 41 +
.../node_modules/lodash/_copyArray.js | 20 +
.../node_modules/lodash/_copyObject.js | 40 +
.../node_modules/lodash/_copySymbols.js | 16 +
.../node_modules/lodash/_copySymbolsIn.js | 16 +
.../node_modules/lodash/_coreJsData.js | 6 +
.../node_modules/lodash/_countHolders.js | 21 +
.../node_modules/lodash/_createAggregator.js | 23 +
.../node_modules/lodash/_createAssigner.js | 37 +
.../node_modules/lodash/_createBaseEach.js | 32 +
.../node_modules/lodash/_createBaseFor.js | 25 +
.../node_modules/lodash/_createBind.js | 28 +
.../node_modules/lodash/_createCaseFirst.js | 33 +
.../node_modules/lodash/_createCompounder.js | 24 +
.../node_modules/lodash/_createCtor.js | 37 +
.../node_modules/lodash/_createCurry.js | 46 +
.../node_modules/lodash/_createFind.js | 25 +
.../node_modules/lodash/_createFlow.js | 78 +
.../node_modules/lodash/_createHybrid.js | 92 +
.../node_modules/lodash/_createInverter.js | 17 +
.../lodash/_createMathOperation.js | 38 +
.../node_modules/lodash/_createOver.js | 27 +
.../node_modules/lodash/_createPadding.js | 33 +
.../node_modules/lodash/_createPartial.js | 43 +
.../node_modules/lodash/_createRange.js | 30 +
.../node_modules/lodash/_createRecurry.js | 56 +
.../lodash/_createRelationalOperation.js | 20 +
.../node_modules/lodash/_createRound.js | 35 +
.../node_modules/lodash/_createSet.js | 19 +
.../node_modules/lodash/_createToPairs.js | 30 +
.../node_modules/lodash/_createWrap.js | 106 +
.../lodash/_customDefaultsAssignIn.js | 29 +
.../lodash/_customDefaultsMerge.js | 28 +
.../node_modules/lodash/_customOmitClone.js | 16 +
.../node_modules/lodash/_deburrLetter.js | 71 +
.../node_modules/lodash/_defineProperty.js | 11 +
.../node_modules/lodash/_equalArrays.js | 84 +
.../node_modules/lodash/_equalByTag.js | 112 +
.../node_modules/lodash/_equalObjects.js | 90 +
.../node_modules/lodash/_escapeHtmlChar.js | 21 +
.../node_modules/lodash/_escapeStringChar.js | 22 +
.../node_modules/lodash/_flatRest.js | 16 +
.../node_modules/lodash/_freeGlobal.js | 4 +
.../node_modules/lodash/_getAllKeys.js | 16 +
.../node_modules/lodash/_getAllKeysIn.js | 17 +
.../node_modules/lodash/_getData.js | 15 +
.../node_modules/lodash/_getFuncName.js | 31 +
.../node_modules/lodash/_getHolder.js | 13 +
.../node_modules/lodash/_getMapData.js | 18 +
.../node_modules/lodash/_getMatchData.js | 24 +
.../node_modules/lodash/_getNative.js | 17 +
.../node_modules/lodash/_getPrototype.js | 6 +
.../node_modules/lodash/_getRawTag.js | 46 +
.../node_modules/lodash/_getSymbols.js | 30 +
.../node_modules/lodash/_getSymbolsIn.js | 25 +
.../examples_4/node_modules/lodash/_getTag.js | 58 +
.../node_modules/lodash/_getValue.js | 13 +
.../node_modules/lodash/_getView.js | 33 +
.../node_modules/lodash/_getWrapDetails.js | 17 +
.../node_modules/lodash/_hasPath.js | 39 +
.../node_modules/lodash/_hasUnicode.js | 26 +
.../node_modules/lodash/_hasUnicodeWord.js | 15 +
.../node_modules/lodash/_hashClear.js | 15 +
.../node_modules/lodash/_hashDelete.js | 17 +
.../node_modules/lodash/_hashGet.js | 30 +
.../node_modules/lodash/_hashHas.js | 23 +
.../node_modules/lodash/_hashSet.js | 23 +
.../node_modules/lodash/_initCloneArray.js | 26 +
.../node_modules/lodash/_initCloneByTag.js | 77 +
.../node_modules/lodash/_initCloneObject.js | 18 +
.../node_modules/lodash/_insertWrapDetails.js | 23 +
.../node_modules/lodash/_isFlattenable.js | 20 +
.../node_modules/lodash/_isIndex.js | 25 +
.../node_modules/lodash/_isIterateeCall.js | 30 +
.../examples_4/node_modules/lodash/_isKey.js | 29 +
.../node_modules/lodash/_isKeyable.js | 15 +
.../node_modules/lodash/_isLaziable.js | 28 +
.../node_modules/lodash/_isMaskable.js | 14 +
.../node_modules/lodash/_isMasked.js | 20 +
.../node_modules/lodash/_isPrototype.js | 18 +
.../lodash/_isStrictComparable.js | 15 +
.../node_modules/lodash/_iteratorToArray.js | 18 +
.../node_modules/lodash/_lazyClone.js | 23 +
.../node_modules/lodash/_lazyReverse.js | 23 +
.../node_modules/lodash/_lazyValue.js | 69 +
.../node_modules/lodash/_listCacheClear.js | 13 +
.../node_modules/lodash/_listCacheDelete.js | 35 +
.../node_modules/lodash/_listCacheGet.js | 19 +
.../node_modules/lodash/_listCacheHas.js | 16 +
.../node_modules/lodash/_listCacheSet.js | 26 +
.../node_modules/lodash/_mapCacheClear.js | 21 +
.../node_modules/lodash/_mapCacheDelete.js | 18 +
.../node_modules/lodash/_mapCacheGet.js | 16 +
.../node_modules/lodash/_mapCacheHas.js | 16 +
.../node_modules/lodash/_mapCacheSet.js | 22 +
.../node_modules/lodash/_mapToArray.js | 18 +
.../lodash/_matchesStrictComparable.js | 20 +
.../node_modules/lodash/_memoizeCapped.js | 26 +
.../node_modules/lodash/_mergeData.js | 90 +
.../node_modules/lodash/_metaMap.js | 6 +
.../node_modules/lodash/_nativeCreate.js | 6 +
.../node_modules/lodash/_nativeKeys.js | 6 +
.../node_modules/lodash/_nativeKeysIn.js | 20 +
.../node_modules/lodash/_nodeUtil.js | 30 +
.../node_modules/lodash/_objectToString.js | 22 +
.../node_modules/lodash/_overArg.js | 15 +
.../node_modules/lodash/_overRest.js | 36 +
.../examples_4/node_modules/lodash/_parent.js | 16 +
.../node_modules/lodash/_reEscape.js | 4 +
.../node_modules/lodash/_reEvaluate.js | 4 +
.../node_modules/lodash/_reInterpolate.js | 4 +
.../node_modules/lodash/_realNames.js | 4 +
.../node_modules/lodash/_reorder.js | 29 +
.../node_modules/lodash/_replaceHolders.js | 29 +
.../examples_4/node_modules/lodash/_root.js | 9 +
.../node_modules/lodash/_safeGet.js | 21 +
.../node_modules/lodash/_setCacheAdd.js | 19 +
.../node_modules/lodash/_setCacheHas.js | 14 +
.../node_modules/lodash/_setData.js | 20 +
.../node_modules/lodash/_setToArray.js | 18 +
.../node_modules/lodash/_setToPairs.js | 18 +
.../node_modules/lodash/_setToString.js | 14 +
.../node_modules/lodash/_setWrapToString.js | 21 +
.../node_modules/lodash/_shortOut.js | 37 +
.../node_modules/lodash/_shuffleSelf.js | 28 +
.../node_modules/lodash/_stackClear.js | 15 +
.../node_modules/lodash/_stackDelete.js | 18 +
.../node_modules/lodash/_stackGet.js | 14 +
.../node_modules/lodash/_stackHas.js | 14 +
.../node_modules/lodash/_stackSet.js | 34 +
.../node_modules/lodash/_strictIndexOf.js | 23 +
.../node_modules/lodash/_strictLastIndexOf.js | 21 +
.../node_modules/lodash/_stringSize.js | 18 +
.../node_modules/lodash/_stringToArray.js | 18 +
.../node_modules/lodash/_stringToPath.js | 27 +
.../examples_4/node_modules/lodash/_toKey.js | 21 +
.../node_modules/lodash/_toSource.js | 26 +
.../node_modules/lodash/_trimmedEndIndex.js | 19 +
.../node_modules/lodash/_unescapeHtmlChar.js | 21 +
.../node_modules/lodash/_unicodeSize.js | 44 +
.../node_modules/lodash/_unicodeToArray.js | 40 +
.../node_modules/lodash/_unicodeWords.js | 69 +
.../node_modules/lodash/_updateWrapDetails.js | 46 +
.../node_modules/lodash/_wrapperClone.js | 23 +
.../examples_4/node_modules/lodash/add.js | 22 +
.../examples_4/node_modules/lodash/after.js | 42 +
.../examples_4/node_modules/lodash/array.js | 67 +
.../examples_4/node_modules/lodash/ary.js | 29 +
.../examples_4/node_modules/lodash/assign.js | 58 +
.../node_modules/lodash/assignIn.js | 40 +
.../node_modules/lodash/assignInWith.js | 38 +
.../node_modules/lodash/assignWith.js | 37 +
.../examples_4/node_modules/lodash/at.js | 23 +
.../examples_4/node_modules/lodash/attempt.js | 35 +
.../examples_4/node_modules/lodash/before.js | 40 +
.../examples_4/node_modules/lodash/bind.js | 57 +
.../examples_4/node_modules/lodash/bindAll.js | 41 +
.../examples_4/node_modules/lodash/bindKey.js | 68 +
.../node_modules/lodash/camelCase.js | 29 +
.../node_modules/lodash/capitalize.js | 23 +
.../node_modules/lodash/castArray.js | 44 +
.../examples_4/node_modules/lodash/ceil.js | 26 +
.../examples_4/node_modules/lodash/chain.js | 38 +
.../examples_4/node_modules/lodash/chunk.js | 50 +
.../examples_4/node_modules/lodash/clamp.js | 39 +
.../examples_4/node_modules/lodash/clone.js | 36 +
.../node_modules/lodash/cloneDeep.js | 29 +
.../node_modules/lodash/cloneDeepWith.js | 40 +
.../node_modules/lodash/cloneWith.js | 42 +
.../node_modules/lodash/collection.js | 30 +
.../examples_4/node_modules/lodash/commit.js | 33 +
.../examples_4/node_modules/lodash/compact.js | 31 +
.../examples_4/node_modules/lodash/concat.js | 43 +
.../examples_4/node_modules/lodash/cond.js | 60 +
.../node_modules/lodash/conforms.js | 35 +
.../node_modules/lodash/conformsTo.js | 32 +
.../node_modules/lodash/constant.js | 26 +
.../examples_4/node_modules/lodash/core.js | 3877 ++++
.../node_modules/lodash/core.min.js | 29 +
.../examples_4/node_modules/lodash/countBy.js | 40 +
.../examples_4/node_modules/lodash/create.js | 43 +
.../examples_4/node_modules/lodash/curry.js | 57 +
.../node_modules/lodash/curryRight.js | 54 +
.../examples_4/node_modules/lodash/date.js | 3 +
.../node_modules/lodash/debounce.js | 191 +
.../examples_4/node_modules/lodash/deburr.js | 45 +
.../node_modules/lodash/defaultTo.js | 25 +
.../node_modules/lodash/defaults.js | 64 +
.../node_modules/lodash/defaultsDeep.js | 30 +
.../examples_4/node_modules/lodash/defer.js | 26 +
.../examples_4/node_modules/lodash/delay.js | 28 +
.../node_modules/lodash/difference.js | 33 +
.../node_modules/lodash/differenceBy.js | 44 +
.../node_modules/lodash/differenceWith.js | 40 +
.../examples_4/node_modules/lodash/divide.js | 22 +
.../examples_4/node_modules/lodash/drop.js | 38 +
.../node_modules/lodash/dropRight.js | 39 +
.../node_modules/lodash/dropRightWhile.js | 45 +
.../node_modules/lodash/dropWhile.js | 45 +
.../examples_4/node_modules/lodash/each.js | 1 +
.../node_modules/lodash/eachRight.js | 1 +
.../node_modules/lodash/endsWith.js | 43 +
.../examples_4/node_modules/lodash/entries.js | 1 +
.../node_modules/lodash/entriesIn.js | 1 +
.../examples_4/node_modules/lodash/eq.js | 37 +
.../examples_4/node_modules/lodash/escape.js | 43 +
.../node_modules/lodash/escapeRegExp.js | 32 +
.../examples_4/node_modules/lodash/every.js | 56 +
.../examples_4/node_modules/lodash/extend.js | 1 +
.../node_modules/lodash/extendWith.js | 1 +
.../examples_4/node_modules/lodash/fill.js | 45 +
.../examples_4/node_modules/lodash/filter.js | 52 +
.../examples_4/node_modules/lodash/find.js | 42 +
.../node_modules/lodash/findIndex.js | 55 +
.../examples_4/node_modules/lodash/findKey.js | 44 +
.../node_modules/lodash/findLast.js | 25 +
.../node_modules/lodash/findLastIndex.js | 59 +
.../node_modules/lodash/findLastKey.js | 44 +
.../examples_4/node_modules/lodash/first.js | 1 +
.../examples_4/node_modules/lodash/flake.lock | 40 +
.../examples_4/node_modules/lodash/flake.nix | 20 +
.../examples_4/node_modules/lodash/flatMap.js | 29 +
.../node_modules/lodash/flatMapDeep.js | 31 +
.../node_modules/lodash/flatMapDepth.js | 31 +
.../examples_4/node_modules/lodash/flatten.js | 22 +
.../node_modules/lodash/flattenDeep.js | 25 +
.../node_modules/lodash/flattenDepth.js | 33 +
.../examples_4/node_modules/lodash/flip.js | 28 +
.../examples_4/node_modules/lodash/floor.js | 26 +
.../examples_4/node_modules/lodash/flow.js | 27 +
.../node_modules/lodash/flowRight.js | 26 +
.../examples_4/node_modules/lodash/forEach.js | 41 +
.../node_modules/lodash/forEachRight.js | 31 +
.../examples_4/node_modules/lodash/forIn.js | 39 +
.../node_modules/lodash/forInRight.js | 37 +
.../examples_4/node_modules/lodash/forOwn.js | 36 +
.../node_modules/lodash/forOwnRight.js | 34 +
.../examples_4/node_modules/lodash/fp.js | 2 +
.../examples_4/node_modules/lodash/fp/F.js | 1 +
.../examples_4/node_modules/lodash/fp/T.js | 1 +
.../examples_4/node_modules/lodash/fp/__.js | 1 +
.../node_modules/lodash/fp/_baseConvert.js | 569 +
.../node_modules/lodash/fp/_convertBrowser.js | 18 +
.../node_modules/lodash/fp/_falseOptions.js | 7 +
.../node_modules/lodash/fp/_mapping.js | 358 +
.../node_modules/lodash/fp/_util.js | 16 +
.../examples_4/node_modules/lodash/fp/add.js | 5 +
.../node_modules/lodash/fp/after.js | 5 +
.../examples_4/node_modules/lodash/fp/all.js | 1 +
.../node_modules/lodash/fp/allPass.js | 1 +
.../node_modules/lodash/fp/always.js | 1 +
.../examples_4/node_modules/lodash/fp/any.js | 1 +
.../node_modules/lodash/fp/anyPass.js | 1 +
.../node_modules/lodash/fp/apply.js | 1 +
.../node_modules/lodash/fp/array.js | 2 +
.../examples_4/node_modules/lodash/fp/ary.js | 5 +
.../node_modules/lodash/fp/assign.js | 5 +
.../node_modules/lodash/fp/assignAll.js | 5 +
.../node_modules/lodash/fp/assignAllWith.js | 5 +
.../node_modules/lodash/fp/assignIn.js | 5 +
.../node_modules/lodash/fp/assignInAll.js | 5 +
.../node_modules/lodash/fp/assignInAllWith.js | 5 +
.../node_modules/lodash/fp/assignInWith.js | 5 +
.../node_modules/lodash/fp/assignWith.js | 5 +
.../node_modules/lodash/fp/assoc.js | 1 +
.../node_modules/lodash/fp/assocPath.js | 1 +
.../examples_4/node_modules/lodash/fp/at.js | 5 +
.../node_modules/lodash/fp/attempt.js | 5 +
.../node_modules/lodash/fp/before.js | 5 +
.../examples_4/node_modules/lodash/fp/bind.js | 5 +
.../node_modules/lodash/fp/bindAll.js | 5 +
.../node_modules/lodash/fp/bindKey.js | 5 +
.../node_modules/lodash/fp/camelCase.js | 5 +
.../node_modules/lodash/fp/capitalize.js | 5 +
.../node_modules/lodash/fp/castArray.js | 5 +
.../examples_4/node_modules/lodash/fp/ceil.js | 5 +
.../node_modules/lodash/fp/chain.js | 5 +
.../node_modules/lodash/fp/chunk.js | 5 +
.../node_modules/lodash/fp/clamp.js | 5 +
.../node_modules/lodash/fp/clone.js | 5 +
.../node_modules/lodash/fp/cloneDeep.js | 5 +
.../node_modules/lodash/fp/cloneDeepWith.js | 5 +
.../node_modules/lodash/fp/cloneWith.js | 5 +
.../node_modules/lodash/fp/collection.js | 2 +
.../node_modules/lodash/fp/commit.js | 5 +
.../node_modules/lodash/fp/compact.js | 5 +
.../node_modules/lodash/fp/complement.js | 1 +
.../node_modules/lodash/fp/compose.js | 1 +
.../node_modules/lodash/fp/concat.js | 5 +
.../examples_4/node_modules/lodash/fp/cond.js | 5 +
.../node_modules/lodash/fp/conforms.js | 1 +
.../node_modules/lodash/fp/conformsTo.js | 5 +
.../node_modules/lodash/fp/constant.js | 5 +
.../node_modules/lodash/fp/contains.js | 1 +
.../node_modules/lodash/fp/convert.js | 18 +
.../node_modules/lodash/fp/countBy.js | 5 +
.../node_modules/lodash/fp/create.js | 5 +
.../node_modules/lodash/fp/curry.js | 5 +
.../node_modules/lodash/fp/curryN.js | 5 +
.../node_modules/lodash/fp/curryRight.js | 5 +
.../node_modules/lodash/fp/curryRightN.js | 5 +
.../examples_4/node_modules/lodash/fp/date.js | 2 +
.../node_modules/lodash/fp/debounce.js | 5 +
.../node_modules/lodash/fp/deburr.js | 5 +
.../node_modules/lodash/fp/defaultTo.js | 5 +
.../node_modules/lodash/fp/defaults.js | 5 +
.../node_modules/lodash/fp/defaultsAll.js | 5 +
.../node_modules/lodash/fp/defaultsDeep.js | 5 +
.../node_modules/lodash/fp/defaultsDeepAll.js | 5 +
.../node_modules/lodash/fp/defer.js | 5 +
.../node_modules/lodash/fp/delay.js | 5 +
.../node_modules/lodash/fp/difference.js | 5 +
.../node_modules/lodash/fp/differenceBy.js | 5 +
.../node_modules/lodash/fp/differenceWith.js | 5 +
.../node_modules/lodash/fp/dissoc.js | 1 +
.../node_modules/lodash/fp/dissocPath.js | 1 +
.../node_modules/lodash/fp/divide.js | 5 +
.../examples_4/node_modules/lodash/fp/drop.js | 5 +
.../node_modules/lodash/fp/dropLast.js | 1 +
.../node_modules/lodash/fp/dropLastWhile.js | 1 +
.../node_modules/lodash/fp/dropRight.js | 5 +
.../node_modules/lodash/fp/dropRightWhile.js | 5 +
.../node_modules/lodash/fp/dropWhile.js | 5 +
.../examples_4/node_modules/lodash/fp/each.js | 1 +
.../node_modules/lodash/fp/eachRight.js | 1 +
.../node_modules/lodash/fp/endsWith.js | 5 +
.../node_modules/lodash/fp/entries.js | 1 +
.../node_modules/lodash/fp/entriesIn.js | 1 +
.../examples_4/node_modules/lodash/fp/eq.js | 5 +
.../node_modules/lodash/fp/equals.js | 1 +
.../node_modules/lodash/fp/escape.js | 5 +
.../node_modules/lodash/fp/escapeRegExp.js | 5 +
.../node_modules/lodash/fp/every.js | 5 +
.../node_modules/lodash/fp/extend.js | 1 +
.../node_modules/lodash/fp/extendAll.js | 1 +
.../node_modules/lodash/fp/extendAllWith.js | 1 +
.../node_modules/lodash/fp/extendWith.js | 1 +
.../examples_4/node_modules/lodash/fp/fill.js | 5 +
.../node_modules/lodash/fp/filter.js | 5 +
.../examples_4/node_modules/lodash/fp/find.js | 5 +
.../node_modules/lodash/fp/findFrom.js | 5 +
.../node_modules/lodash/fp/findIndex.js | 5 +
.../node_modules/lodash/fp/findIndexFrom.js | 5 +
.../node_modules/lodash/fp/findKey.js | 5 +
.../node_modules/lodash/fp/findLast.js | 5 +
.../node_modules/lodash/fp/findLastFrom.js | 5 +
.../node_modules/lodash/fp/findLastIndex.js | 5 +
.../lodash/fp/findLastIndexFrom.js | 5 +
.../node_modules/lodash/fp/findLastKey.js | 5 +
.../node_modules/lodash/fp/first.js | 1 +
.../node_modules/lodash/fp/flatMap.js | 5 +
.../node_modules/lodash/fp/flatMapDeep.js | 5 +
.../node_modules/lodash/fp/flatMapDepth.js | 5 +
.../node_modules/lodash/fp/flatten.js | 5 +
.../node_modules/lodash/fp/flattenDeep.js | 5 +
.../node_modules/lodash/fp/flattenDepth.js | 5 +
.../examples_4/node_modules/lodash/fp/flip.js | 5 +
.../node_modules/lodash/fp/floor.js | 5 +
.../examples_4/node_modules/lodash/fp/flow.js | 5 +
.../node_modules/lodash/fp/flowRight.js | 5 +
.../node_modules/lodash/fp/forEach.js | 5 +
.../node_modules/lodash/fp/forEachRight.js | 5 +
.../node_modules/lodash/fp/forIn.js | 5 +
.../node_modules/lodash/fp/forInRight.js | 5 +
.../node_modules/lodash/fp/forOwn.js | 5 +
.../node_modules/lodash/fp/forOwnRight.js | 5 +
.../node_modules/lodash/fp/fromPairs.js | 5 +
.../node_modules/lodash/fp/function.js | 2 +
.../node_modules/lodash/fp/functions.js | 5 +
.../node_modules/lodash/fp/functionsIn.js | 5 +
.../examples_4/node_modules/lodash/fp/get.js | 5 +
.../node_modules/lodash/fp/getOr.js | 5 +
.../node_modules/lodash/fp/groupBy.js | 5 +
.../examples_4/node_modules/lodash/fp/gt.js | 5 +
.../examples_4/node_modules/lodash/fp/gte.js | 5 +
.../examples_4/node_modules/lodash/fp/has.js | 5 +
.../node_modules/lodash/fp/hasIn.js | 5 +
.../examples_4/node_modules/lodash/fp/head.js | 5 +
.../node_modules/lodash/fp/identical.js | 1 +
.../node_modules/lodash/fp/identity.js | 5 +
.../node_modules/lodash/fp/inRange.js | 5 +
.../node_modules/lodash/fp/includes.js | 5 +
.../node_modules/lodash/fp/includesFrom.js | 5 +
.../node_modules/lodash/fp/indexBy.js | 1 +
.../node_modules/lodash/fp/indexOf.js | 5 +
.../node_modules/lodash/fp/indexOfFrom.js | 5 +
.../examples_4/node_modules/lodash/fp/init.js | 1 +
.../node_modules/lodash/fp/initial.js | 5 +
.../node_modules/lodash/fp/intersection.js | 5 +
.../node_modules/lodash/fp/intersectionBy.js | 5 +
.../lodash/fp/intersectionWith.js | 5 +
.../node_modules/lodash/fp/invert.js | 5 +
.../node_modules/lodash/fp/invertBy.js | 5 +
.../node_modules/lodash/fp/invertObj.js | 1 +
.../node_modules/lodash/fp/invoke.js | 5 +
.../node_modules/lodash/fp/invokeArgs.js | 5 +
.../node_modules/lodash/fp/invokeArgsMap.js | 5 +
.../node_modules/lodash/fp/invokeMap.js | 5 +
.../node_modules/lodash/fp/isArguments.js | 5 +
.../node_modules/lodash/fp/isArray.js | 5 +
.../node_modules/lodash/fp/isArrayBuffer.js | 5 +
.../node_modules/lodash/fp/isArrayLike.js | 5 +
.../lodash/fp/isArrayLikeObject.js | 5 +
.../node_modules/lodash/fp/isBoolean.js | 5 +
.../node_modules/lodash/fp/isBuffer.js | 5 +
.../node_modules/lodash/fp/isDate.js | 5 +
.../node_modules/lodash/fp/isElement.js | 5 +
.../node_modules/lodash/fp/isEmpty.js | 5 +
.../node_modules/lodash/fp/isEqual.js | 5 +
.../node_modules/lodash/fp/isEqualWith.js | 5 +
.../node_modules/lodash/fp/isError.js | 5 +
.../node_modules/lodash/fp/isFinite.js | 5 +
.../node_modules/lodash/fp/isFunction.js | 5 +
.../node_modules/lodash/fp/isInteger.js | 5 +
.../node_modules/lodash/fp/isLength.js | 5 +
.../node_modules/lodash/fp/isMap.js | 5 +
.../node_modules/lodash/fp/isMatch.js | 5 +
.../node_modules/lodash/fp/isMatchWith.js | 5 +
.../node_modules/lodash/fp/isNaN.js | 5 +
.../node_modules/lodash/fp/isNative.js | 5 +
.../node_modules/lodash/fp/isNil.js | 5 +
.../node_modules/lodash/fp/isNull.js | 5 +
.../node_modules/lodash/fp/isNumber.js | 5 +
.../node_modules/lodash/fp/isObject.js | 5 +
.../node_modules/lodash/fp/isObjectLike.js | 5 +
.../node_modules/lodash/fp/isPlainObject.js | 5 +
.../node_modules/lodash/fp/isRegExp.js | 5 +
.../node_modules/lodash/fp/isSafeInteger.js | 5 +
.../node_modules/lodash/fp/isSet.js | 5 +
.../node_modules/lodash/fp/isString.js | 5 +
.../node_modules/lodash/fp/isSymbol.js | 5 +
.../node_modules/lodash/fp/isTypedArray.js | 5 +
.../node_modules/lodash/fp/isUndefined.js | 5 +
.../node_modules/lodash/fp/isWeakMap.js | 5 +
.../node_modules/lodash/fp/isWeakSet.js | 5 +
.../node_modules/lodash/fp/iteratee.js | 5 +
.../examples_4/node_modules/lodash/fp/join.js | 5 +
.../examples_4/node_modules/lodash/fp/juxt.js | 1 +
.../node_modules/lodash/fp/kebabCase.js | 5 +
.../node_modules/lodash/fp/keyBy.js | 5 +
.../examples_4/node_modules/lodash/fp/keys.js | 5 +
.../node_modules/lodash/fp/keysIn.js | 5 +
.../examples_4/node_modules/lodash/fp/lang.js | 2 +
.../examples_4/node_modules/lodash/fp/last.js | 5 +
.../node_modules/lodash/fp/lastIndexOf.js | 5 +
.../node_modules/lodash/fp/lastIndexOfFrom.js | 5 +
.../node_modules/lodash/fp/lowerCase.js | 5 +
.../node_modules/lodash/fp/lowerFirst.js | 5 +
.../examples_4/node_modules/lodash/fp/lt.js | 5 +
.../examples_4/node_modules/lodash/fp/lte.js | 5 +
.../examples_4/node_modules/lodash/fp/map.js | 5 +
.../node_modules/lodash/fp/mapKeys.js | 5 +
.../node_modules/lodash/fp/mapValues.js | 5 +
.../node_modules/lodash/fp/matches.js | 1 +
.../node_modules/lodash/fp/matchesProperty.js | 5 +
.../examples_4/node_modules/lodash/fp/math.js | 2 +
.../examples_4/node_modules/lodash/fp/max.js | 5 +
.../node_modules/lodash/fp/maxBy.js | 5 +
.../examples_4/node_modules/lodash/fp/mean.js | 5 +
.../node_modules/lodash/fp/meanBy.js | 5 +
.../node_modules/lodash/fp/memoize.js | 5 +
.../node_modules/lodash/fp/merge.js | 5 +
.../node_modules/lodash/fp/mergeAll.js | 5 +
.../node_modules/lodash/fp/mergeAllWith.js | 5 +
.../node_modules/lodash/fp/mergeWith.js | 5 +
.../node_modules/lodash/fp/method.js | 5 +
.../node_modules/lodash/fp/methodOf.js | 5 +
.../examples_4/node_modules/lodash/fp/min.js | 5 +
.../node_modules/lodash/fp/minBy.js | 5 +
.../node_modules/lodash/fp/mixin.js | 5 +
.../node_modules/lodash/fp/multiply.js | 5 +
.../examples_4/node_modules/lodash/fp/nAry.js | 1 +
.../node_modules/lodash/fp/negate.js | 5 +
.../examples_4/node_modules/lodash/fp/next.js | 5 +
.../examples_4/node_modules/lodash/fp/noop.js | 5 +
.../examples_4/node_modules/lodash/fp/now.js | 5 +
.../examples_4/node_modules/lodash/fp/nth.js | 5 +
.../node_modules/lodash/fp/nthArg.js | 5 +
.../node_modules/lodash/fp/number.js | 2 +
.../node_modules/lodash/fp/object.js | 2 +
.../examples_4/node_modules/lodash/fp/omit.js | 5 +
.../node_modules/lodash/fp/omitAll.js | 1 +
.../node_modules/lodash/fp/omitBy.js | 5 +
.../examples_4/node_modules/lodash/fp/once.js | 5 +
.../node_modules/lodash/fp/orderBy.js | 5 +
.../examples_4/node_modules/lodash/fp/over.js | 5 +
.../node_modules/lodash/fp/overArgs.js | 5 +
.../node_modules/lodash/fp/overEvery.js | 5 +
.../node_modules/lodash/fp/overSome.js | 5 +
.../examples_4/node_modules/lodash/fp/pad.js | 5 +
.../node_modules/lodash/fp/padChars.js | 5 +
.../node_modules/lodash/fp/padCharsEnd.js | 5 +
.../node_modules/lodash/fp/padCharsStart.js | 5 +
.../node_modules/lodash/fp/padEnd.js | 5 +
.../node_modules/lodash/fp/padStart.js | 5 +
.../node_modules/lodash/fp/parseInt.js | 5 +
.../node_modules/lodash/fp/partial.js | 5 +
.../node_modules/lodash/fp/partialRight.js | 5 +
.../node_modules/lodash/fp/partition.js | 5 +
.../examples_4/node_modules/lodash/fp/path.js | 1 +
.../node_modules/lodash/fp/pathEq.js | 1 +
.../node_modules/lodash/fp/pathOr.js | 1 +
.../node_modules/lodash/fp/paths.js | 1 +
.../examples_4/node_modules/lodash/fp/pick.js | 5 +
.../node_modules/lodash/fp/pickAll.js | 1 +
.../node_modules/lodash/fp/pickBy.js | 5 +
.../examples_4/node_modules/lodash/fp/pipe.js | 1 +
.../node_modules/lodash/fp/placeholder.js | 6 +
.../node_modules/lodash/fp/plant.js | 5 +
.../node_modules/lodash/fp/pluck.js | 1 +
.../examples_4/node_modules/lodash/fp/prop.js | 1 +
.../node_modules/lodash/fp/propEq.js | 1 +
.../node_modules/lodash/fp/propOr.js | 1 +
.../node_modules/lodash/fp/property.js | 1 +
.../node_modules/lodash/fp/propertyOf.js | 5 +
.../node_modules/lodash/fp/props.js | 1 +
.../examples_4/node_modules/lodash/fp/pull.js | 5 +
.../node_modules/lodash/fp/pullAll.js | 5 +
.../node_modules/lodash/fp/pullAllBy.js | 5 +
.../node_modules/lodash/fp/pullAllWith.js | 5 +
.../node_modules/lodash/fp/pullAt.js | 5 +
.../node_modules/lodash/fp/random.js | 5 +
.../node_modules/lodash/fp/range.js | 5 +
.../node_modules/lodash/fp/rangeRight.js | 5 +
.../node_modules/lodash/fp/rangeStep.js | 5 +
.../node_modules/lodash/fp/rangeStepRight.js | 5 +
.../node_modules/lodash/fp/rearg.js | 5 +
.../node_modules/lodash/fp/reduce.js | 5 +
.../node_modules/lodash/fp/reduceRight.js | 5 +
.../node_modules/lodash/fp/reject.js | 5 +
.../node_modules/lodash/fp/remove.js | 5 +
.../node_modules/lodash/fp/repeat.js | 5 +
.../node_modules/lodash/fp/replace.js | 5 +
.../examples_4/node_modules/lodash/fp/rest.js | 5 +
.../node_modules/lodash/fp/restFrom.js | 5 +
.../node_modules/lodash/fp/result.js | 5 +
.../node_modules/lodash/fp/reverse.js | 5 +
.../node_modules/lodash/fp/round.js | 5 +
.../node_modules/lodash/fp/sample.js | 5 +
.../node_modules/lodash/fp/sampleSize.js | 5 +
.../examples_4/node_modules/lodash/fp/seq.js | 2 +
.../examples_4/node_modules/lodash/fp/set.js | 5 +
.../node_modules/lodash/fp/setWith.js | 5 +
.../node_modules/lodash/fp/shuffle.js | 5 +
.../examples_4/node_modules/lodash/fp/size.js | 5 +
.../node_modules/lodash/fp/slice.js | 5 +
.../node_modules/lodash/fp/snakeCase.js | 5 +
.../examples_4/node_modules/lodash/fp/some.js | 5 +
.../node_modules/lodash/fp/sortBy.js | 5 +
.../node_modules/lodash/fp/sortedIndex.js | 5 +
.../node_modules/lodash/fp/sortedIndexBy.js | 5 +
.../node_modules/lodash/fp/sortedIndexOf.js | 5 +
.../node_modules/lodash/fp/sortedLastIndex.js | 5 +
.../lodash/fp/sortedLastIndexBy.js | 5 +
.../lodash/fp/sortedLastIndexOf.js | 5 +
.../node_modules/lodash/fp/sortedUniq.js | 5 +
.../node_modules/lodash/fp/sortedUniqBy.js | 5 +
.../node_modules/lodash/fp/split.js | 5 +
.../node_modules/lodash/fp/spread.js | 5 +
.../node_modules/lodash/fp/spreadFrom.js | 5 +
.../node_modules/lodash/fp/startCase.js | 5 +
.../node_modules/lodash/fp/startsWith.js | 5 +
.../node_modules/lodash/fp/string.js | 2 +
.../node_modules/lodash/fp/stubArray.js | 5 +
.../node_modules/lodash/fp/stubFalse.js | 5 +
.../node_modules/lodash/fp/stubObject.js | 5 +
.../node_modules/lodash/fp/stubString.js | 5 +
.../node_modules/lodash/fp/stubTrue.js | 5 +
.../node_modules/lodash/fp/subtract.js | 5 +
.../examples_4/node_modules/lodash/fp/sum.js | 5 +
.../node_modules/lodash/fp/sumBy.js | 5 +
.../lodash/fp/symmetricDifference.js | 1 +
.../lodash/fp/symmetricDifferenceBy.js | 1 +
.../lodash/fp/symmetricDifferenceWith.js | 1 +
.../examples_4/node_modules/lodash/fp/tail.js | 5 +
.../examples_4/node_modules/lodash/fp/take.js | 5 +
.../node_modules/lodash/fp/takeLast.js | 1 +
.../node_modules/lodash/fp/takeLastWhile.js | 1 +
.../node_modules/lodash/fp/takeRight.js | 5 +
.../node_modules/lodash/fp/takeRightWhile.js | 5 +
.../node_modules/lodash/fp/takeWhile.js | 5 +
.../examples_4/node_modules/lodash/fp/tap.js | 5 +
.../node_modules/lodash/fp/template.js | 5 +
.../lodash/fp/templateSettings.js | 5 +
.../node_modules/lodash/fp/throttle.js | 5 +
.../examples_4/node_modules/lodash/fp/thru.js | 5 +
.../node_modules/lodash/fp/times.js | 5 +
.../node_modules/lodash/fp/toArray.js | 5 +
.../node_modules/lodash/fp/toFinite.js | 5 +
.../node_modules/lodash/fp/toInteger.js | 5 +
.../node_modules/lodash/fp/toIterator.js | 5 +
.../node_modules/lodash/fp/toJSON.js | 5 +
.../node_modules/lodash/fp/toLength.js | 5 +
.../node_modules/lodash/fp/toLower.js | 5 +
.../node_modules/lodash/fp/toNumber.js | 5 +
.../node_modules/lodash/fp/toPairs.js | 5 +
.../node_modules/lodash/fp/toPairsIn.js | 5 +
.../node_modules/lodash/fp/toPath.js | 5 +
.../node_modules/lodash/fp/toPlainObject.js | 5 +
.../node_modules/lodash/fp/toSafeInteger.js | 5 +
.../node_modules/lodash/fp/toString.js | 5 +
.../node_modules/lodash/fp/toUpper.js | 5 +
.../node_modules/lodash/fp/transform.js | 5 +
.../examples_4/node_modules/lodash/fp/trim.js | 5 +
.../node_modules/lodash/fp/trimChars.js | 5 +
.../node_modules/lodash/fp/trimCharsEnd.js | 5 +
.../node_modules/lodash/fp/trimCharsStart.js | 5 +
.../node_modules/lodash/fp/trimEnd.js | 5 +
.../node_modules/lodash/fp/trimStart.js | 5 +
.../node_modules/lodash/fp/truncate.js | 5 +
.../node_modules/lodash/fp/unapply.js | 1 +
.../node_modules/lodash/fp/unary.js | 5 +
.../node_modules/lodash/fp/unescape.js | 5 +
.../node_modules/lodash/fp/union.js | 5 +
.../node_modules/lodash/fp/unionBy.js | 5 +
.../node_modules/lodash/fp/unionWith.js | 5 +
.../examples_4/node_modules/lodash/fp/uniq.js | 5 +
.../node_modules/lodash/fp/uniqBy.js | 5 +
.../node_modules/lodash/fp/uniqWith.js | 5 +
.../node_modules/lodash/fp/uniqueId.js | 5 +
.../node_modules/lodash/fp/unnest.js | 1 +
.../node_modules/lodash/fp/unset.js | 5 +
.../node_modules/lodash/fp/unzip.js | 5 +
.../node_modules/lodash/fp/unzipWith.js | 5 +
.../node_modules/lodash/fp/update.js | 5 +
.../node_modules/lodash/fp/updateWith.js | 5 +
.../node_modules/lodash/fp/upperCase.js | 5 +
.../node_modules/lodash/fp/upperFirst.js | 5 +
.../node_modules/lodash/fp/useWith.js | 1 +
.../examples_4/node_modules/lodash/fp/util.js | 2 +
.../node_modules/lodash/fp/value.js | 5 +
.../node_modules/lodash/fp/valueOf.js | 5 +
.../node_modules/lodash/fp/values.js | 5 +
.../node_modules/lodash/fp/valuesIn.js | 5 +
.../node_modules/lodash/fp/where.js | 1 +
.../node_modules/lodash/fp/whereEq.js | 1 +
.../node_modules/lodash/fp/without.js | 5 +
.../node_modules/lodash/fp/words.js | 5 +
.../examples_4/node_modules/lodash/fp/wrap.js | 5 +
.../node_modules/lodash/fp/wrapperAt.js | 5 +
.../node_modules/lodash/fp/wrapperChain.js | 5 +
.../node_modules/lodash/fp/wrapperLodash.js | 5 +
.../node_modules/lodash/fp/wrapperReverse.js | 5 +
.../node_modules/lodash/fp/wrapperValue.js | 5 +
.../examples_4/node_modules/lodash/fp/xor.js | 5 +
.../node_modules/lodash/fp/xorBy.js | 5 +
.../node_modules/lodash/fp/xorWith.js | 5 +
.../examples_4/node_modules/lodash/fp/zip.js | 5 +
.../node_modules/lodash/fp/zipAll.js | 5 +
.../node_modules/lodash/fp/zipObj.js | 1 +
.../node_modules/lodash/fp/zipObject.js | 5 +
.../node_modules/lodash/fp/zipObjectDeep.js | 5 +
.../node_modules/lodash/fp/zipWith.js | 5 +
.../node_modules/lodash/fromPairs.js | 28 +
.../node_modules/lodash/function.js | 25 +
.../node_modules/lodash/functions.js | 31 +
.../node_modules/lodash/functionsIn.js | 31 +
.../examples_4/node_modules/lodash/get.js | 33 +
.../examples_4/node_modules/lodash/groupBy.js | 41 +
.../examples_4/node_modules/lodash/gt.js | 29 +
.../examples_4/node_modules/lodash/gte.js | 30 +
.../examples_4/node_modules/lodash/has.js | 35 +
.../examples_4/node_modules/lodash/hasIn.js | 34 +
.../examples_4/node_modules/lodash/head.js | 23 +
.../node_modules/lodash/identity.js | 21 +
.../examples_4/node_modules/lodash/inRange.js | 55 +
.../node_modules/lodash/includes.js | 53 +
.../examples_4/node_modules/lodash/index.js | 1 +
.../examples_4/node_modules/lodash/indexOf.js | 42 +
.../examples_4/node_modules/lodash/initial.js | 22 +
.../node_modules/lodash/intersection.js | 30 +
.../node_modules/lodash/intersectionBy.js | 45 +
.../node_modules/lodash/intersectionWith.js | 41 +
.../examples_4/node_modules/lodash/invert.js | 42 +
.../node_modules/lodash/invertBy.js | 56 +
.../examples_4/node_modules/lodash/invoke.js | 24 +
.../node_modules/lodash/invokeMap.js | 41 +
.../node_modules/lodash/isArguments.js | 36 +
.../examples_4/node_modules/lodash/isArray.js | 26 +
.../node_modules/lodash/isArrayBuffer.js | 27 +
.../node_modules/lodash/isArrayLike.js | 33 +
.../node_modules/lodash/isArrayLikeObject.js | 33 +
.../node_modules/lodash/isBoolean.js | 29 +
.../node_modules/lodash/isBuffer.js | 38 +
.../examples_4/node_modules/lodash/isDate.js | 27 +
.../node_modules/lodash/isElement.js | 25 +
.../examples_4/node_modules/lodash/isEmpty.js | 77 +
.../examples_4/node_modules/lodash/isEqual.js | 35 +
.../node_modules/lodash/isEqualWith.js | 41 +
.../examples_4/node_modules/lodash/isError.js | 36 +
.../node_modules/lodash/isFinite.js | 36 +
.../node_modules/lodash/isFunction.js | 37 +
.../node_modules/lodash/isInteger.js | 33 +
.../node_modules/lodash/isLength.js | 35 +
.../examples_4/node_modules/lodash/isMap.js | 27 +
.../examples_4/node_modules/lodash/isMatch.js | 36 +
.../node_modules/lodash/isMatchWith.js | 41 +
.../examples_4/node_modules/lodash/isNaN.js | 38 +
.../node_modules/lodash/isNative.js | 40 +
.../examples_4/node_modules/lodash/isNil.js | 25 +
.../examples_4/node_modules/lodash/isNull.js | 22 +
.../node_modules/lodash/isNumber.js | 38 +
.../node_modules/lodash/isObject.js | 31 +
.../node_modules/lodash/isObjectLike.js | 29 +
.../node_modules/lodash/isPlainObject.js | 62 +
.../node_modules/lodash/isRegExp.js | 27 +
.../node_modules/lodash/isSafeInteger.js | 37 +
.../examples_4/node_modules/lodash/isSet.js | 27 +
.../node_modules/lodash/isString.js | 30 +
.../node_modules/lodash/isSymbol.js | 29 +
.../node_modules/lodash/isTypedArray.js | 27 +
.../node_modules/lodash/isUndefined.js | 22 +
.../node_modules/lodash/isWeakMap.js | 28 +
.../node_modules/lodash/isWeakSet.js | 28 +
.../node_modules/lodash/iteratee.js | 53 +
.../examples_4/node_modules/lodash/join.js | 26 +
.../node_modules/lodash/kebabCase.js | 28 +
.../examples_4/node_modules/lodash/keyBy.js | 36 +
.../examples_4/node_modules/lodash/keys.js | 37 +
.../examples_4/node_modules/lodash/keysIn.js | 32 +
.../examples_4/node_modules/lodash/lang.js | 58 +
.../examples_4/node_modules/lodash/last.js | 20 +
.../node_modules/lodash/lastIndexOf.js | 46 +
.../examples_4/node_modules/lodash/lodash.js | 17209 ++++++++++++++++
.../node_modules/lodash/lodash.min.js | 140 +
.../node_modules/lodash/lowerCase.js | 27 +
.../node_modules/lodash/lowerFirst.js | 22 +
.../examples_4/node_modules/lodash/lt.js | 29 +
.../examples_4/node_modules/lodash/lte.js | 30 +
.../examples_4/node_modules/lodash/map.js | 53 +
.../examples_4/node_modules/lodash/mapKeys.js | 36 +
.../node_modules/lodash/mapValues.js | 43 +
.../examples_4/node_modules/lodash/matches.js | 46 +
.../node_modules/lodash/matchesProperty.js | 44 +
.../examples_4/node_modules/lodash/math.js | 17 +
.../examples_4/node_modules/lodash/max.js | 29 +
.../examples_4/node_modules/lodash/maxBy.js | 34 +
.../examples_4/node_modules/lodash/mean.js | 22 +
.../examples_4/node_modules/lodash/meanBy.js | 31 +
.../examples_4/node_modules/lodash/memoize.js | 73 +
.../examples_4/node_modules/lodash/merge.js | 39 +
.../node_modules/lodash/mergeWith.js | 39 +
.../examples_4/node_modules/lodash/method.js | 34 +
.../node_modules/lodash/methodOf.js | 33 +
.../examples_4/node_modules/lodash/min.js | 29 +
.../examples_4/node_modules/lodash/minBy.js | 34 +
.../examples_4/node_modules/lodash/mixin.js | 74 +
.../node_modules/lodash/multiply.js | 22 +
.../examples_4/node_modules/lodash/negate.js | 40 +
.../examples_4/node_modules/lodash/next.js | 35 +
.../examples_4/node_modules/lodash/noop.js | 17 +
.../examples_4/node_modules/lodash/now.js | 23 +
.../examples_4/node_modules/lodash/nth.js | 29 +
.../examples_4/node_modules/lodash/nthArg.js | 32 +
.../examples_4/node_modules/lodash/number.js | 5 +
.../examples_4/node_modules/lodash/object.js | 49 +
.../examples_4/node_modules/lodash/omit.js | 57 +
.../examples_4/node_modules/lodash/omitBy.js | 29 +
.../examples_4/node_modules/lodash/once.js | 25 +
.../examples_4/node_modules/lodash/orderBy.js | 47 +
.../examples_4/node_modules/lodash/over.js | 24 +
.../node_modules/lodash/overArgs.js | 61 +
.../node_modules/lodash/overEvery.js | 34 +
.../node_modules/lodash/overSome.js | 37 +
.../node_modules/lodash/package.json | 17 +
.../examples_4/node_modules/lodash/pad.js | 49 +
.../examples_4/node_modules/lodash/padEnd.js | 39 +
.../node_modules/lodash/padStart.js | 39 +
.../node_modules/lodash/parseInt.js | 43 +
.../examples_4/node_modules/lodash/partial.js | 50 +
.../node_modules/lodash/partialRight.js | 49 +
.../node_modules/lodash/partition.js | 43 +
.../examples_4/node_modules/lodash/pick.js | 25 +
.../examples_4/node_modules/lodash/pickBy.js | 37 +
.../examples_4/node_modules/lodash/plant.js | 48 +
.../node_modules/lodash/property.js | 32 +
.../node_modules/lodash/propertyOf.js | 30 +
.../examples_4/node_modules/lodash/pull.js | 29 +
.../examples_4/node_modules/lodash/pullAll.js | 29 +
.../node_modules/lodash/pullAllBy.js | 33 +
.../node_modules/lodash/pullAllWith.js | 32 +
.../examples_4/node_modules/lodash/pullAt.js | 43 +
.../examples_4/node_modules/lodash/random.js | 82 +
.../examples_4/node_modules/lodash/range.js | 46 +
.../node_modules/lodash/rangeRight.js | 41 +
.../examples_4/node_modules/lodash/rearg.js | 33 +
.../examples_4/node_modules/lodash/reduce.js | 51 +
.../node_modules/lodash/reduceRight.js | 36 +
.../examples_4/node_modules/lodash/reject.js | 46 +
.../examples_4/node_modules/lodash/release.md | 48 +
.../examples_4/node_modules/lodash/remove.js | 53 +
.../examples_4/node_modules/lodash/repeat.js | 37 +
.../examples_4/node_modules/lodash/replace.js | 29 +
.../examples_4/node_modules/lodash/rest.js | 40 +
.../examples_4/node_modules/lodash/result.js | 56 +
.../examples_4/node_modules/lodash/reverse.js | 34 +
.../examples_4/node_modules/lodash/round.js | 26 +
.../examples_4/node_modules/lodash/sample.js | 24 +
.../node_modules/lodash/sampleSize.js | 37 +
.../examples_4/node_modules/lodash/seq.js | 16 +
.../examples_4/node_modules/lodash/set.js | 35 +
.../examples_4/node_modules/lodash/setWith.js | 32 +
.../examples_4/node_modules/lodash/shuffle.js | 25 +
.../examples_4/node_modules/lodash/size.js | 46 +
.../examples_4/node_modules/lodash/slice.js | 37 +
.../node_modules/lodash/snakeCase.js | 28 +
.../examples_4/node_modules/lodash/some.js | 51 +
.../examples_4/node_modules/lodash/sortBy.js | 48 +
.../node_modules/lodash/sortedIndex.js | 24 +
.../node_modules/lodash/sortedIndexBy.js | 33 +
.../node_modules/lodash/sortedIndexOf.js | 31 +
.../node_modules/lodash/sortedLastIndex.js | 25 +
.../node_modules/lodash/sortedLastIndexBy.js | 33 +
.../node_modules/lodash/sortedLastIndexOf.js | 31 +
.../node_modules/lodash/sortedUniq.js | 24 +
.../node_modules/lodash/sortedUniqBy.js | 26 +
.../examples_4/node_modules/lodash/split.js | 52 +
.../examples_4/node_modules/lodash/spread.js | 63 +
.../node_modules/lodash/startCase.js | 29 +
.../node_modules/lodash/startsWith.js | 39 +
.../examples_4/node_modules/lodash/string.js | 33 +
.../node_modules/lodash/stubArray.js | 23 +
.../node_modules/lodash/stubFalse.js | 18 +
.../node_modules/lodash/stubObject.js | 23 +
.../node_modules/lodash/stubString.js | 18 +
.../node_modules/lodash/stubTrue.js | 18 +
.../node_modules/lodash/subtract.js | 22 +
.../examples_4/node_modules/lodash/sum.js | 24 +
.../examples_4/node_modules/lodash/sumBy.js | 33 +
.../examples_4/node_modules/lodash/tail.js | 22 +
.../examples_4/node_modules/lodash/take.js | 37 +
.../node_modules/lodash/takeRight.js | 39 +
.../node_modules/lodash/takeRightWhile.js | 45 +
.../node_modules/lodash/takeWhile.js | 45 +
.../examples_4/node_modules/lodash/tap.js | 29 +
.../node_modules/lodash/template.js | 272 +
.../node_modules/lodash/templateSettings.js | 67 +
.../node_modules/lodash/throttle.js | 69 +
.../examples_4/node_modules/lodash/thru.js | 28 +
.../examples_4/node_modules/lodash/times.js | 51 +
.../examples_4/node_modules/lodash/toArray.js | 58 +
.../node_modules/lodash/toFinite.js | 42 +
.../node_modules/lodash/toInteger.js | 36 +
.../node_modules/lodash/toIterator.js | 23 +
.../examples_4/node_modules/lodash/toJSON.js | 1 +
.../node_modules/lodash/toLength.js | 38 +
.../examples_4/node_modules/lodash/toLower.js | 28 +
.../node_modules/lodash/toNumber.js | 64 +
.../examples_4/node_modules/lodash/toPairs.js | 30 +
.../node_modules/lodash/toPairsIn.js | 30 +
.../examples_4/node_modules/lodash/toPath.js | 33 +
.../node_modules/lodash/toPlainObject.js | 32 +
.../node_modules/lodash/toSafeInteger.js | 37 +
.../node_modules/lodash/toString.js | 28 +
.../examples_4/node_modules/lodash/toUpper.js | 28 +
.../node_modules/lodash/transform.js | 65 +
.../examples_4/node_modules/lodash/trim.js | 47 +
.../examples_4/node_modules/lodash/trimEnd.js | 41 +
.../node_modules/lodash/trimStart.js | 43 +
.../node_modules/lodash/truncate.js | 111 +
.../examples_4/node_modules/lodash/unary.js | 22 +
.../node_modules/lodash/unescape.js | 34 +
.../examples_4/node_modules/lodash/union.js | 26 +
.../examples_4/node_modules/lodash/unionBy.js | 39 +
.../node_modules/lodash/unionWith.js | 34 +
.../examples_4/node_modules/lodash/uniq.js | 25 +
.../examples_4/node_modules/lodash/uniqBy.js | 31 +
.../node_modules/lodash/uniqWith.js | 28 +
.../node_modules/lodash/uniqueId.js | 28 +
.../examples_4/node_modules/lodash/unset.js | 34 +
.../examples_4/node_modules/lodash/unzip.js | 45 +
.../node_modules/lodash/unzipWith.js | 39 +
.../examples_4/node_modules/lodash/update.js | 35 +
.../node_modules/lodash/updateWith.js | 33 +
.../node_modules/lodash/upperCase.js | 27 +
.../node_modules/lodash/upperFirst.js | 22 +
.../examples_4/node_modules/lodash/util.js | 34 +
.../examples_4/node_modules/lodash/value.js | 1 +
.../examples_4/node_modules/lodash/valueOf.js | 1 +
.../examples_4/node_modules/lodash/values.js | 34 +
.../node_modules/lodash/valuesIn.js | 32 +
.../examples_4/node_modules/lodash/without.js | 31 +
.../examples_4/node_modules/lodash/words.js | 35 +
.../examples_4/node_modules/lodash/wrap.js | 30 +
.../node_modules/lodash/wrapperAt.js | 48 +
.../node_modules/lodash/wrapperChain.js | 34 +
.../node_modules/lodash/wrapperLodash.js | 147 +
.../node_modules/lodash/wrapperReverse.js | 44 +
.../node_modules/lodash/wrapperValue.js | 21 +
.../examples_4/node_modules/lodash/xor.js | 28 +
.../examples_4/node_modules/lodash/xorBy.js | 39 +
.../examples_4/node_modules/lodash/xorWith.js | 34 +
.../examples_4/node_modules/lodash/zip.js | 22 +
.../node_modules/lodash/zipObject.js | 24 +
.../node_modules/lodash/zipObjectDeep.js | 23 +
.../examples_4/node_modules/lodash/zipWith.js | 32 +
.../examples_4/node_modules/lru-cache/LICENSE | 15 +
.../node_modules/lru-cache/README.md | 701 +
.../node_modules/lru-cache/index.js | 823 +
.../node_modules/lru-cache/package.json | 48 +
.../node_modules/make-dir/index.d.ts | 66 +
.../examples_4/node_modules/make-dir/index.js | 156 +
.../examples_4/node_modules/make-dir/license | 9 +
.../node_modules/make-dir/package.json | 59 +
.../node_modules/make-dir/readme.md | 125 +
.../node_modules/makeerror/.travis.yml | 3 +
.../node_modules/makeerror/lib/makeerror.js | 87 +
.../examples_4/node_modules/makeerror/license | 28 +
.../node_modules/makeerror/package.json | 21 +
.../node_modules/makeerror/readme.md | 77 +
.../node_modules/merge-stream/LICENSE | 21 +
.../node_modules/merge-stream/README.md | 78 +
.../node_modules/merge-stream/index.js | 41 +
.../node_modules/merge-stream/package.json | 19 +
.../node_modules/micromatch/LICENSE | 21 +
.../node_modules/micromatch/README.md | 1011 +
.../node_modules/micromatch/index.js | 467 +
.../node_modules/micromatch/package.json | 119 +
.../node_modules/mime-db/HISTORY.md | 507 +
.../examples_4/node_modules/mime-db/LICENSE | 23 +
.../examples_4/node_modules/mime-db/README.md | 100 +
.../examples_4/node_modules/mime-db/db.json | 8519 ++++++++
.../examples_4/node_modules/mime-db/index.js | 12 +
.../node_modules/mime-db/package.json | 60 +
.../node_modules/mime-types/HISTORY.md | 397 +
.../node_modules/mime-types/LICENSE | 23 +
.../node_modules/mime-types/README.md | 113 +
.../node_modules/mime-types/index.js | 188 +
.../node_modules/mime-types/package.json | 44 +
.../node_modules/mimic-fn/index.d.ts | 54 +
.../examples_4/node_modules/mimic-fn/index.js | 13 +
.../examples_4/node_modules/mimic-fn/license | 9 +
.../node_modules/mimic-fn/package.json | 42 +
.../node_modules/mimic-fn/readme.md | 69 +
.../examples_4/node_modules/minimatch/LICENSE | 15 +
.../node_modules/minimatch/README.md | 230 +
.../node_modules/minimatch/minimatch.js | 947 +
.../node_modules/minimatch/package.json | 33 +
.../examples_4/node_modules/ms/index.js | 162 +
.../examples_4/node_modules/ms/license.md | 21 +
.../examples_4/node_modules/ms/package.json | 37 +
.../examples_4/node_modules/ms/readme.md | 60 +
.../node_modules/natural-compare/README.md | 125 +
.../node_modules/natural-compare/index.js | 57 +
.../node_modules/natural-compare/package.json | 42 +
.../node_modules/node-int64/.npmignore | 3 +
.../node_modules/node-int64/Int64.js | 268 +
.../node_modules/node-int64/LICENSE | 19 +
.../node_modules/node-int64/README.md | 78 +
.../node_modules/node-int64/package.json | 27 +
.../node_modules/node-int64/test.js | 120 +
.../node_modules/node-releases/LICENSE | 21 +
.../node_modules/node-releases/README.md | 31 +
.../node-releases/data/processed/envs.json | 1 +
.../release-schedule/release-schedule.json | 1 +
.../node_modules/node-releases/package.json | 18 +
.../node_modules/normalize-path/LICENSE | 21 +
.../node_modules/normalize-path/README.md | 127 +
.../node_modules/normalize-path/index.js | 35 +
.../node_modules/normalize-path/package.json | 77 +
.../node_modules/npm-run-path/index.d.ts | 89 +
.../node_modules/npm-run-path/index.js | 47 +
.../node_modules/npm-run-path/license | 9 +
.../node_modules/npm-run-path/package.json | 44 +
.../node_modules/npm-run-path/readme.md | 115 +
.../examples_4/node_modules/nwsapi/LICENSE | 22 +
.../examples_4/node_modules/nwsapi/README.md | 132 +
.../node_modules/nwsapi/dist/lint.log | 0
.../node_modules/nwsapi/package.json | 38 +
.../nwsapi/src/modules/nwsapi-jquery.js | 135 +
.../nwsapi/src/modules/nwsapi-traversal.js | 90 +
.../node_modules/nwsapi/src/nwsapi.js | 1800 ++
.../examples_4/node_modules/once/LICENSE | 15 +
.../examples_4/node_modules/once/README.md | 79 +
.../examples_4/node_modules/once/once.js | 42 +
.../examples_4/node_modules/once/package.json | 33 +
.../node_modules/onetime/index.d.ts | 64 +
.../examples_4/node_modules/onetime/index.js | 44 +
.../examples_4/node_modules/onetime/license | 9 +
.../node_modules/onetime/package.json | 43 +
.../examples_4/node_modules/onetime/readme.md | 94 +
.../node_modules/optionator/CHANGELOG.md | 56 +
.../node_modules/optionator/LICENSE | 22 +
.../node_modules/optionator/README.md | 238 +
.../node_modules/optionator/lib/help.js | 260 +
.../node_modules/optionator/lib/index.js | 465 +
.../node_modules/optionator/lib/util.js | 54 +
.../node_modules/optionator/package.json | 44 +
.../node_modules/p-limit/index.d.ts | 38 +
.../examples_4/node_modules/p-limit/index.js | 57 +
.../examples_4/node_modules/p-limit/license | 9 +
.../node_modules/p-limit/package.json | 52 +
.../examples_4/node_modules/p-limit/readme.md | 101 +
.../node_modules/p-locate/index.d.ts | 64 +
.../examples_4/node_modules/p-locate/index.js | 52 +
.../examples_4/node_modules/p-locate/license | 9 +
.../node_modules/p-locate/package.json | 53 +
.../node_modules/p-locate/readme.md | 90 +
.../examples_4/node_modules/p-try/index.d.ts | 39 +
.../examples_4/node_modules/p-try/index.js | 9 +
.../examples_4/node_modules/p-try/license | 9 +
.../node_modules/p-try/package.json | 42 +
.../examples_4/node_modules/p-try/readme.md | 58 +
.../node_modules/parse-json/index.js | 54 +
.../node_modules/parse-json/license | 9 +
.../node_modules/parse-json/package.json | 45 +
.../node_modules/parse-json/readme.md | 119 +
.../examples_4/node_modules/parse5/LICENSE | 19 +
.../examples_4/node_modules/parse5/README.md | 38 +
.../node_modules/parse5/lib/common/doctype.js | 162 +
.../parse5/lib/common/error-codes.js | 65 +
.../parse5/lib/common/foreign-content.js | 265 +
.../node_modules/parse5/lib/common/html.js | 272 +
.../node_modules/parse5/lib/common/unicode.js | 109 +
.../extensions/error-reporting/mixin-base.js | 43 +
.../error-reporting/parser-mixin.js | 52 +
.../error-reporting/preprocessor-mixin.js | 24 +
.../error-reporting/tokenizer-mixin.js | 17 +
.../location-info/open-element-stack-mixin.js | 35 +
.../extensions/location-info/parser-mixin.js | 223 +
.../location-info/tokenizer-mixin.js | 146 +
.../position-tracking/preprocessor-mixin.js | 64 +
.../node_modules/parse5/lib/index.js | 29 +
.../lib/parser/formatting-element-list.js | 181 +
.../node_modules/parse5/lib/parser/index.js | 2956 +++
.../parse5/lib/parser/open-element-stack.js | 482 +
.../parse5/lib/serializer/index.js | 176 +
.../parse5/lib/tokenizer/index.js | 2196 ++
.../parse5/lib/tokenizer/named-entity-data.js | 5 +
.../parse5/lib/tokenizer/preprocessor.js | 159 +
.../parse5/lib/tree-adapters/default.js | 221 +
.../parse5/lib/utils/merge-options.js | 13 +
.../node_modules/parse5/lib/utils/mixin.js | 39 +
.../node_modules/parse5/package.json | 35 +
.../node_modules/path-exists/index.d.ts | 28 +
.../node_modules/path-exists/index.js | 23 +
.../node_modules/path-exists/license | 9 +
.../node_modules/path-exists/package.json | 39 +
.../node_modules/path-exists/readme.md | 52 +
.../node_modules/path-is-absolute/index.js | 20 +
.../node_modules/path-is-absolute/license | 21 +
.../path-is-absolute/package.json | 43 +
.../node_modules/path-is-absolute/readme.md | 59 +
.../node_modules/path-key/index.d.ts | 40 +
.../examples_4/node_modules/path-key/index.js | 16 +
.../examples_4/node_modules/path-key/license | 9 +
.../node_modules/path-key/package.json | 39 +
.../node_modules/path-key/readme.md | 61 +
.../node_modules/path-parse/LICENSE | 21 +
.../node_modules/path-parse/README.md | 42 +
.../node_modules/path-parse/index.js | 75 +
.../node_modules/path-parse/package.json | 33 +
.../node_modules/picocolors/LICENSE | 15 +
.../node_modules/picocolors/README.md | 21 +
.../node_modules/picocolors/package.json | 25 +
.../picocolors/picocolors.browser.js | 4 +
.../node_modules/picocolors/picocolors.d.ts | 5 +
.../node_modules/picocolors/picocolors.js | 58 +
.../node_modules/picocolors/types.ts | 30 +
.../node_modules/picomatch/CHANGELOG.md | 136 +
.../examples_4/node_modules/picomatch/LICENSE | 21 +
.../node_modules/picomatch/README.md | 708 +
.../node_modules/picomatch/index.js | 3 +
.../node_modules/picomatch/lib/constants.js | 179 +
.../node_modules/picomatch/lib/parse.js | 1091 +
.../node_modules/picomatch/lib/picomatch.js | 342 +
.../node_modules/picomatch/lib/scan.js | 391 +
.../node_modules/picomatch/lib/utils.js | 64 +
.../node_modules/picomatch/package.json | 81 +
.../examples_4/node_modules/pirates/LICENSE | 21 +
.../examples_4/node_modules/pirates/README.md | 69 +
.../node_modules/pirates/index.d.ts | 82 +
.../node_modules/pirates/lib/index.js | 159 +
.../node_modules/pirates/package.json | 74 +
.../node_modules/pkg-dir/index.d.ts | 44 +
.../examples_4/node_modules/pkg-dir/index.js | 17 +
.../examples_4/node_modules/pkg-dir/license | 9 +
.../node_modules/pkg-dir/package.json | 56 +
.../examples_4/node_modules/pkg-dir/readme.md | 66 +
.../node_modules/prelude-ls/CHANGELOG.md | 99 +
.../node_modules/prelude-ls/LICENSE | 22 +
.../node_modules/prelude-ls/README.md | 15 +
.../node_modules/prelude-ls/lib/Func.js | 65 +
.../node_modules/prelude-ls/lib/List.js | 686 +
.../node_modules/prelude-ls/lib/Num.js | 130 +
.../node_modules/prelude-ls/lib/Obj.js | 154 +
.../node_modules/prelude-ls/lib/Str.js | 92 +
.../node_modules/prelude-ls/lib/index.js | 178 +
.../node_modules/prelude-ls/package.json | 52 +
.../node_modules/pretty-format/LICENSE | 21 +
.../node_modules/pretty-format/README.md | 458 +
.../pretty-format/build/collections.d.ts | 32 +
.../pretty-format/build/collections.js | 187 +
.../pretty-format/build/index.d.ts | 25 +
.../node_modules/pretty-format/build/index.js | 597 +
.../build/plugins/AsymmetricMatcher.d.ts | 11 +
.../build/plugins/AsymmetricMatcher.js | 117 +
.../build/plugins/ConvertAnsi.d.ts | 11 +
.../build/plugins/ConvertAnsi.js | 96 +
.../build/plugins/DOMCollection.d.ts | 11 +
.../build/plugins/DOMCollection.js | 80 +
.../build/plugins/DOMElement.d.ts | 11 +
.../pretty-format/build/plugins/DOMElement.js | 128 +
.../build/plugins/Immutable.d.ts | 11 +
.../pretty-format/build/plugins/Immutable.js | 247 +
.../build/plugins/ReactElement.d.ts | 11 +
.../build/plugins/ReactElement.js | 166 +
.../build/plugins/ReactTestComponent.d.ts | 18 +
.../build/plugins/ReactTestComponent.js | 79 +
.../build/plugins/lib/escapeHTML.d.ts | 7 +
.../build/plugins/lib/escapeHTML.js | 16 +
.../build/plugins/lib/markup.d.ts | 13 +
.../pretty-format/build/plugins/lib/markup.js | 153 +
.../pretty-format/build/types.d.ts | 108 +
.../node_modules/pretty-format/build/types.js | 1 +
.../node_modules/ansi-styles/index.d.ts | 167 +
.../node_modules/ansi-styles/index.js | 164 +
.../node_modules/ansi-styles/license | 9 +
.../node_modules/ansi-styles/package.json | 52 +
.../node_modules/ansi-styles/readme.md | 144 +
.../node_modules/pretty-format/package.json | 44 +
.../prompts/dist/dateparts/datepart.js | 39 +
.../prompts/dist/dateparts/day.js | 35 +
.../prompts/dist/dateparts/hours.js | 30 +
.../prompts/dist/dateparts/index.js | 13 +
.../prompts/dist/dateparts/meridiem.js | 25 +
.../prompts/dist/dateparts/milliseconds.js | 28 +
.../prompts/dist/dateparts/minutes.js | 29 +
.../prompts/dist/dateparts/month.js | 31 +
.../prompts/dist/dateparts/seconds.js | 29 +
.../prompts/dist/dateparts/year.js | 29 +
.../prompts/dist/elements/autocomplete.js | 285 +
.../dist/elements/autocompleteMultiselect.js | 201 +
.../prompts/dist/elements/confirm.js | 93 +
.../prompts/dist/elements/date.js | 250 +
.../prompts/dist/elements/index.js | 13 +
.../prompts/dist/elements/multiselect.js | 289 +
.../prompts/dist/elements/number.js | 250 +
.../prompts/dist/elements/prompt.js | 82 +
.../prompts/dist/elements/select.js | 190 +
.../prompts/dist/elements/text.js | 245 +
.../prompts/dist/elements/toggle.js | 124 +
.../node_modules/prompts/dist/index.js | 154 +
.../node_modules/prompts/dist/prompts.js | 222 +
.../node_modules/prompts/dist/util/action.js | 38 +
.../node_modules/prompts/dist/util/clear.js | 42 +
.../prompts/dist/util/entriesToDisplay.js | 21 +
.../node_modules/prompts/dist/util/figures.js | 32 +
.../node_modules/prompts/dist/util/index.js | 12 +
.../node_modules/prompts/dist/util/lines.js | 14 +
.../node_modules/prompts/dist/util/strip.js | 7 +
.../node_modules/prompts/dist/util/style.js | 51 +
.../node_modules/prompts/dist/util/wrap.js | 16 +
.../examples_4/node_modules/prompts/index.js | 14 +
.../prompts/lib/dateparts/datepart.js | 35 +
.../node_modules/prompts/lib/dateparts/day.js | 42 +
.../prompts/lib/dateparts/hours.js | 30 +
.../prompts/lib/dateparts/index.js | 13 +
.../prompts/lib/dateparts/meridiem.js | 24 +
.../prompts/lib/dateparts/milliseconds.js | 28 +
.../prompts/lib/dateparts/minutes.js | 28 +
.../prompts/lib/dateparts/month.js | 33 +
.../prompts/lib/dateparts/seconds.js | 28 +
.../prompts/lib/dateparts/year.js | 28 +
.../prompts/lib/elements/autocomplete.js | 264 +
.../lib/elements/autocompleteMultiselect.js | 194 +
.../prompts/lib/elements/confirm.js | 89 +
.../node_modules/prompts/lib/elements/date.js | 209 +
.../prompts/lib/elements/index.js | 13 +
.../prompts/lib/elements/multiselect.js | 271 +
.../prompts/lib/elements/number.js | 213 +
.../prompts/lib/elements/prompt.js | 68 +
.../prompts/lib/elements/select.js | 175 +
.../node_modules/prompts/lib/elements/text.js | 208 +
.../prompts/lib/elements/toggle.js | 118 +
.../node_modules/prompts/lib/index.js | 98 +
.../node_modules/prompts/lib/prompts.js | 206 +
.../node_modules/prompts/lib/util/action.js | 39 +
.../node_modules/prompts/lib/util/clear.js | 22 +
.../prompts/lib/util/entriesToDisplay.js | 21 +
.../node_modules/prompts/lib/util/figures.js | 33 +
.../node_modules/prompts/lib/util/index.js | 12 +
.../node_modules/prompts/lib/util/lines.js | 15 +
.../node_modules/prompts/lib/util/strip.js | 11 +
.../node_modules/prompts/lib/util/style.js | 40 +
.../node_modules/prompts/lib/util/wrap.js | 27 +
.../examples_4/node_modules/prompts/license | 21 +
.../node_modules/prompts/package.json | 53 +
.../examples_4/node_modules/prompts/readme.md | 882 +
.../examples_4/node_modules/psl/LICENSE | 9 +
.../examples_4/node_modules/psl/README.md | 215 +
.../node_modules/psl/browserstack-logo.svg | 90 +
.../node_modules/psl/data/rules.json | 8834 ++++++++
.../examples_4/node_modules/psl/dist/psl.js | 9645 +++++++++
.../node_modules/psl/dist/psl.min.js | 1 +
.../examples_4/node_modules/psl/index.js | 269 +
.../examples_4/node_modules/psl/package.json | 44 +
.../node_modules/punycode/LICENSE-MIT.txt | 20 +
.../node_modules/punycode/README.md | 122 +
.../node_modules/punycode/package.json | 58 +
.../node_modules/punycode/punycode.es6.js | 441 +
.../node_modules/punycode/punycode.js | 440 +
.../examples_4/node_modules/react-is/LICENSE | 21 +
.../node_modules/react-is/README.md | 104 +
.../node_modules/react-is/build-info.json | 8 +
.../react-is/cjs/react-is.development.js | 226 +
.../react-is/cjs/react-is.production.min.js | 14 +
.../examples_4/node_modules/react-is/index.js | 7 +
.../node_modules/react-is/package.json | 27 +
.../react-is/umd/react-is.development.js | 225 +
.../react-is/umd/react-is.production.min.js | 14 +
.../node_modules/require-directory/.jshintrc | 67 +
.../node_modules/require-directory/.npmignore | 1 +
.../require-directory/.travis.yml | 3 +
.../node_modules/require-directory/LICENSE | 22 +
.../require-directory/README.markdown | 184 +
.../node_modules/require-directory/index.js | 86 +
.../require-directory/package.json | 40 +
.../node_modules/resolve-cwd/index.d.ts | 48 +
.../node_modules/resolve-cwd/index.js | 5 +
.../node_modules/resolve-cwd/license | 9 +
.../node_modules/resolve-cwd/package.json | 43 +
.../node_modules/resolve-cwd/readme.md | 58 +
.../node_modules/resolve-from/index.d.ts | 31 +
.../node_modules/resolve-from/index.js | 47 +
.../node_modules/resolve-from/license | 9 +
.../node_modules/resolve-from/package.json | 36 +
.../node_modules/resolve-from/readme.md | 72 +
.../resolve.exports/dist/index.js | 149 +
.../resolve.exports/dist/index.mjs | 146 +
.../node_modules/resolve.exports/index.d.ts | 21 +
.../node_modules/resolve.exports/license | 21 +
.../node_modules/resolve.exports/package.json | 47 +
.../node_modules/resolve.exports/readme.md | 320 +
.../node_modules/resolve/.editorconfig | 37 +
.../examples_4/node_modules/resolve/.eslintrc | 65 +
.../node_modules/resolve/.github/FUNDING.yml | 12 +
.../examples_4/node_modules/resolve/LICENSE | 21 +
.../node_modules/resolve/SECURITY.md | 3 +
.../node_modules/resolve/appveyor.yml | 76 +
.../examples_4/node_modules/resolve/async.js | 3 +
.../node_modules/resolve/bin/resolve | 50 +
.../node_modules/resolve/example/async.js | 5 +
.../node_modules/resolve/example/sync.js | 3 +
.../examples_4/node_modules/resolve/index.js | 6 +
.../node_modules/resolve/lib/async.js | 329 +
.../node_modules/resolve/lib/caller.js | 8 +
.../node_modules/resolve/lib/core.js | 52 +
.../node_modules/resolve/lib/core.json | 152 +
.../node_modules/resolve/lib/homedir.js | 24 +
.../node_modules/resolve/lib/is-core.js | 5 +
.../resolve/lib/node-modules-paths.js | 42 +
.../resolve/lib/normalize-options.js | 10 +
.../node_modules/resolve/lib/sync.js | 208 +
.../node_modules/resolve/package.json | 62 +
.../node_modules/resolve/readme.markdown | 301 +
.../examples_4/node_modules/resolve/sync.js | 3 +
.../node_modules/resolve/test/core.js | 81 +
.../node_modules/resolve/test/dotdot.js | 29 +
.../resolve/test/dotdot/abc/index.js | 2 +
.../node_modules/resolve/test/dotdot/index.js | 1 +
.../resolve/test/faulty_basedir.js | 29 +
.../node_modules/resolve/test/filter.js | 34 +
.../node_modules/resolve/test/filter_sync.js | 33 +
.../node_modules/resolve/test/home_paths.js | 127 +
.../resolve/test/home_paths_sync.js | 114 +
.../node_modules/resolve/test/mock.js | 315 +
.../node_modules/resolve/test/mock_sync.js | 214 +
.../node_modules/resolve/test/module_dir.js | 56 +
.../test/module_dir/xmodules/aaa/index.js | 1 +
.../test/module_dir/ymodules/aaa/index.js | 1 +
.../test/module_dir/zmodules/bbb/main.js | 1 +
.../test/module_dir/zmodules/bbb/package.json | 3 +
.../resolve/test/node-modules-paths.js | 143 +
.../node_modules/resolve/test/node_path.js | 70 +
.../resolve/test/node_path/x/aaa/index.js | 1 +
.../resolve/test/node_path/x/ccc/index.js | 1 +
.../resolve/test/node_path/y/bbb/index.js | 1 +
.../resolve/test/node_path/y/ccc/index.js | 1 +
.../node_modules/resolve/test/nonstring.js | 9 +
.../node_modules/resolve/test/pathfilter.js | 75 +
.../resolve/test/pathfilter/deep_ref/main.js | 0
.../node_modules/resolve/test/precedence.js | 23 +
.../resolve/test/precedence/aaa.js | 1 +
.../resolve/test/precedence/aaa/index.js | 1 +
.../resolve/test/precedence/aaa/main.js | 1 +
.../resolve/test/precedence/bbb.js | 1 +
.../resolve/test/precedence/bbb/main.js | 1 +
.../node_modules/resolve/test/resolver.js | 546 +
.../resolve/test/resolver/baz/doom.js | 0
.../resolve/test/resolver/baz/package.json | 4 +
.../resolve/test/resolver/baz/quux.js | 1 +
.../resolve/test/resolver/browser_field/a.js | 0
.../resolve/test/resolver/browser_field/b.js | 0
.../test/resolver/browser_field/package.json | 5 +
.../resolve/test/resolver/cup.coffee | 1 +
.../resolve/test/resolver/dot_main/index.js | 1 +
.../test/resolver/dot_main/package.json | 3 +
.../test/resolver/dot_slash_main/index.js | 1 +
.../test/resolver/dot_slash_main/package.json | 3 +
.../node_modules/resolve/test/resolver/foo.js | 1 +
.../test/resolver/incorrect_main/index.js | 2 +
.../test/resolver/incorrect_main/package.json | 3 +
.../test/resolver/invalid_main/package.json | 7 +
.../resolver/malformed_package_json/index.js | 0
.../malformed_package_json/package.json | 1 +
.../resolve/test/resolver/mug.coffee | 0
.../node_modules/resolve/test/resolver/mug.js | 0
.../test/resolver/multirepo/lerna.json | 6 +
.../test/resolver/multirepo/package.json | 20 +
.../multirepo/packages/package-a/index.js | 35 +
.../multirepo/packages/package-a/package.json | 14 +
.../multirepo/packages/package-b/index.js | 0
.../multirepo/packages/package-b/package.json | 14 +
.../resolver/nested_symlinks/mylib/async.js | 26 +
.../nested_symlinks/mylib/package.json | 15 +
.../resolver/nested_symlinks/mylib/sync.js | 12 +
.../test/resolver/other_path/lib/other-lib.js | 0
.../resolve/test/resolver/other_path/root.js | 0
.../resolve/test/resolver/quux/foo/index.js | 1 +
.../resolve/test/resolver/same_names/foo.js | 1 +
.../test/resolver/same_names/foo/index.js | 1 +
.../resolver/symlinked/_/node_modules/foo.js | 0
.../symlinked/_/symlink_target/.gitkeep | 0
.../test/resolver/symlinked/package/bar.js | 1 +
.../resolver/symlinked/package/package.json | 3 +
.../test/resolver/without_basedir/main.js | 5 +
.../resolve/test/resolver_sync.js | 645 +
.../resolve/test/shadowed_core.js | 54 +
.../shadowed_core/node_modules/util/index.js | 0
.../node_modules/resolve/test/subdirs.js | 13 +
.../node_modules/resolve/test/symlinks.js | 176 +
.../node_modules/rimraf/CHANGELOG.md | 65 +
.../examples_4/node_modules/rimraf/LICENSE | 15 +
.../examples_4/node_modules/rimraf/README.md | 101 +
.../examples_4/node_modules/rimraf/bin.js | 68 +
.../node_modules/rimraf/package.json | 32 +
.../examples_4/node_modules/rimraf/rimraf.js | 360 +
.../node_modules/safe-buffer/LICENSE | 21 +
.../node_modules/safe-buffer/README.md | 584 +
.../node_modules/safe-buffer/index.d.ts | 187 +
.../node_modules/safe-buffer/index.js | 62 +
.../node_modules/safe-buffer/package.json | 37 +
.../node_modules/safer-buffer/LICENSE | 21 +
.../safer-buffer/Porting-Buffer.md | 268 +
.../node_modules/safer-buffer/Readme.md | 156 +
.../node_modules/safer-buffer/dangerous.js | 58 +
.../node_modules/safer-buffer/package.json | 34 +
.../node_modules/safer-buffer/safer.js | 77 +
.../node_modules/safer-buffer/tests.js | 406 +
.../examples_4/node_modules/saxes/README.md | 323 +
.../node_modules/saxes/package.json | 70 +
.../examples_4/node_modules/saxes/saxes.d.ts | 635 +
.../examples_4/node_modules/saxes/saxes.js | 2064 ++
.../node_modules/saxes/saxes.js.map | 1 +
.../node_modules/semver/CHANGELOG.md | 70 +
.../examples_4/node_modules/semver/LICENSE | 15 +
.../examples_4/node_modules/semver/README.md | 443 +
.../node_modules/semver/bin/semver.js | 174 +
.../node_modules/semver/package.json | 28 +
.../examples_4/node_modules/semver/range.bnf | 16 +
.../examples_4/node_modules/semver/semver.js | 1596 ++
.../node_modules/shebang-command/index.js | 19 +
.../node_modules/shebang-command/license | 9 +
.../node_modules/shebang-command/package.json | 34 +
.../node_modules/shebang-command/readme.md | 34 +
.../node_modules/shebang-regex/index.d.ts | 22 +
.../node_modules/shebang-regex/index.js | 2 +
.../node_modules/shebang-regex/license | 9 +
.../node_modules/shebang-regex/package.json | 35 +
.../node_modules/shebang-regex/readme.md | 33 +
.../node_modules/signal-exit/LICENSE.txt | 16 +
.../node_modules/signal-exit/README.md | 39 +
.../node_modules/signal-exit/index.js | 202 +
.../node_modules/signal-exit/package.json | 38 +
.../node_modules/signal-exit/signals.js | 53 +
.../node_modules/sisteransi/license | 21 +
.../node_modules/sisteransi/package.json | 34 +
.../node_modules/sisteransi/readme.md | 113 +
.../node_modules/sisteransi/src/index.js | 58 +
.../sisteransi/src/sisteransi.d.ts | 35 +
.../examples_4/node_modules/slash/index.d.ts | 25 +
.../examples_4/node_modules/slash/index.js | 11 +
.../examples_4/node_modules/slash/license | 9 +
.../node_modules/slash/package.json | 35 +
.../examples_4/node_modules/slash/readme.md | 44 +
.../source-map-support/LICENSE.md | 21 +
.../node_modules/source-map-support/README.md | 284 +
.../browser-source-map-support.js | 114 +
.../source-map-support/package.json | 31 +
.../register-hook-require.js | 1 +
.../source-map-support/register.js | 1 +
.../source-map-support/source-map-support.js | 625 +
.../node_modules/source-map/CHANGELOG.md | 301 +
.../node_modules/source-map/LICENSE | 28 +
.../node_modules/source-map/README.md | 742 +
.../source-map/dist/source-map.debug.js | 3234 +++
.../source-map/dist/source-map.js | 3233 +++
.../source-map/dist/source-map.min.js | 2 +
.../source-map/dist/source-map.min.js.map | 1 +
.../node_modules/source-map/lib/array-set.js | 121 +
.../node_modules/source-map/lib/base64-vlq.js | 140 +
.../node_modules/source-map/lib/base64.js | 67 +
.../source-map/lib/binary-search.js | 111 +
.../source-map/lib/mapping-list.js | 79 +
.../node_modules/source-map/lib/quick-sort.js | 114 +
.../source-map/lib/source-map-consumer.js | 1145 +
.../source-map/lib/source-map-generator.js | 425 +
.../source-map/lib/source-node.js | 413 +
.../node_modules/source-map/lib/util.js | 488 +
.../node_modules/source-map/package.json | 73 +
.../node_modules/source-map/source-map.d.ts | 98 +
.../node_modules/source-map/source-map.js | 8 +
.../node_modules/sprintf-js/.npmignore | 1 +
.../node_modules/sprintf-js/LICENSE | 24 +
.../node_modules/sprintf-js/README.md | 88 +
.../node_modules/sprintf-js/bower.json | 14 +
.../node_modules/sprintf-js/demo/angular.html | 20 +
.../sprintf-js/dist/angular-sprintf.min.js | 4 +
.../dist/angular-sprintf.min.js.map | 1 +
.../sprintf-js/dist/angular-sprintf.min.map | 1 +
.../sprintf-js/dist/sprintf.min.js | 4 +
.../sprintf-js/dist/sprintf.min.js.map | 1 +
.../sprintf-js/dist/sprintf.min.map | 1 +
.../node_modules/sprintf-js/gruntfile.js | 36 +
.../node_modules/sprintf-js/package.json | 22 +
.../sprintf-js/src/angular-sprintf.js | 18 +
.../node_modules/sprintf-js/src/sprintf.js | 208 +
.../node_modules/sprintf-js/test/test.js | 82 +
.../node_modules/stack-utils/index.js | 338 +
.../node_modules/stack-utils/license | 21 +
.../node_modules/stack-utils/package.json | 39 +
.../node_modules/stack-utils/readme.md | 143 +
.../node_modules/string-length/index.d.ts | 22 +
.../node_modules/string-length/index.js | 19 +
.../node_modules/string-length/license | 9 +
.../node_modules/string-length/package.json | 45 +
.../node_modules/string-length/readme.md | 43 +
.../node_modules/string-width/index.d.ts | 29 +
.../node_modules/string-width/index.js | 47 +
.../node_modules/string-width/license | 9 +
.../node_modules/string-width/package.json | 56 +
.../node_modules/string-width/readme.md | 50 +
.../node_modules/strip-ansi/index.d.ts | 17 +
.../node_modules/strip-ansi/index.js | 4 +
.../node_modules/strip-ansi/license | 9 +
.../node_modules/strip-ansi/package.json | 54 +
.../node_modules/strip-ansi/readme.md | 46 +
.../node_modules/strip-bom/index.d.ts | 14 +
.../node_modules/strip-bom/index.js | 15 +
.../examples_4/node_modules/strip-bom/license | 9 +
.../node_modules/strip-bom/package.json | 42 +
.../node_modules/strip-bom/readme.md | 54 +
.../node_modules/strip-final-newline/index.js | 16 +
.../node_modules/strip-final-newline/license | 9 +
.../strip-final-newline/package.json | 40 +
.../strip-final-newline/readme.md | 30 +
.../strip-json-comments/index.d.ts | 36 +
.../node_modules/strip-json-comments/index.js | 77 +
.../node_modules/strip-json-comments/license | 9 +
.../strip-json-comments/package.json | 47 +
.../strip-json-comments/readme.md | 78 +
.../node_modules/supports-color/browser.js | 5 +
.../node_modules/supports-color/index.js | 135 +
.../node_modules/supports-color/license | 9 +
.../node_modules/supports-color/package.json | 53 +
.../node_modules/supports-color/readme.md | 76 +
.../supports-hyperlinks/browser.js | 8 +
.../node_modules/supports-hyperlinks/index.js | 95 +
.../node_modules/supports-hyperlinks/license | 9 +
.../supports-hyperlinks/package.json | 48 +
.../supports-hyperlinks/readme.md | 48 +
.../supports-preserve-symlinks-flag/.eslintrc | 14 +
.../.github/FUNDING.yml | 12 +
.../supports-preserve-symlinks-flag/.nycrc | 9 +
.../CHANGELOG.md | 22 +
.../supports-preserve-symlinks-flag/LICENSE | 21 +
.../supports-preserve-symlinks-flag/README.md | 42 +
.../browser.js | 3 +
.../supports-preserve-symlinks-flag/index.js | 9 +
.../package.json | 70 +
.../test/index.js | 29 +
.../node_modules/symbol-tree/LICENSE | 21 +
.../node_modules/symbol-tree/README.md | 545 +
.../symbol-tree/lib/SymbolTree.js | 838 +
.../symbol-tree/lib/SymbolTreeNode.js | 54 +
.../symbol-tree/lib/TreeIterator.js | 69 +
.../symbol-tree/lib/TreePosition.js | 11 +
.../node_modules/symbol-tree/package.json | 47 +
.../node_modules/terminal-link/index.d.ts | 69 +
.../node_modules/terminal-link/index.js | 23 +
.../node_modules/terminal-link/license | 9 +
.../node_modules/terminal-link/package.json | 44 +
.../node_modules/terminal-link/readme.md | 82 +
.../node_modules/test-exclude/CHANGELOG.md | 352 +
.../node_modules/test-exclude/LICENSE.txt | 14 +
.../node_modules/test-exclude/README.md | 96 +
.../node_modules/test-exclude/index.js | 161 +
.../test-exclude/is-outside-dir-posix.js | 7 +
.../test-exclude/is-outside-dir-win32.js | 10 +
.../test-exclude/is-outside-dir.js | 7 +
.../node_modules/test-exclude/package.json | 45 +
.../examples_4/node_modules/throat/LICENSE | 19 +
.../examples_4/node_modules/throat/README.md | 55 +
.../examples_4/node_modules/throat/index.d.ts | 32 +
.../examples_4/node_modules/throat/index.js | 145 +
.../node_modules/throat/index.js.flow | 7 +
.../node_modules/throat/package.json | 47 +
.../examples_4/node_modules/tmpl/lib/tmpl.js | 17 +
.../examples_4/node_modules/tmpl/license | 28 +
.../examples_4/node_modules/tmpl/package.json | 19 +
.../examples_4/node_modules/tmpl/readme.md | 10 +
.../node_modules/to-fast-properties/index.js | 27 +
.../node_modules/to-fast-properties/license | 10 +
.../to-fast-properties/package.json | 35 +
.../node_modules/to-fast-properties/readme.md | 37 +
.../node_modules/to-regex-range/LICENSE | 21 +
.../node_modules/to-regex-range/README.md | 305 +
.../node_modules/to-regex-range/index.js | 288 +
.../node_modules/to-regex-range/package.json | 88 +
.../node_modules/tough-cookie/LICENSE | 12 +
.../node_modules/tough-cookie/README.md | 582 +
.../node_modules/tough-cookie/lib/cookie.js | 1671 ++
.../node_modules/tough-cookie/lib/memstore.js | 190 +
.../tough-cookie/lib/pathMatch.js | 61 +
.../tough-cookie/lib/permuteDomain.js | 70 +
.../tough-cookie/lib/pubsuffix-psl.js | 38 +
.../node_modules/tough-cookie/lib/store.js | 76 +
.../node_modules/tough-cookie/lib/version.js | 2 +
.../node_modules/tough-cookie/package.json | 109 +
.../examples_4/node_modules/tr46/LICENSE.md | 21 +
.../examples_4/node_modules/tr46/README.md | 72 +
.../examples_4/node_modules/tr46/index.js | 297 +
.../node_modules/tr46/lib/mappingTable.json | 1 +
.../node_modules/tr46/lib/regexes.js | 29 +
.../node_modules/tr46/lib/statusMapping.js | 11 +
.../examples_4/node_modules/tr46/package.json | 46 +
.../node_modules/type-check/LICENSE | 22 +
.../node_modules/type-check/README.md | 210 +
.../node_modules/type-check/lib/check.js | 126 +
.../node_modules/type-check/lib/index.js | 16 +
.../node_modules/type-check/lib/parse-type.js | 196 +
.../node_modules/type-check/package.json | 40 +
.../node_modules/type-detect/LICENSE | 19 +
.../node_modules/type-detect/README.md | 228 +
.../node_modules/type-detect/index.js | 378 +
.../node_modules/type-detect/package.json | 1 +
.../node_modules/type-detect/type-detect.js | 388 +
.../node_modules/type-fest/base.d.ts | 39 +
.../node_modules/type-fest/index.d.ts | 2 +
.../examples_4/node_modules/type-fest/license | 9 +
.../node_modules/type-fest/package.json | 58 +
.../node_modules/type-fest/readme.md | 760 +
.../type-fest/source/async-return-type.d.ts | 23 +
.../type-fest/source/asyncify.d.ts | 31 +
.../node_modules/type-fest/source/basic.d.ts | 51 +
.../type-fest/source/conditional-except.d.ts | 43 +
.../type-fest/source/conditional-keys.d.ts | 43 +
.../type-fest/source/conditional-pick.d.ts | 42 +
.../type-fest/source/entries.d.ts | 57 +
.../node_modules/type-fest/source/entry.d.ts | 60 +
.../node_modules/type-fest/source/except.d.ts | 22 +
.../type-fest/source/fixed-length-array.d.ts | 38 +
.../type-fest/source/iterable-element.d.ts | 46 +
.../type-fest/source/literal-union.d.ts | 33 +
.../type-fest/source/merge-exclusive.d.ts | 39 +
.../node_modules/type-fest/source/merge.d.ts | 25 +
.../type-fest/source/mutable.d.ts | 38 +
.../node_modules/type-fest/source/opaque.d.ts | 65 +
.../type-fest/source/package-json.d.ts | 611 +
.../type-fest/source/partial-deep.d.ts | 72 +
.../type-fest/source/promisable.d.ts | 23 +
.../type-fest/source/promise-value.d.ts | 27 +
.../type-fest/source/readonly-deep.d.ts | 59 +
.../source/require-at-least-one.d.ts | 33 +
.../type-fest/source/require-exactly-one.d.ts | 35 +
.../type-fest/source/set-optional.d.ts | 33 +
.../type-fest/source/set-required.d.ts | 33 +
.../type-fest/source/set-return-type.d.ts | 29 +
.../type-fest/source/simplify.d.ts | 4 +
.../type-fest/source/stringified.d.ts | 21 +
.../type-fest/source/tsconfig-json.d.ts | 870 +
.../type-fest/source/typed-array.d.ts | 15 +
.../source/union-to-intersection.d.ts | 58 +
.../type-fest/source/utilities.d.ts | 5 +
.../type-fest/source/value-of.d.ts | 40 +
.../type-fest/ts41/camel-case.d.ts | 64 +
.../type-fest/ts41/delimiter-case.d.ts | 85 +
.../node_modules/type-fest/ts41/get.d.ts | 131 +
.../node_modules/type-fest/ts41/index.d.ts | 10 +
.../type-fest/ts41/kebab-case.d.ts | 36 +
.../type-fest/ts41/pascal-case.d.ts | 36 +
.../type-fest/ts41/snake-case.d.ts | 35 +
.../type-fest/ts41/utilities.d.ts | 8 +
.../typedarray-to-buffer/.airtap.yml | 15 +
.../typedarray-to-buffer/.travis.yml | 11 +
.../node_modules/typedarray-to-buffer/LICENSE | 21 +
.../typedarray-to-buffer/README.md | 85 +
.../typedarray-to-buffer/index.js | 25 +
.../typedarray-to-buffer/package.json | 50 +
.../typedarray-to-buffer/test/basic.js | 50 +
.../node_modules/universalify/LICENSE | 20 +
.../node_modules/universalify/README.md | 76 +
.../node_modules/universalify/index.js | 25 +
.../node_modules/universalify/package.json | 34 +
.../node_modules/v8-to-istanbul/CHANGELOG.md | 380 +
.../node_modules/v8-to-istanbul/LICENSE.txt | 14 +
.../node_modules/v8-to-istanbul/README.md | 90 +
.../node_modules/v8-to-istanbul/index.d.ts | 25 +
.../node_modules/v8-to-istanbul/index.js | 5 +
.../node_modules/v8-to-istanbul/lib/branch.js | 28 +
.../v8-to-istanbul/lib/function.js | 29 +
.../node_modules/v8-to-istanbul/lib/line.js | 34 +
.../node_modules/v8-to-istanbul/lib/range.js | 33 +
.../node_modules/v8-to-istanbul/lib/source.js | 245 +
.../v8-to-istanbul/lib/v8-to-istanbul.js | 318 +
.../node_modules/source-map/CHANGELOG.md | 344 +
.../node_modules/source-map/LICENSE | 28 +
.../node_modules/source-map/README.md | 822 +
.../source-map/dist/source-map.js | 3351 +++
.../node_modules/source-map/lib/array-set.js | 100 +
.../node_modules/source-map/lib/base64-vlq.js | 111 +
.../node_modules/source-map/lib/base64.js | 18 +
.../source-map/lib/binary-search.js | 107 +
.../source-map/lib/mapping-list.js | 80 +
.../node_modules/source-map/lib/mappings.wasm | Bin 0 -> 48693 bytes
.../node_modules/source-map/lib/read-wasm.js | 40 +
.../source-map/lib/source-map-consumer.js | 1254 ++
.../source-map/lib/source-map-generator.js | 413 +
.../source-map/lib/source-node.js | 404 +
.../node_modules/source-map/lib/util.js | 546 +
.../node_modules/source-map/lib/wasm.js | 107 +
.../node_modules/source-map/package.json | 90 +
.../node_modules/source-map/source-map.d.ts | 369 +
.../node_modules/source-map/source-map.js | 8 +
.../node_modules/v8-to-istanbul/package.json | 48 +
.../node_modules/w3c-hr-time/CHANGELOG.md | 19 +
.../node_modules/w3c-hr-time/LICENSE.md | 21 +
.../node_modules/w3c-hr-time/README.md | 130 +
.../node_modules/w3c-hr-time/index.js | 11 +
.../w3c-hr-time/lib/calculate-clock-offset.js | 39 +
.../w3c-hr-time/lib/clock-is-accurate.js | 61 +
.../w3c-hr-time/lib/global-monotonic-clock.js | 10 +
.../w3c-hr-time/lib/performance.js | 53 +
.../node_modules/w3c-hr-time/lib/utils.js | 11 +
.../node_modules/w3c-hr-time/package.json | 26 +
.../node_modules/w3c-xmlserializer/LICENSE.md | 25 +
.../node_modules/w3c-xmlserializer/README.md | 41 +
.../w3c-xmlserializer/lib/attributes.js | 128 +
.../w3c-xmlserializer/lib/constants.js | 44 +
.../w3c-xmlserializer/lib/serialize.js | 371 +
.../w3c-xmlserializer/package.json | 32 +
.../node_modules/walker/.travis.yml | 3 +
.../examples_4/node_modules/walker/LICENSE | 13 +
.../node_modules/walker/lib/walker.js | 111 +
.../node_modules/walker/package.json | 27 +
.../examples_4/node_modules/walker/readme.md | 52 +
.../webidl-conversions/LICENSE.md | 12 +
.../node_modules/webidl-conversions/README.md | 101 +
.../webidl-conversions/lib/index.js | 489 +
.../webidl-conversions/package.json | 30 +
.../node_modules/whatwg-encoding/LICENSE.txt | 7 +
.../node_modules/whatwg-encoding/README.md | 50 +
.../whatwg-encoding/lib/labels-to-names.json | 207 +
.../whatwg-encoding/lib/supported-names.json | 37 +
.../whatwg-encoding/lib/whatwg-encoding.js | 47 +
.../node_modules/whatwg-encoding/package.json | 29 +
.../node_modules/whatwg-mimetype/LICENSE.txt | 7 +
.../node_modules/whatwg-mimetype/README.md | 101 +
.../whatwg-mimetype/lib/mime-type.js | 191 +
.../whatwg-mimetype/lib/parser.js | 124 +
.../whatwg-mimetype/lib/serializer.js | 25 +
.../node_modules/whatwg-mimetype/lib/utils.js | 25 +
.../node_modules/whatwg-mimetype/package.json | 43 +
.../node_modules/whatwg-url/LICENSE.txt | 21 +
.../node_modules/whatwg-url/README.md | 104 +
.../node_modules/whatwg-url/dist/Function.js | 46 +
.../node_modules/whatwg-url/dist/URL-impl.js | 217 +
.../node_modules/whatwg-url/dist/URL.js | 417 +
.../whatwg-url/dist/URLSearchParams-impl.js | 122 +
.../whatwg-url/dist/URLSearchParams.js | 457 +
.../whatwg-url/dist/VoidFunction.js | 30 +
.../node_modules/whatwg-url/dist/encoding.js | 26 +
.../node_modules/whatwg-url/dist/infra.js | 26 +
.../whatwg-url/dist/percent-encoding.js | 141 +
.../whatwg-url/dist/url-state-machine.js | 1210 ++
.../whatwg-url/dist/urlencoded.js | 102 +
.../node_modules/whatwg-url/dist/utils.js | 141 +
.../node_modules/whatwg-url/index.js | 24 +
.../node_modules/whatwg-url/package.json | 60 +
.../whatwg-url/webidl2js-wrapper.js | 7 +
.../node_modules/which/CHANGELOG.md | 166 +
.../examples_4/node_modules/which/LICENSE | 15 +
.../examples_4/node_modules/which/README.md | 54 +
.../node_modules/which/bin/node-which | 52 +
.../node_modules/which/package.json | 43 +
.../examples_4/node_modules/which/which.js | 125 +
.../examples_4/node_modules/word-wrap/LICENSE | 21 +
.../node_modules/word-wrap/README.md | 182 +
.../node_modules/word-wrap/index.d.ts | 50 +
.../node_modules/word-wrap/index.js | 46 +
.../node_modules/word-wrap/package.json | 77 +
.../node_modules/wrap-ansi/index.js | 216 +
.../examples_4/node_modules/wrap-ansi/license | 9 +
.../node_modules/wrap-ansi/package.json | 62 +
.../node_modules/wrap-ansi/readme.md | 91 +
.../examples_4/node_modules/wrappy/LICENSE | 15 +
.../examples_4/node_modules/wrappy/README.md | 36 +
.../node_modules/wrappy/package.json | 29 +
.../examples_4/node_modules/wrappy/wrappy.js | 33 +
.../write-file-atomic/CHANGELOG.md | 32 +
.../node_modules/write-file-atomic/LICENSE | 6 +
.../node_modules/write-file-atomic/README.md | 72 +
.../node_modules/write-file-atomic/index.js | 259 +
.../write-file-atomic/package.json | 48 +
.../examples_4/node_modules/ws/LICENSE | 21 +
.../examples_4/node_modules/ws/README.md | 495 +
.../examples_4/node_modules/ws/browser.js | 8 +
.../examples_4/node_modules/ws/index.js | 10 +
.../node_modules/ws/lib/buffer-util.js | 129 +
.../node_modules/ws/lib/constants.js | 10 +
.../node_modules/ws/lib/event-target.js | 184 +
.../node_modules/ws/lib/extension.js | 223 +
.../examples_4/node_modules/ws/lib/limiter.js | 55 +
.../node_modules/ws/lib/permessage-deflate.js | 518 +
.../node_modules/ws/lib/receiver.js | 607 +
.../examples_4/node_modules/ws/lib/sender.js | 409 +
.../examples_4/node_modules/ws/lib/stream.js | 180 +
.../node_modules/ws/lib/validation.js | 104 +
.../node_modules/ws/lib/websocket-server.js | 447 +
.../node_modules/ws/lib/websocket.js | 1174 ++
.../examples_4/node_modules/ws/package.json | 56 +
.../xml-name-validator/LICENSE.txt | 176 +
.../node_modules/xml-name-validator/README.md | 36 +
.../lib/generated-parser.js | 504 +
.../xml-name-validator/lib/grammar.pegjs | 35 +
.../lib/xml-name-validator.js | 17 +
.../xml-name-validator/package.json | 28 +
.../examples_4/node_modules/xmlchars/LICENSE | 18 +
.../node_modules/xmlchars/README.md | 33 +
.../node_modules/xmlchars/package.json | 51 +
.../node_modules/xmlchars/xml/1.0/ed4.d.ts | 31 +
.../node_modules/xmlchars/xml/1.0/ed4.js | 44 +
.../node_modules/xmlchars/xml/1.0/ed4.js.map | 1 +
.../node_modules/xmlchars/xml/1.0/ed5.d.ts | 51 +
.../node_modules/xmlchars/xml/1.0/ed5.js | 105 +
.../node_modules/xmlchars/xml/1.0/ed5.js.map | 1 +
.../node_modules/xmlchars/xml/1.1/ed2.d.ts | 73 +
.../node_modules/xmlchars/xml/1.1/ed2.js | 145 +
.../node_modules/xmlchars/xml/1.1/ed2.js.map | 1 +
.../node_modules/xmlchars/xmlchars.d.ts | 170 +
.../node_modules/xmlchars/xmlchars.js | 191 +
.../node_modules/xmlchars/xmlchars.js.map | 1 +
.../node_modules/xmlchars/xmlns/1.0/ed3.d.ts | 28 +
.../node_modules/xmlchars/xmlns/1.0/ed3.js | 65 +
.../xmlchars/xmlns/1.0/ed3.js.map | 1 +
.../examples_4/node_modules/y18n/CHANGELOG.md | 100 +
.../examples_4/node_modules/y18n/LICENSE | 13 +
.../examples_4/node_modules/y18n/README.md | 127 +
.../node_modules/y18n/build/index.cjs | 203 +
.../node_modules/y18n/build/lib/cjs.js | 6 +
.../node_modules/y18n/build/lib/index.js | 174 +
.../y18n/build/lib/platform-shims/node.js | 19 +
.../examples_4/node_modules/y18n/index.mjs | 8 +
.../examples_4/node_modules/y18n/package.json | 70 +
.../node_modules/yargs-parser/CHANGELOG.md | 263 +
.../node_modules/yargs-parser/LICENSE.txt | 14 +
.../node_modules/yargs-parser/README.md | 518 +
.../node_modules/yargs-parser/browser.js | 29 +
.../node_modules/yargs-parser/build/index.cjs | 1042 +
.../yargs-parser/build/lib/index.js | 59 +
.../yargs-parser/build/lib/string-utils.js | 65 +
.../build/lib/tokenize-arg-string.js | 40 +
.../build/lib/yargs-parser-types.js | 12 +
.../yargs-parser/build/lib/yargs-parser.js | 1037 +
.../node_modules/yargs-parser/package.json | 87 +
.../node_modules/yargs/CHANGELOG.md | 88 +
.../examples_4/node_modules/yargs/LICENSE | 21 +
.../examples_4/node_modules/yargs/README.md | 202 +
.../examples_4/node_modules/yargs/browser.mjs | 7 +
.../node_modules/yargs/build/index.cjs | 2920 +++
.../node_modules/yargs/build/lib/argsert.js | 62 +
.../node_modules/yargs/build/lib/command.js | 382 +
.../yargs/build/lib/completion-templates.js | 47 +
.../yargs/build/lib/completion.js | 128 +
.../yargs/build/lib/middleware.js | 53 +
.../yargs/build/lib/parse-command.js | 32 +
.../yargs/build/lib/typings/common-types.js | 9 +
.../build/lib/typings/yargs-parser-types.js | 1 +
.../node_modules/yargs/build/lib/usage.js | 548 +
.../yargs/build/lib/utils/apply-extends.js | 59 +
.../yargs/build/lib/utils/is-promise.js | 5 +
.../yargs/build/lib/utils/levenshtein.js | 26 +
.../yargs/build/lib/utils/obj-filter.js | 10 +
.../yargs/build/lib/utils/process-argv.js | 17 +
.../yargs/build/lib/utils/set-blocking.js | 12 +
.../yargs/build/lib/utils/which-module.js | 10 +
.../yargs/build/lib/validation.js | 308 +
.../yargs/build/lib/yargs-factory.js | 1143 +
.../node_modules/yargs/build/lib/yerror.js | 7 +
.../node_modules/yargs/helpers/helpers.mjs | 10 +
.../node_modules/yargs/helpers/index.js | 14 +
.../node_modules/yargs/helpers/package.json | 3 +
.../examples_4/node_modules/yargs/index.cjs | 39 +
.../examples_4/node_modules/yargs/index.mjs | 8 +
.../yargs/lib/platform-shims/browser.mjs | 92 +
.../yargs/lib/platform-shims/esm.mjs | 67 +
.../node_modules/yargs/locales/be.json | 46 +
.../node_modules/yargs/locales/de.json | 46 +
.../node_modules/yargs/locales/en.json | 51 +
.../node_modules/yargs/locales/es.json | 46 +
.../node_modules/yargs/locales/fi.json | 49 +
.../node_modules/yargs/locales/fr.json | 53 +
.../node_modules/yargs/locales/hi.json | 49 +
.../node_modules/yargs/locales/hu.json | 46 +
.../node_modules/yargs/locales/id.json | 50 +
.../node_modules/yargs/locales/it.json | 46 +
.../node_modules/yargs/locales/ja.json | 51 +
.../node_modules/yargs/locales/ko.json | 49 +
.../node_modules/yargs/locales/nb.json | 44 +
.../node_modules/yargs/locales/nl.json | 49 +
.../node_modules/yargs/locales/nn.json | 44 +
.../node_modules/yargs/locales/pirate.json | 13 +
.../node_modules/yargs/locales/pl.json | 49 +
.../node_modules/yargs/locales/pt.json | 45 +
.../node_modules/yargs/locales/pt_BR.json | 48 +
.../node_modules/yargs/locales/ru.json | 46 +
.../node_modules/yargs/locales/th.json | 46 +
.../node_modules/yargs/locales/tr.json | 48 +
.../node_modules/yargs/locales/zh_CN.json | 48 +
.../node_modules/yargs/locales/zh_TW.json | 47 +
.../node_modules/yargs/package.json | 122 +
.../examples_4/node_modules/yargs/yargs | 9 +
weekly_mission_2/examples_4/package-lock.json | 7017 +++++++
weekly_mission_2/examples_4/package.json | 16 +
weekly_mission_2/examples_4/pokemon.js | 22 +
weekly_mission_2/examples_4/pokemon.test.js | 6 +
.../exercises/exercise_1/exercise_1.js | 20 +
.../exercises/exercise_1/exercise_2.js | 26 +
.../exercises/exercise_1/exercise_3.js | 23 +
.../exercises/exercise_1/exercise_4.js | 16 +
.../exercises/exercise_2/exercise_1.js | 66 +
5931 files changed, 658586 insertions(+), 9 deletions(-)
create mode 100644 weekly_mission_2/examples_0/example_1.js
create mode 100644 weekly_mission_2/examples_0/example_2.js
create mode 100644 weekly_mission_2/examples_0/example_3.js
create mode 100644 weekly_mission_2/examples_0/example_4.js
create mode 100644 weekly_mission_2/examples_0/example_5.js
create mode 100644 weekly_mission_2/examples_1/example_1.js
create mode 100644 weekly_mission_2/examples_1/example_10.js
create mode 100644 weekly_mission_2/examples_1/example_11.js
create mode 100644 weekly_mission_2/examples_1/example_12.js
create mode 100644 weekly_mission_2/examples_1/example_13.js
create mode 100644 weekly_mission_2/examples_1/example_14.js
create mode 100644 weekly_mission_2/examples_1/example_15.js
create mode 100644 weekly_mission_2/examples_1/example_16.js
create mode 100644 weekly_mission_2/examples_1/example_2.js
create mode 100644 weekly_mission_2/examples_1/example_3.js
create mode 100644 weekly_mission_2/examples_1/example_4.js
create mode 100644 weekly_mission_2/examples_1/example_5.js
create mode 100644 weekly_mission_2/examples_1/example_6.js
create mode 100644 weekly_mission_2/examples_1/example_7.js
create mode 100644 weekly_mission_2/examples_1/example_8.js
create mode 100644 weekly_mission_2/examples_1/example_9.js
create mode 100644 weekly_mission_2/examples_2/example_1.js
create mode 100644 weekly_mission_2/examples_2/example_10.js
create mode 100644 weekly_mission_2/examples_2/example_2.js
create mode 100644 weekly_mission_2/examples_2/example_3.js
create mode 100644 weekly_mission_2/examples_2/example_4.js
create mode 100644 weekly_mission_2/examples_2/example_5.js
create mode 100644 weekly_mission_2/examples_2/example_6.js
create mode 100644 weekly_mission_2/examples_2/example_7.js
create mode 100644 weekly_mission_2/examples_2/example_8.js
create mode 100644 weekly_mission_2/examples_2/example_9.js
create mode 100644 weekly_mission_2/examples_3/explorer.js
create mode 100644 weekly_mission_2/examples_3/main.js
create mode 100644 weekly_mission_2/examples_3/package.json
create mode 100644 weekly_mission_2/examples_3/viajero.js
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/acorn
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/acorn.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/acorn.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/browserslist
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/browserslist.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/browserslist.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/escodegen
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/escodegen.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/escodegen.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esgenerate
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esgenerate.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esgenerate.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esparse
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esparse.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esparse.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esvalidate
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esvalidate.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/esvalidate.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/jest
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/jest.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/jest.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/js-yaml
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/js-yaml.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/js-yaml.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/jsesc
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/jsesc.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/jsesc.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/json5
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/json5.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/json5.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/node-which
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/node-which.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/node-which.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/parser
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/parser.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/parser.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/resolve
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/resolve.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/resolve.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/rimraf
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/rimraf.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/rimraf.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/semver
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/semver.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/.bin/semver.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/.package-lock.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/fast-string-array.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/original-source.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/remapping.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@ampproject/remapping/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/code-frame/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/code-frame/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/code-frame/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/code-frame/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs2-built-ins.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs3-shipped-proposals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs2-built-ins.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/native-modules.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/overlapping-plugins.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugin-bugfixes.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugins.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/native-modules.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/overlapping-plugins.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugin-bugfixes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugins.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/cache-contexts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/caching.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-chain.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-descriptors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/configuration.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import-meta-resolve.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index-browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/module-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/package.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/plugins.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/full.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/config-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/deep-array.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/environment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/item.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/partial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/pattern-to-regex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/plugin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/printer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets-browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/option-assertions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/options.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/plugins.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/removed.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/async.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/fs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/tools/build-external-helpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-ast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file-browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/file.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/generate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/merge-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-file.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-opts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/plugin-pass.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/lib/vendor/import-meta-resolve.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index-browser.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets-browser.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file-browser.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep-browser.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/buffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/base.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/classes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/expressions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/flow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/jsx.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/methods.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/modules.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/statements.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/template-literals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/typescript.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/parentheses.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/whitespace.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/printer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/lib/source-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.debug.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.min.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/array-set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64-vlq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/binary-search.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/mapping-list.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/quick-sort.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-consumer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-generator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/source-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/generator/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/debug.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/filter-items.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/options.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/pretty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/targets.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-builder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-injector.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/is-module.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/get-module-name.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/identifier.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/keyword.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/find-suggestion.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/validator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers-generated.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/applyDecs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/asyncIterator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/jsx.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/objectSpread2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/typeof.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/generate-helpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/license
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js.flow
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/license
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/templates.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/types/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-convert/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-convert/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-convert/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-convert/conversions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-convert/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-convert/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-convert/route.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-name/.eslintrc.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-name/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-name/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-name/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-name/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-name/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/color-name/test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/escape-string-regexp/license
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/escape-string-regexp/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/escape-string-regexp/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/has-flag/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/has-flag/license
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/has-flag/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/has-flag/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/supports-color/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/supports-color/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/supports-color/license
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/supports-color/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/supports-color/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/highlight/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/bin/babel-parser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/lib/index.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/parser/typings/babel-parser.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-async-generators/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-async-generators/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-async-generators/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-async-generators/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-bigint/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-bigint/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-bigint/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-bigint/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-class-properties/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-class-properties/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-class-properties/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-class-properties/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-import-meta/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-import-meta/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-import-meta/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-import-meta/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-json-strings/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-json-strings/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-json-strings/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-json-strings/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-logical-assignment-operators/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-logical-assignment-operators/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-logical-assignment-operators/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-logical-assignment-operators/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-numeric-separator/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-numeric-separator/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-numeric-separator/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-numeric-separator/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-object-rest-spread/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-object-rest-spread/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-object-rest-spread/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-object-rest-spread/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-catch-binding/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-catch-binding/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-catch-binding/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-catch-binding/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-chaining/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-chaining/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-chaining/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-optional-chaining/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-top-level-await/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-top-level-await/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-top-level-await/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-top-level-await/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/fixtures/disallow-jsx-ambiguity/options.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/fixtures/disallow-jsx-ambiguity/type-assertion/input.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/fixtures/disallow-jsx-ambiguity/type-assertion/options.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/fixtures/disallow-jsx-ambiguity/type-parameter-unambiguous/input.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/fixtures/disallow-jsx-ambiguity/type-parameter-unambiguous/output.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/fixtures/disallow-jsx-ambiguity/type-parameter/input.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/fixtures/disallow-jsx-ambiguity/type-parameter/options.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/plugin-syntax-typescript/test/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/builder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/formatters.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/literal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/options.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/populate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/lib/string.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/template/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/cache.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/context.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/hub.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/ancestry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/comments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/context.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/conversion.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/evaluation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/family.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/generated/asserts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/generated/validators.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/generated/virtual-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/inference/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/inference/inferers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/introspection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/lib/hoister.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/lib/virtual-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/modification.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/removal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/path/replacement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/scope/binding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/scope/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/scope/lib/renamer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/traverse-node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/lib/visitors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/scripts/generators/asserts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/scripts/generators/validators.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/scripts/generators/virtual-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/traverse/scripts/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/asserts/assertNode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/asserts/generated/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/ast-types/generated/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/builders/builder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/builders/generated/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/builders/generated/uppercase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/builders/react/buildChildren.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/clone/clone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/clone/cloneDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/clone/cloneNode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/comments/addComment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/comments/addComments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/comments/inheritInnerComments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/comments/inheritsComments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/comments/removeComments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/constants/generated/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/constants/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/Scope.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/ensureBlock.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toBlock.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toComputedKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toExpression.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toIdentifier.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toKeyAlias.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toSequenceExpression.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/toStatement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/converters/valueToNode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/experimental.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/flow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/jsx.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/misc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/placeholders.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/typescript.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/definitions/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/index-legacy.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/index.js.flow
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/modifications/inherits.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/modifications/removeProperties.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/traverse/traverse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/traverse/traverseFast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/utils/inherit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/utils/shallowEqual.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/generated/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/is.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isBinding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isBlockScoped.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isImmutable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isLet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isNode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isPlaceholderType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isReferenced.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isScope.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isValidIdentifier.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/isVar.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/matchesPattern.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/react/isCompatTag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/react/isReactComponent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/lib/validators/validate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/asserts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/ast-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/builders.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/docs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/flow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/typescript-legacy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/generators/validators.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/utils/formatBuilderName.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/utils/lowerFirst.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/utils/stringifyValidator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@babel/types/scripts/utils/toFunctionName.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/.editorconfig
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/.gitattributes
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/ascii.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/clone.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/compare.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/index.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/merge.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/normalize.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/range-tree.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/_src/types.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/ascii.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/ascii.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/ascii.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/clone.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/clone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/clone.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/compare.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/compare.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/compare.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/merge.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/merge.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/merge.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/normalize.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/normalize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/normalize.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/range-tree.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/range-tree.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/range-tree.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/tsconfig.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/dist/lib/types.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/gulpfile.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/ascii.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/clone.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/compare.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/index.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/merge.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/normalize.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/range-tree.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/lib/types.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/src/test/merge.spec.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@bcoe/v8-coverage/tsconfig.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/load-nyc-config/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/load-nyc-config/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/load-nyc-config/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/load-nyc-config/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/load-nyc-config/load-esm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/load-nyc-config/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/schema/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/schema/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/schema/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/schema/default-exclude.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/schema/default-extension.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/schema/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@istanbuljs/schema/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/BufferedConsole.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/BufferedConsole.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/CustomConsole.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/CustomConsole.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/NullConsole.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/NullConsole.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/getConsoleOutput.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/getConsoleOutput.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/console/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/FailedTestsCache.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/FailedTestsCache.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/FailedTestsInteractiveMode.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/FailedTestsInteractiveMode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/ReporterDispatcher.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/ReporterDispatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/SearchSource.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/SearchSource.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/SnapshotInteractiveMode.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/SnapshotInteractiveMode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestNamePatternPrompt.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestNamePatternPrompt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestPathPatternPrompt.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestPathPatternPrompt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestScheduler.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestScheduler.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestWatcher.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/TestWatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/assets/jest_logo.png
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/cli/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/cli/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/collectHandles.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/collectHandles.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getChangedFilesPromise.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getChangedFilesPromise.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getConfigsOfProjectsToRun.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getConfigsOfProjectsToRun.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFound.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFound.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundFailed.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundFailed.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundPassWithNoTests.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundPassWithNoTests.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundRelatedToChangedFiles.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundRelatedToChangedFiles.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundVerbose.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestFoundVerbose.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestsFoundMessage.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getNoTestsFoundMessage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getProjectDisplayName.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getProjectDisplayName.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getProjectNamesMissingWarning.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getProjectNamesMissingWarning.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getSelectProjectsMessage.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/getSelectProjectsMessage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/jest.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/jest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/activeFiltersMessage.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/activeFiltersMessage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/createContext.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/createContext.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/handleDeprecationWarnings.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/handleDeprecationWarnings.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/isValidPath.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/isValidPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/logDebugMessages.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/logDebugMessages.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/updateGlobalConfig.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/updateGlobalConfig.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/watchPluginsHelpers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/lib/watchPluginsHelpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/FailedTestsInteractive.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/FailedTestsInteractive.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/Quit.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/Quit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/TestNamePattern.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/TestNamePattern.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/TestPathPattern.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/TestPathPattern.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/UpdateSnapshots.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/UpdateSnapshots.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/UpdateSnapshotsInteractive.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/plugins/UpdateSnapshotsInteractive.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/pluralize.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/pluralize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/runGlobalHook.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/runGlobalHook.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/runJest.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/runJest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/testSchedulerHelper.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/testSchedulerHelper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/version.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/version.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/watch.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/build/watch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/core/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/environment/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/environment/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/environment/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/environment/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/build/legacyFakeTimers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/build/legacyFakeTimers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/build/modernFakeTimers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/build/modernFakeTimers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/fake-timers/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/globals/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/globals/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/globals/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/globals/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/BaseReporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/BaseReporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/CoverageReporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/CoverageReporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/CoverageWorker.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/CoverageWorker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/DefaultReporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/DefaultReporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/NotifyReporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/NotifyReporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/Status.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/Status.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/SummaryReporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/SummaryReporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/VerboseReporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/VerboseReporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/generateEmptyCoverage.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/generateEmptyCoverage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getResultHeader.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getResultHeader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getSnapshotStatus.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getSnapshotStatus.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getSnapshotSummary.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getSnapshotSummary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getWatermarks.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/getWatermarks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/utils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/build/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/reporters/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/build/getCallsite.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/build/getCallsite.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/source-map/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/formatTestResults.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/formatTestResults.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/helpers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/helpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-result/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-sequencer/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-sequencer/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-sequencer/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/test-sequencer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/ScriptTransformer.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/ScriptTransformer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/enhanceUnexpectedTokenMessage.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/enhanceUnexpectedTokenMessage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/runtimeErrorsAndWarnings.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/runtimeErrorsAndWarnings.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/shouldInstrument.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/shouldInstrument.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/transform/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Circus.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Circus.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Config.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Config.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Global.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Global.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/TestResult.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/TestResult.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Transform.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/Transform.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jest/types/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/resolve-uri/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/sourcemap-codec/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/types/binary-search.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/types/resolve.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/types/sort.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/types/strip-filename.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/types/trace-mapping.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/dist/types/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@jridgewell/trace-mapping/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/CHANGES.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/called-in-order.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/called-in-order.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/class-name.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/class-name.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/deprecated.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/deprecated.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/every.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/every.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/function-name.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/function-name.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/global.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/global.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/index.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/order-by-first-call.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/order-by-first-call.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/array.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/copy-prototype.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/index.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/object.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/prototypes/string.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/type-of.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/type-of.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/value-to-string.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/lib/value-to-string.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/called-in-order.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/class-name.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/deprecated.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/every.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/function-name.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/global.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/order-by-first-call.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/array.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/copy-prototype.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/function.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/map.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/object.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/set.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/prototypes/string.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/type-of.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/commons/types/value-to-string.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/fake-timers/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/fake-timers/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/fake-timers/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/fake-timers/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@sinonjs/fake-timers/src/fake-timers-src.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@tootallnate/once/dist/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@tootallnate/once/dist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/@tootallnate/once/dist/index.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/@tootallnate/once/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__core/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__core/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__core/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__core/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__generator/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__generator/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__generator/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__generator/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__template/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__template/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__template/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__template/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__traverse/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__traverse/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__traverse/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__traverse/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/babel__traverse/ts4.1/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/graceful-fs/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/graceful-fs/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/graceful-fs/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/graceful-fs/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-coverage/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-coverage/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-coverage/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-coverage/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-report/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-report/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-report/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-lib-report/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-reports/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-reports/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-reports/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/istanbul-reports/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/assert.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/assert/strict.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/async_hooks.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/buffer.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/child_process.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/cluster.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/console.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/constants.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/crypto.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/dgram.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/diagnostics_channel.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/dns.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/dns/promises.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/domain.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/events.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/fs.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/fs/promises.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/globals.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/globals.global.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/http.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/http2.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/https.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/inspector.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/module.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/net.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/os.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/path.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/perf_hooks.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/process.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/punycode.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/querystring.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/readline.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/repl.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/stream.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/stream/consumers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/stream/promises.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/stream/web.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/string_decoder.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/timers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/timers/promises.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/tls.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/trace_events.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/tty.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/url.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/util.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/v8.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/vm.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/wasi.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/worker_threads.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/node/zlib.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/doc.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-angular.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-babel.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-espree.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-flow.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-glimmer.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-graphql.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-html.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-markdown.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-meriyah.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-postcss.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-typescript.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/parser-yaml.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/prettier/standalone.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/stack-utils/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/stack-utils/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/stack-utils/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/stack-utils/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs-parser/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs-parser/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs-parser/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs-parser/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs/helpers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/@types/yargs/yargs.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/lib/atob.js
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/lib/btoa.js
create mode 100644 weekly_mission_2/examples_4/node_modules/abab/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/.bin/acorn
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/.bin/acorn.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/.bin/acorn.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/bin/acorn
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/dist/acorn.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/dist/acorn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/dist/acorn.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/dist/acorn.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/dist/acorn.mjs.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/dist/acorn.mjs.map
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/dist/bin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/node_modules/acorn/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-globals/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/dist/walk.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/dist/walk.js
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/dist/walk.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/dist/walk.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/dist/walk.mjs.map
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn-walk/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/bin/acorn
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/dist/acorn.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/dist/acorn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/dist/acorn.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/dist/acorn.mjs.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/dist/bin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/acorn/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/dist/src/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/dist/src/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/dist/src/index.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/dist/src/promisify.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/dist/src/promisify.js
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/dist/src/promisify.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/src/index.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/agent-base/src/promisify.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-escapes/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-escapes/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-escapes/license
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-escapes/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-escapes/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-regex/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-regex/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-regex/license
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-regex/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-regex/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-styles/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-styles/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-styles/license
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-styles/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ansi-styles/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/anymatch/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/anymatch/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/anymatch/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/anymatch/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/anymatch/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/append.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/append/constant.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/count.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/help.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/store.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/store/constant.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/store/false.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/store/true.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/subparsers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action/version.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/action_container.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/argparse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/argument/error.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/argument/exclusive.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/argument/group.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/argument_parser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/const.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/help/added_formatters.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/help/formatter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/namespace.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/argparse/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/bench.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/abort.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/async.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/defer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/iterate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/readable_asynckit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/readable_parallel.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/readable_serial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/readable_serial_ordered.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/state.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/streamify.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/lib/terminator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/parallel.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/serial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/serialOrdered.js
create mode 100644 weekly_mission_2/examples_4/node_modules/asynckit/stream.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-jest/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-jest/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-jest/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-jest/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-jest/build/loadBabelConfig.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-jest/build/loadBabelConfig.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-jest/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-istanbul/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-istanbul/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-istanbul/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-istanbul/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-istanbul/lib/load-nyc-config-sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-istanbul/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-jest-hoist/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-jest-hoist/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-jest-hoist/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-jest-hoist/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-plugin-jest-hoist/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-current-node-syntax/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-current-node-syntax/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-current-node-syntax/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-current-node-syntax/scripts/check-yarn-bug.sh
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-current-node-syntax/src/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-jest/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-jest/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-jest/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/babel-preset-jest/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/balanced-match/.github/FUNDING.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/balanced-match/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/balanced-match/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/balanced-match/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/balanced-match/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/brace-expansion/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/brace-expansion/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/brace-expansion/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/brace-expansion/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/lib/compile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/lib/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/lib/expand.js
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/lib/stringify.js
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/braces/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/browser-process-hrtime/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/browser-process-hrtime/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/browser-process-hrtime/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/browser-process-hrtime/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/browser-process-hrtime/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/cli.js
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/error.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/error.js
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/browserslist/update-db.js
create mode 100644 weekly_mission_2/examples_4/node_modules/bser/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/bser/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/bser/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/buffer-from/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/buffer-from/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/buffer-from/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/buffer-from/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/callsites/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/callsites/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/callsites/license
create mode 100644 weekly_mission_2/examples_4/node_modules/callsites/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/callsites/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/camelcase/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/camelcase/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/camelcase/license
create mode 100644 weekly_mission_2/examples_4/node_modules/camelcase/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/camelcase/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/agents.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/browserVersions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/browsers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/aac.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/abortcontroller.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ac3-ec3.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/accelerometer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/addeventlistener.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ambient-light.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/apng.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/array-find-index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/array-find.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/array-flat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/array-includes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/arrow-functions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/asmjs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/async-clipboard.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/async-functions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/atob-btoa.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/audio-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/audio.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/audiotracks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/autofocus.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/auxclick.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/av1.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/avif.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/background-attachment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/background-clip-text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/background-img-opts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/background-position-x-y.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/background-sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/battery-status.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/beacon.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/beforeafterprint.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/bigint.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/blobbuilder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/bloburls.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/border-image.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/border-radius.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/broadcastchannel.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/brotli.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/calc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/canvas-blending.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/canvas-text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/canvas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ch-unit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/channel-messaging.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/childnode-remove.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/classlist.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/clipboard.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/colr-v1.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/colr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/comparedocumentposition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/console-basic.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/console-time.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/const.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/constraint-validation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/contenteditable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/cookie-store-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/cors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/createimagebitmap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/credential-management.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/cryptography.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-all.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-animation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-any-link.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-appearance.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-at-counter-style.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-autofill.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-background-offsets.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-boxshadow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-canvas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-caret-color.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-cascade-layers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-case-insensitive.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-clip-path.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-color-adjust.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-color-function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-conic-gradients.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-container-queries.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-containment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-content-visibility.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-counters.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-crisp-edges.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-cross-fade.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-default-pseudo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-display-contents.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-element-function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-env-function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-exclusions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-featurequeries.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-file-selector-button.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-filter-function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-filters.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-first-letter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-first-line.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-fixed.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-focus-visible.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-focus-within.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-font-palette.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-font-stretch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-gencontent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-gradients.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-grid.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-has.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-hyphenate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-hyphens.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-image-orientation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-image-set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-initial-letter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-initial-value.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-lch-lab.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-letter-spacing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-line-clamp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-logical-props.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-masks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-math-functions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-media-interaction.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-media-resolution.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-media-scripting.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-mediaqueries.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-mixblendmode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-motion-paths.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-namespaces.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-nesting.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-not-sel-list.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-nth-child-of.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-opacity.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-overflow-overlay.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-overflow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-page-break.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-paged-media.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-paint-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-placeholder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-read-only-write.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-reflections.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-regions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-resize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-revert-value.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-scroll-timeline.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-scrollbar.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-sel2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-sel3.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-selection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-shapes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-snappoints.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-sticky.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-subgrid.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-supports-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-table.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-text-align-last.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-text-indent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-text-justify.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-text-orientation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-text-spacing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-textshadow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-touch-action-2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-touch-action.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-transitions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-unset-value.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-variables.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-when-else.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-widows-orphans.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-width-stretch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-writing-mode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css-zoom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css3-attr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css3-boxsizing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css3-colors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css3-cursors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/css3-tabsize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/currentcolor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/custom-elements.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/custom-elementsv1.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/customevent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/datalist.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dataset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/datauri.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/decorators.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/details.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/deviceorientation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/devicepixelratio.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dialog.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dispatchevent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dnssec.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/do-not-track.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/document-currentscript.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/document-execcommand.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/document-policy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/document-scrollingelement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/documenthead.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dom-range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/domcontentloaded.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dommatrix.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/download.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/dragndrop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/element-closest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/element-from-point.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/element-scroll-methods.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/eme.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/eot.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es5.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es6-class.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es6-generators.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es6-module.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es6-number.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es6-string-includes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/es6.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/eventsource.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/extended-system-fonts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/feature-policy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/fetch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/fieldset-disabled.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/fileapi.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/filereader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/filereadersync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/filesystem.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/flac.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/flexbox-gap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/flexbox.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/flow-root.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-family-system-ui.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-feature.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-kerning.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-loading.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-metrics-overrides.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-size-adjust.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-smooth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-unicode-range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-variant-alternates.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-variant-east-asian.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/font-variant-numeric.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/fontface.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/form-attribute.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/form-submit-attributes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/form-validation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/forms.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/fullscreen.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/gamepad.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/geolocation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/getboundingclientrect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/getcomputedstyle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/getrandomvalues.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/gyroscope.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/hashchange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/heif.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/hevc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/hidden.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/high-resolution-time.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/history.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/html-media-capture.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/html5semantic.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/http-live-streaming.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/http2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/http3.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/iframe-sandbox.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/iframe-seamless.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/imagecapture.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ime.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/import-maps.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/imports.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/indexeddb.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/indexeddb2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/inline-block.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/innertext.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-color.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-datetime.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-email-tel-url.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-event.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-file-accept.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-file-directory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-file-multiple.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-inputmode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-minlength.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-number.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-pattern.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-placeholder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-search.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/input-selection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/insert-adjacent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/internationalization.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/intersectionobserver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/intl-pluralrules.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/intrinsic-width.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/jpeg2000.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/jpegxl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/jpegxr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/json.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/keyboardevent-code.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/keyboardevent-key.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/keyboardevent-location.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/keyboardevent-which.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/lazyload.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/let.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-icon-png.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-icon-svg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-rel-preload.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/link-rel-prerender.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/localecompare.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/magnetometer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/matchesselector.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/matchmedia.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mathml.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/maxlength.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/media-attribute.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/media-fragments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/media-session-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mediarecorder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mediasource.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/menu.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/meta-theme-color.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/meter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/midi.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/minmaxwh.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mp3.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mpeg-dash.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mpeg4.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/multibackgrounds.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/multicolumn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mutation-events.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/mutationobserver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/namevalue-storage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/native-filesystem-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/nav-timing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/navigator-language.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/netinfo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/notifications.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/object-entries.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/object-fit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/object-observe.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/object-values.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/objectrtc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/offline-apps.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/offscreencanvas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ogg-vorbis.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ogv.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ol-reversed.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/once-event-listener.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/online-status.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/opus.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/orientation-sensor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/outline.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/pad-start-end.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/page-transition-events.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/pagevisibility.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/passive-event-listener.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/passwordrules.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/path2d.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/payment-request.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/pdf-viewer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/permissions-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/permissions-policy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/picture-in-picture.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/picture.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ping.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/png-alpha.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/pointer-events.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/pointer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/pointerlock.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/portals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/private-class-fields.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/progress.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/promise-finally.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/promises.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/proximity.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/proxy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/public-class-fields.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/publickeypinning.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/push-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/queryselector.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/readonly-attr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/referrer-policy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/rel-noopener.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/rel-noreferrer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/rellist.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/rem.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/requestanimationframe.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/requestidlecallback.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/resizeobserver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/resource-timing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/rest-parameters.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ruby.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/run-in.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/screen-orientation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/script-async.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/script-defer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/scrollintoview.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/sdch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/selection-api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/server-timing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/serviceworkers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/setimmediate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/sha-2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/shadowdom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/shadowdomv1.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/sharedworkers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/sni.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/spdy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/speech-recognition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/speech-synthesis.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/sql-storage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/srcset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/stream.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/streams.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/style-scoped.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/subresource-integrity.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-css.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-filters.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-fonts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-fragment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-html.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-html5.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-img.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg-smil.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/svg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/sxg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/tabindex-attr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/template-literals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/template.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/temporal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/testfeat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/text-decoration.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/text-emphasis.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/text-overflow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/text-size-adjust.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/text-stroke.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/text-underline-offset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/textcontent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/textencoder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/tls1-1.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/tls1-2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/tls1-3.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/token-binding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/touch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/transforms2d.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/transforms3d.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/trusted-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/ttf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/typedarrays.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/u2f.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/unhandledrejection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/url.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/urlsearchparams.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/use-strict.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/user-select-none.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/user-timing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/variable-fonts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/vector-effect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/vibration.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/video.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/videotracks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/viewport-unit-variants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/viewport-units.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/wai-aria.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/wake-lock.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/wasm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/wav.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/wbr-element.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/web-animation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/web-app-manifest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/web-bluetooth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/web-serial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/web-share.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webauthn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webgl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webgl2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webgpu.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webhid.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webkit-user-drag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webnfc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/websockets.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webusb.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webvr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webvtt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webworkers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/webxr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/will-change.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/woff.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/woff2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/word-break.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/wordwrap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/x-doc-messaging.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/x-frame-options.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/xhr2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/xhtml.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/xhtmlsmil.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/features/xml-serializer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AD.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AF.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AX.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/AZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BB.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BD.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BF.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BJ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/BZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CD.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CF.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CV.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CX.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/CZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/DE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/DJ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/DK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/DM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/DO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/DZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/EC.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/EE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/EG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ER.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ES.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ET.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/FI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/FJ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/FK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/FM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/FO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/FR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GB.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GD.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GF.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GP.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GQ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/GY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/HK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/HN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/HR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/HT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/HU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ID.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IQ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/IT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/JE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/JM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/JO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/JP.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KP.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/KZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LB.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LC.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LV.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/LY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MC.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MD.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ME.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ML.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MP.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MQ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MV.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MX.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/MZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NC.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NF.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NP.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/NZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/OM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PF.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/PY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/QA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/RE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/RO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/RS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/RU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/RW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SB.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SC.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SD.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ST.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SV.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/SZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TC.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TD.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TH.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TJ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TK.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TO.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TR.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TV.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/TZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/UA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/UG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/US.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/UY.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/UZ.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/VA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/VC.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/VE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/VG.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/VI.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/VN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/VU.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/WF.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/WS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/YE.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/YT.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ZA.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ZM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/ZW.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-af.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-an.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-as.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-eu.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-na.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-oc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-sa.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/data/regions/alt-ww.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/lib/statuses.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/lib/supported.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/unpacker/agents.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/unpacker/browserVersions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/unpacker/browsers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/unpacker/feature.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/unpacker/features.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/unpacker/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/dist/unpacker/region.js
create mode 100644 weekly_mission_2/examples_4/node_modules/caniuse-lite/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/chalk/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/chalk/license
create mode 100644 weekly_mission_2/examples_4/node_modules/chalk/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/chalk/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/chalk/source/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/chalk/source/templates.js
create mode 100644 weekly_mission_2/examples_4/node_modules/chalk/source/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/char-regex/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/char-regex/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/char-regex/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/char-regex/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/char-regex/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ci-info/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/ci-info/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/ci-info/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/ci-info/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/ci-info/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ci-info/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ci-info/vendors.json
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/dist/lexer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/dist/lexer.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/lexer.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/lexer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cjs-module-lexer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/build/index.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/build/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/build/lib/string-utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/cliui/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/co/History.md
create mode 100644 weekly_mission_2/examples_4/node_modules/co/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/co/Readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/co/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/co/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/collect-v8-coverage/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/collect-v8-coverage/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/collect-v8-coverage/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/collect-v8-coverage/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/collect-v8-coverage/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/collect-v8-coverage/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/color-convert/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/color-convert/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/color-convert/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/color-convert/conversions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/color-convert/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/color-convert/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/color-convert/route.js
create mode 100644 weekly_mission_2/examples_4/node_modules/color-name/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/color-name/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/color-name/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/color-name/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/combined-stream/License
create mode 100644 weekly_mission_2/examples_4/node_modules/combined-stream/Readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/combined-stream/lib/combined_stream.js
create mode 100644 weekly_mission_2/examples_4/node_modules/combined-stream/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/combined-stream/yarn.lock
create mode 100644 weekly_mission_2/examples_4/node_modules/concat-map/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/concat-map/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/concat-map/README.markdown
create mode 100644 weekly_mission_2/examples_4/node_modules/concat-map/example/map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/concat-map/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/concat-map/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/concat-map/test/map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/convert-source-map/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/convert-source-map/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/convert-source-map/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/convert-source-map/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/lib/enoent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/lib/util/escape.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/lib/util/readShebang.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/lib/util/resolveCommand.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cross-spawn/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/README.mdown
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSDocumentRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSFontFaceRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSHostRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSImportRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSKeyframeRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSKeyframesRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSMediaRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSOM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSStyleDeclaration.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSStyleRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSStyleSheet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSSupportsRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/CSSValueExpression.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/MatcherList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/MediaList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/StyleSheet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/clone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssom/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/CSSStyleDeclaration.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/CSSStyleDeclaration.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/allExtraProperties.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/allProperties.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/allWebkitProperties.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/implementedProperties.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/named_colors.json
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/parsers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/parsers.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/azimuth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/background.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/backgroundAttachment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/backgroundColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/backgroundImage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/backgroundPosition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/backgroundRepeat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/border.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderBottom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderBottomColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderBottomStyle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderBottomWidth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderCollapse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderLeft.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderLeftColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderLeftStyle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderLeftWidth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderRightColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderRightStyle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderRightWidth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderSpacing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderStyle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderTop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderTopColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderTopStyle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderTopWidth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/borderWidth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/bottom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/clear.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/clip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/color.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/cssFloat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/flex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/flexBasis.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/flexGrow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/flexShrink.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/float.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/floodColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/font.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/fontFamily.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/fontSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/fontStyle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/fontVariant.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/fontWeight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/height.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/left.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/lightingColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/lineHeight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/margin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/marginBottom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/marginLeft.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/marginRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/marginTop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/opacity.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/outlineColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/padding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/paddingBottom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/paddingLeft.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/paddingRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/paddingTop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/right.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/stopColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/textLineThroughColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/textOverlineColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/textUnderlineColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/top.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitBorderAfterColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitBorderBeforeColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitBorderEndColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitBorderStartColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitColumnRuleColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitMatchNearestMailBlockquoteColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitTapHighlightColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitTextEmphasisColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitTextFillColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/properties/width.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/utils/colorSpace.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/lib/utils/getBasicPropertyDescriptor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/README.mdown
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSDocumentRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSFontFaceRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSHostRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSImportRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSKeyframeRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSKeyframesRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSMediaRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSOM.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleDeclaration.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleSheet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSSupportsRule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/CSSValueExpression.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/MatcherList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/MediaList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/StyleSheet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/clone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/node_modules/cssom/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/cssstyle/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/data-urls/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/data-urls/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/data-urls/lib/parser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/data-urls/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/data-urls/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/debug/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/debug/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/debug/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/debug/src/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/debug/src/common.js
create mode 100644 weekly_mission_2/examples_4/node_modules/debug/src/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/debug/src/node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/decimal.js/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/decimal.js/LICENCE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/decimal.js/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/decimal.js/decimal.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/decimal.js/decimal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/decimal.js/decimal.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/decimal.js/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/dedent/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/dedent/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/dedent/dist/dedent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/dedent/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/README.markdown
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/example/cmp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/test/NaN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/test/cmp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deep-is/test/neg-vs-pos-0.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/changelog.md
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/dist/cjs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/dist/umd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/license.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/deepmerge/rollup.config.js
create mode 100644 weekly_mission_2/examples_4/node_modules/delayed-stream/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/delayed-stream/License
create mode 100644 weekly_mission_2/examples_4/node_modules/delayed-stream/Makefile
create mode 100644 weekly_mission_2/examples_4/node_modules/delayed-stream/Readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/delayed-stream/lib/delayed_stream.js
create mode 100644 weekly_mission_2/examples_4/node_modules/delayed-stream/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/detect-newline/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/detect-newline/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/detect-newline/license
create mode 100644 weekly_mission_2/examples_4/node_modules/detect-newline/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/detect-newline/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/diff-sequences/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/diff-sequences/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/diff-sequences/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/diff-sequences/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/diff-sequences/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/diff-sequences/perf/example.md
create mode 100644 weekly_mission_2/examples_4/node_modules/diff-sequences/perf/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/lib/DOMException-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/lib/DOMException.js
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/lib/legacy-error-codes.json
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/node_modules/webidl-conversions/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/node_modules/webidl-conversions/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/node_modules/webidl-conversions/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/node_modules/webidl-conversions/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/domexception/webidl2js-wrapper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/chromium-versions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/chromium-versions.json
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/full-chromium-versions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/full-chromium-versions.json
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/full-versions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/full-versions.json
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/versions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/electron-to-chromium/versions.json
create mode 100644 weekly_mission_2/examples_4/node_modules/emittery/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/emittery/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/emittery/license
create mode 100644 weekly_mission_2/examples_4/node_modules/emittery/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/emittery/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/LICENSE-MIT.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/es2015/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/es2015/text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/emoji-regex/text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/error-ex/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/error-ex/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/error-ex/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/error-ex/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/dist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/dist/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/license
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/sync/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/sync/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/escalade/sync/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/escape-string-regexp/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/escape-string-regexp/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/escape-string-regexp/license
create mode 100644 weekly_mission_2/examples_4/node_modules/escape-string-regexp/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/escape-string-regexp/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/escodegen/LICENSE.BSD
create mode 100644 weekly_mission_2/examples_4/node_modules/escodegen/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/escodegen/bin/escodegen.js
create mode 100644 weekly_mission_2/examples_4/node_modules/escodegen/bin/esgenerate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/escodegen/escodegen.js
create mode 100644 weekly_mission_2/examples_4/node_modules/escodegen/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/esprima/ChangeLog
create mode 100644 weekly_mission_2/examples_4/node_modules/esprima/LICENSE.BSD
create mode 100644 weekly_mission_2/examples_4/node_modules/esprima/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/esprima/bin/esparse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/esprima/bin/esvalidate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/esprima/dist/esprima.js
create mode 100644 weekly_mission_2/examples_4/node_modules/esprima/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/estraverse/.jshintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/estraverse/LICENSE.BSD
create mode 100644 weekly_mission_2/examples_4/node_modules/estraverse/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/estraverse/estraverse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/estraverse/gulpfile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/estraverse/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/esutils/LICENSE.BSD
create mode 100644 weekly_mission_2/examples_4/node_modules/esutils/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/esutils/lib/ast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/esutils/lib/code.js
create mode 100644 weekly_mission_2/examples_4/node_modules/esutils/lib/keyword.js
create mode 100644 weekly_mission_2/examples_4/node_modules/esutils/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/esutils/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/lib/command.js
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/lib/error.js
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/lib/kill.js
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/lib/promise.js
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/lib/stdio.js
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/lib/stream.js
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/license
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/execa/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/.jshintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/Gruntfile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/LICENSE-MIT
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/lib/exit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/exit_test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/10-stderr.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/10-stdout-stderr.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/10-stdout.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/100-stderr.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/100-stdout-stderr.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/100-stdout.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/1000-stderr.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/1000-stdout-stderr.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/1000-stdout.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/create-files.sh
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/log-broken.js
create mode 100644 weekly_mission_2/examples_4/node_modules/exit/test/fixtures/log.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/asymmetricMatchers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/asymmetricMatchers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/extractExpectedAssertionsErrors.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/extractExpectedAssertionsErrors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/jasmineUtils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/jasmineUtils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/jestMatchersObject.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/jestMatchersObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/matchers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/matchers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/print.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/print.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/spyMatchers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/spyMatchers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/toThrowMatchers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/toThrowMatchers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/utils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/build/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/expect/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/.eslintrc.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/.github/FUNDING.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/benchmark/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/benchmark/test.json
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/example/key_cmp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/example/nested.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/example/str.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/example/value_cmp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/test/cmp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/test/nested.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/test/str.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-json-stable-stringify/test/to-json.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-levenshtein/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-levenshtein/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-levenshtein/levenshtein.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fast-levenshtein/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/fb-watchman/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/fb-watchman/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fb-watchman/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/fill-range/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/fill-range/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/fill-range/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fill-range/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/find-up/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/find-up/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/find-up/license
create mode 100644 weekly_mission_2/examples_4/node_modules/find-up/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/find-up/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/License
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/README.md.bak
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/Readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/lib/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/lib/form_data.js
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/lib/populate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/form-data/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/fs.realpath/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/fs.realpath/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/fs.realpath/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fs.realpath/old.js
create mode 100644 weekly_mission_2/examples_4/node_modules/fs.realpath/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/.editorconfig
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/.eslintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/.jscs.json
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/implementation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/test/.eslintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/function-bind/test/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/gensync/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/gensync/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/gensync/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/gensync/index.js.flow
create mode 100644 weekly_mission_2/examples_4/node_modules/gensync/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/gensync/test/.babelrc
create mode 100644 weekly_mission_2/examples_4/node_modules/gensync/test/index.test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/get-caller-file/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/get-caller-file/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/get-caller-file/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/get-caller-file/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/get-caller-file/index.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/get-caller-file/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/async.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/cache.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/index.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/is-node-modules.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/get-package-type/sync.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/get-stream/buffer-stream.js
create mode 100644 weekly_mission_2/examples_4/node_modules/get-stream/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/get-stream/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/get-stream/license
create mode 100644 weekly_mission_2/examples_4/node_modules/get-stream/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/get-stream/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/glob/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/glob/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/glob/common.js
create mode 100644 weekly_mission_2/examples_4/node_modules/glob/glob.js
create mode 100644 weekly_mission_2/examples_4/node_modules/glob/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/glob/sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/globals/globals.json
create mode 100644 weekly_mission_2/examples_4/node_modules/globals/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/globals/license
create mode 100644 weekly_mission_2/examples_4/node_modules/globals/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/globals/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/graceful-fs/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/graceful-fs/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/graceful-fs/clone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/graceful-fs/graceful-fs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/graceful-fs/legacy-streams.js
create mode 100644 weekly_mission_2/examples_4/node_modules/graceful-fs/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/graceful-fs/polyfills.js
create mode 100644 weekly_mission_2/examples_4/node_modules/has-flag/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/has-flag/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/has-flag/license
create mode 100644 weekly_mission_2/examples_4/node_modules/has-flag/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/has-flag/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/has/LICENSE-MIT
create mode 100644 weekly_mission_2/examples_4/node_modules/has/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/has/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/has/src/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/has/test/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/html-encoding-sniffer/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/html-encoding-sniffer/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/html-encoding-sniffer/lib/html-encoding-sniffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/html-encoding-sniffer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/cjs/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/cjs/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/esm/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/test/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/html-escaper/test/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/dist/agent.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/dist/agent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/dist/agent.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/dist/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/dist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/dist/index.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/http-proxy-agent/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/agent.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/agent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/agent.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/index.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/parse-proxy-response.js
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/https-proxy-agent/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/core.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/main.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/main.js
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/main.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/realtime.js
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/realtime.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/signals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/build/src/signals.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/human-signals/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/Changelog.md
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/dbcs-codec.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/dbcs-data.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/internal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/sbcs-codec.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/sbcs-data-generated.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/sbcs-data.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/big5-added.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/cp936.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/cp949.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/cp950.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/eucjp.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/gbk-added.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/tables/shiftjis.json
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/utf16.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/encodings/utf7.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/lib/bom-handling.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/lib/extend-node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/lib/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/lib/streams.js
create mode 100644 weekly_mission_2/examples_4/node_modules/iconv-lite/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/import-local/fixtures/cli.js
create mode 100644 weekly_mission_2/examples_4/node_modules/import-local/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/import-local/license
create mode 100644 weekly_mission_2/examples_4/node_modules/import-local/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/import-local/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/imurmurhash/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/imurmurhash/imurmurhash.js
create mode 100644 weekly_mission_2/examples_4/node_modules/imurmurhash/imurmurhash.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/imurmurhash/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/inflight/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/inflight/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/inflight/inflight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/inflight/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/inherits/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/inherits/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/inherits/inherits.js
create mode 100644 weekly_mission_2/examples_4/node_modules/inherits/inherits_browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/inherits/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/.editorconfig
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/.istanbul.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-arrayish/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/.eslintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/.nycrc
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/core.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-core-module/test/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-fullwidth-code-point/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/is-fullwidth-code-point/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-fullwidth-code-point/license
create mode 100644 weekly_mission_2/examples_4/node_modules/is-fullwidth-code-point/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-fullwidth-code-point/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-generator-fn/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/is-generator-fn/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-generator-fn/license
create mode 100644 weekly_mission_2/examples_4/node_modules/is-generator-fn/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-generator-fn/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-number/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/is-number/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-number/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-number/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-potential-custom-element-name/LICENSE-MIT.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/is-potential-custom-element-name/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-potential-custom-element-name/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-potential-custom-element-name/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-stream/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/is-stream/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-stream/license
create mode 100644 weekly_mission_2/examples_4/node_modules/is-stream/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-stream/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-typedarray/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-typedarray/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/is-typedarray/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/is-typedarray/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/is-typedarray/test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/mode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/test/basic.js
create mode 100644 weekly_mission_2/examples_4/node_modules/isexe/windows.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/lib/coverage-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/lib/coverage-summary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/lib/data-properties.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/lib/file-coverage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/lib/percent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-coverage/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/src/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/src/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/src/instrumenter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/src/read-coverage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/src/source-coverage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-instrument/src/visitor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/context.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/file-writer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/path.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/report-base.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/summarizer-factory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/tree.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/watermarks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/lib/xml-writer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-report/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/lib/get-mapping.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/lib/map-store.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/lib/mapped.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/lib/pathutils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/lib/transform-utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/lib/transformer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-lib-source-maps/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/clover/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/cobertura/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/.babelrc
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/assets/bundle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/assets/sort-arrow-sprite.png
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/assets/spa.css
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/fileBreadcrumbs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/filterToggle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/flattenToggle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/getChildData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/routing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/summaryHeader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/summaryTableHeader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/src/summaryTableLine.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html-spa/webpack.config.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/annotator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/assets/base.css
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/assets/block-navigation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/assets/favicon.png
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/assets/sort-arrow-sprite.png
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/assets/sorter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/assets/vendor/prettify.css
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/assets/vendor/prettify.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/html/insertion-text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/json-summary/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/json/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/lcov/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/lcovonly/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/none/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/teamcity/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/text-lcov/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/text-summary/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/lib/text/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/istanbul-reports/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/git.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/git.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/hg.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/hg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-changed-files/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/eventHandler.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/eventHandler.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/formatNodeAssertErrors.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/formatNodeAssertErrors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/globalErrorHandlers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/globalErrorHandlers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestExpect.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestExpect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/run.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/run.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/state.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/state.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/testCaseReportHandler.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/testCaseReportHandler.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/utils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/build/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-circus/runner.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/bin/jest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/cli/args.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/cli/args.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/cli/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/cli/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/errors.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/errors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/generateConfigFile.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/generateConfigFile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/modifyPackageJson.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/modifyPackageJson.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/questions.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/questions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/build/init/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-cli/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/Defaults.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/Defaults.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/Deprecated.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/Deprecated.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/Descriptions.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/Descriptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/ReporterValidationErrors.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/ReporterValidationErrors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/ValidConfig.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/ValidConfig.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/color.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/color.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/constants.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/getCacheDirectory.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/getCacheDirectory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/getMaxWorkers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/getMaxWorkers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/normalize.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/normalize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/readConfigFileAndSetRootDir.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/readConfigFileAndSetRootDir.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/resolveConfigPath.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/resolveConfigPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/setFromArgv.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/setFromArgv.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/utils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/validatePattern.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/build/validatePattern.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-config/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/cleanupSemantic.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/cleanupSemantic.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/constants.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/diffLines.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/diffLines.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/diffStrings.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/diffStrings.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/getAlignedDiffs.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/getAlignedDiffs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/joinAlignedDiffs.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/joinAlignedDiffs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/normalizeDiffOptions.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/normalizeDiffOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/printDiffs.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/printDiffs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-diff/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-docblock/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-docblock/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-docblock/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-docblock/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-docblock/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/bind.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/bind.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/table/array.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/table/array.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/table/interpolation.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/table/interpolation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/table/template.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/table/template.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/validation.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/build/validation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-each/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-jsdom/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-jsdom/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-jsdom/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-jsdom/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-node/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-node/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-node/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-environment-node/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-get-type/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-get-type/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-get-type/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-get-type/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/HasteFS.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/HasteFS.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/ModuleMap.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/ModuleMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/blacklist.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/blacklist.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/constants.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/crawlers/node.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/crawlers/node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/crawlers/watchman.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/crawlers/watchman.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/getMockName.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/getMockName.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/dependencyExtractor.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/dependencyExtractor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/fast_path.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/fast_path.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/getPlatformExtension.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/getPlatformExtension.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/isRegExpSupported.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/isRegExpSupported.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/normalizePathSep.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/lib/normalizePathSep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/watchers/FSEventsWatcher.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/watchers/FSEventsWatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/watchers/NodeWatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/watchers/RecrawlWarning.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/watchers/WatchmanWatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/watchers/common.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/worker.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/build/worker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-haste-map/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/ExpectationFailed.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/ExpectationFailed.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/PCancelable.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/PCancelable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/assertionErrorMessage.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/assertionErrorMessage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/each.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/each.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/errorOnPrivate.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/errorOnPrivate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/expectationResultFactory.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/expectationResultFactory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/isError.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/isError.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/CallTracker.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/CallTracker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Env.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Env.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/JsApiReporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/ReportDispatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Spec.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Spec.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/SpyStrategy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Suite.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Suite.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Timer.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/Timer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/createSpy.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/createSpy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/jasmineLight.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/jasmineLight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/spyRegistry.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmine/spyRegistry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmineAsyncInstall.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jestExpect.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/jestExpect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/pTimeout.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/pTimeout.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/queueRunner.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/queueRunner.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/reporter.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/reporter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/setup_jest_globals.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/setup_jest_globals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/treeProcessor.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/treeProcessor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-jasmine2/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-leak-detector/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-leak-detector/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-leak-detector/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-leak-detector/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-leak-detector/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/build/Replaceable.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/build/Replaceable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/build/deepCyclicCopyReplaceable.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/build/deepCyclicCopyReplaceable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-matcher-utils/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-message-util/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-message-util/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-message-util/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-message-util/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-message-util/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-message-util/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-mock/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-mock/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-mock/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-mock/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-mock/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-pnp-resolver/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-pnp-resolver/createRequire.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-pnp-resolver/getDefaultResolver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-pnp-resolver/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-pnp-resolver/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-pnp-resolver/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-regex-util/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-regex-util/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-regex-util/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-regex-util/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve-dependencies/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve-dependencies/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve-dependencies/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve-dependencies/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/ModuleNotFoundError.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/ModuleNotFoundError.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/defaultResolver.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/defaultResolver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/fileWalkers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/fileWalkers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/isBuiltinModule.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/isBuiltinModule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/nodeModulesPaths.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/nodeModulesPaths.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/resolver.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/resolver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/shouldLoadAsEsm.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/shouldLoadAsEsm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/utils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/build/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-resolve/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/runTest.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/runTest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/testWorker.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/testWorker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runner/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/build/helpers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/build/helpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-runtime/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-serializer/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-serializer/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-serializer/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-serializer/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-serializer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-serializer/v8.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/InlineSnapshots.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/InlineSnapshots.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/SnapshotResolver.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/SnapshotResolver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/State.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/State.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/colors.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/colors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/dedentLines.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/dedentLines.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/mockSerializer.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/mockSerializer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/plugins.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/plugins.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/printSnapshot.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/printSnapshot.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/utils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/build/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/.bin/semver
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/.bin/semver.cmd
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/.bin/semver.ps1
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/bin/semver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/classes/comparator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/classes/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/classes/range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/classes/semver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/clean.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/cmp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/coerce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/compare-build.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/compare-loose.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/compare.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/diff.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/eq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/gt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/gte.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/inc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/lt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/lte.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/major.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/minor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/neq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/patch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/prerelease.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/rcompare.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/rsort.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/satisfies.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/sort.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/functions/valid.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/internal/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/internal/debug.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/internal/identifiers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/internal/parse-options.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/internal/re.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/preload.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/range.bnf
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/gtr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/intersects.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/ltr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/max-satisfying.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/min-satisfying.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/min-version.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/outside.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/simplify.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/subset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/to-comparators.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/node_modules/semver/ranges/valid.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-snapshot/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/ErrorWithStack.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/ErrorWithStack.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/clearLine.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/clearLine.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/convertDescriptorToString.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/convertDescriptorToString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/createDirectory.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/createDirectory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/createProcessObject.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/createProcessObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/deepCyclicCopy.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/deepCyclicCopy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/formatTime.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/formatTime.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/globsToMatcher.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/globsToMatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/installCommonGlobals.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/installCommonGlobals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/interopRequireDefault.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/interopRequireDefault.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/isInteractive.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/isInteractive.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/isPromise.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/isPromise.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/pluralize.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/pluralize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/preRunMessage.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/preRunMessage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/replacePathSepForGlob.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/replacePathSepForGlob.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/requireOrImportModule.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/requireOrImportModule.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/setGlobal.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/setGlobal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/specialChars.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/specialChars.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/testPathPatternToRegExp.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/testPathPatternToRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/tryRealpath.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/build/tryRealpath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-util/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/condition.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/condition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/defaultConfig.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/defaultConfig.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/deprecated.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/deprecated.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/errors.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/errors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/exampleConfig.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/exampleConfig.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/utils.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/validate.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/validate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/validateCLIOptions.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/validateCLIOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/warnings.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/build/warnings.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/node_modules/camelcase/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/node_modules/camelcase/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/node_modules/camelcase/license
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/node_modules/camelcase/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/node_modules/camelcase/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-validate/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/BaseWatchPlugin.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/BaseWatchPlugin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/JestHooks.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/JestHooks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/PatternPrompt.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/PatternPrompt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/constants.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/Prompt.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/Prompt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/colorize.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/colorize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/formatTestNameByPattern.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/formatTestNameByPattern.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/patternModeHelpers.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/patternModeHelpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/scroll.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/lib/scroll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-watcher/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/Farm.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/Farm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/FifoQueue.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/FifoQueue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/PriorityQueue.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/PriorityQueue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/WorkerPool.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/WorkerPool.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/base/BaseWorkerPool.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/base/BaseWorkerPool.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/ChildProcessWorker.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/ChildProcessWorker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/NodeThreadsWorker.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/NodeThreadsWorker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/messageParent.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/messageParent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/processChild.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/processChild.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/threadChild.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/build/workers/threadChild.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/node_modules/supports-color/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/node_modules/supports-color/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/node_modules/supports-color/license
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/node_modules/supports-color/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/node_modules/supports-color/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest-worker/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jest/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/jest/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jest/bin/jest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest/build/jest.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/jest/build/jest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jest/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/js-tokens/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/js-tokens/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/js-tokens/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/js-tokens/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-tokens/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/bin/js-yaml.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/dist/js-yaml.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/dist/js-yaml.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/common.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/dumper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/exception.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/loader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/mark.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/schema.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/schema/core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/schema/default_full.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/schema/json.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/binary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/bool.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/float.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/int.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/js/function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/merge.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/null.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/omap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/pairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/seq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/str.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/lib/js-yaml/type/timestamp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/js-yaml/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/api.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/Window.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/default-stylesheet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/js-globals.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/not-implemented.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/parser/html.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/parser/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/parser/xml.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/resources/async-resource-queue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/resources/no-op-resource-loader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/resources/request-manager.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/level2/style.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/level3/xpath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/aborting/AbortController-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/aborting/AbortSignal-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/attributes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/attributes/Attr-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/attributes/NamedNodeMap-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/constraint-validation/DefaultConstraintValidation-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/constraint-validation/ValidityState-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/cssom/StyleSheetList-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/custom-elements/CustomElementRegistry-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/documents.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/domparsing/InnerHTML-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/domparsing/XMLSerializer-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/CloseEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/CompositionEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/CustomEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/ErrorEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/Event-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/EventModifierMixin-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/FocusEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/HashChangeEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/InputEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/KeyboardEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/MessageEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/MouseEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/PageTransitionEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/PopStateEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/ProgressEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/StorageEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/TouchEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/UIEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/events/WheelEvent-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/fetch/header-list.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/fetch/header-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/file-api/Blob-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/file-api/File-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/file-api/FileList-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/AbortController.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/AbortSignal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/AbstractRange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/AddEventListenerOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/AssignedNodesOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Attr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/BarProp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/BinaryType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Blob.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/BlobCallback.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/BlobPropertyBag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CDATASection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CanPlayTypeResult.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CloseEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CloseEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Comment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CompositionEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CompositionEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CustomElementConstructor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CustomElementRegistry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CustomEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/CustomEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/DOMImplementation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/DOMParser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/DOMStringMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/DOMTokenList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Document.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/DocumentReadyState.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Element.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ElementCreationOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ElementDefinitionOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/EndingType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ErrorEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ErrorEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Event.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/EventHandlerNonNull.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/EventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/EventListenerOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/EventModifierInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/External.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/File.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/FileList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/FilePropertyBag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/FileReader.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/FocusEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/FocusEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/FormData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/GetRootNodeOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLAnchorElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLAreaElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLAudioElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLBRElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLBaseElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLBodyElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLButtonElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLCanvasElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLDListElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataListElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLDetailsElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLDialogElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLDirectoryElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLDivElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLFieldSetElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLFontElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameSetElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLHRElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadingElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLHtmlElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLLIElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLLabelElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLLegendElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLMapElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLMarqueeElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLMenuElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLMetaElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLMeterElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLOListElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptGroupElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionsCollection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLOutputElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLParagraphElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLParamElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLPictureElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLPreElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLProgressElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLSelectElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLSlotElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLSpanElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLStyleElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCaptionElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCellElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableColElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableRowElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableSectionElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTemplateElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTimeElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTitleElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLUListElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLUnknownElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Headers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/History.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/InputEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/InputEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Location.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MessageEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MessageEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MimeType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MimeTypeArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MouseEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MouseEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MutationCallback.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MutationObserver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MutationObserverInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/MutationRecord.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/NamedNodeMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Navigator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/NodeFilter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/NodeIterator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/NodeList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/OnBeforeUnloadEventHandlerNonNull.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/OnErrorEventHandlerNonNull.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Performance.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Plugin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/PluginArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/PopStateEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/PopStateEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ProcessingInstruction.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ProgressEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ProgressEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGBoundingBoxOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGGraphicsElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGNumber.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGSVGElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGStringList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SVGTitleElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Screen.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ScrollBehavior.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ScrollIntoViewOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ScrollLogicalPosition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ScrollOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ScrollRestoration.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Selection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SelectionMode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootMode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/StaticRange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/StaticRangeInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Storage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/StorageEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/StorageEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/StyleSheetList.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/SupportedType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/Text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/TextTrackKind.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/TouchEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/TouchEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/TreeWalker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/UIEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/UIEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/ValidityState.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/VisibilityState.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/VoidFunction.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/WebSocket.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/WheelEvent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/WheelEventInit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/XMLDocument.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestEventTarget.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestResponseType.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestUpload.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/XMLSerializer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/generated/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/binary-data.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/create-element.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/create-event-accessor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/custom-elements.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/details.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/document-base-url.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/events.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/focusing.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/html-constructor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/http-request.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/iterable-weak-set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/json.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/number-and-date-inputs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/selectors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/shadow-dom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/strings.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/style-rules.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/svg/basic-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/traversal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/hr-time/Performance-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/interfaces.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationObserver-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationRecord-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/named-properties-window.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/MimeType-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/MimeTypeArray-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/Navigator-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorConcurrentHardware-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorCookies-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorID-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorLanguage-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorOnLine-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorPlugins-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/Plugin-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/navigator/PluginArray-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/node-document-position.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/node-type.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/CDATASection-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/CharacterData-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/Comment-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/DOMImplementation-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/DOMStringMap-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/DocumentFragment-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/DocumentType-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/ElementCSSInlineStyle-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/ElementContentEditable-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/GlobalEventHandlers-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAnchorElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAreaElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAudioElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBRElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBaseElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBodyElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDListElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataListElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDialogElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDirectoryElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDivElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLEmbedElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFieldSetElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFontElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameSetElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHRElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadingElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHtmlElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHyperlinkElementUtils-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLIFrameElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLImageElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLInputElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLIElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLabelElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLegendElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLinkElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMapElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMarqueeElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMenuElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMetaElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMeterElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLModElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOListElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLObjectElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptGroupElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOutputElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParagraphElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParamElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPictureElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPreElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLQuoteElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSelectElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSourceElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSpanElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCaptionElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCellElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableColElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableRowElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTemplateElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTimeElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTitleElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTrackElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUListElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUnknownElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/HTMLVideoElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/LinkStyle-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/NodeList-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/NonDocumentTypeChildNode-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/NonElementParentNode-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/ProcessingInstruction-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/SVGElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/SVGGraphicsElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/SVGSVGElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/SVGTests-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/SVGTitleElement-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/Slotable-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/Text-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/WindowEventHandlers-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/nodes/XMLDocument-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/post-message.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/range/AbstractRange-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/range/Range-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/range/StaticRange-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/range/boundary-point.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/selection/Selection-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedString-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/svg/SVGListBase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/svg/SVGNumber-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/svg/SVGStringList-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/traversal/NodeIterator-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/traversal/TreeWalker-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/traversal/helpers.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl-browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/webstorage/Storage-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/window/BarProp-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/window/External-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/window/History-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/window/Location-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/window/Screen-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/window/SessionHistory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/window/navigation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestUpload-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/named-properties-tracker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/virtual-console.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/lib/jsdom/vm-shim.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsdom/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/jsesc/LICENSE-MIT.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/jsesc/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/jsesc/bin/jsesc
create mode 100644 weekly_mission_2/examples_4/node_modules/jsesc/jsesc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/jsesc/man/jsesc.1
create mode 100644 weekly_mission_2/examples_4/node_modules/jsesc/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/json-parse-even-better-errors/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/json-parse-even-better-errors/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/json-parse-even-better-errors/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/json-parse-even-better-errors/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json-parse-even-better-errors/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/dist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/dist/index.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/dist/index.min.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/dist/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/cli.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/parse.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/register.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/require.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/stringify.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/stringify.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/unicode.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/unicode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/util.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/lib/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/json5/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/kleur/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/kleur/kleur.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/kleur/license
create mode 100644 weekly_mission_2/examples_4/node_modules/kleur/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/kleur/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/leven/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/leven/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/leven/license
create mode 100644 weekly_mission_2/examples_4/node_modules/leven/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/leven/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/lib/cast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/lib/coerce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/lib/parse-string.js
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/levn/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/lines-and-columns/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/lines-and-columns/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/lines-and-columns/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/lines-and-columns/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lines-and-columns/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/locate-path/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/locate-path/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/locate-path/license
create mode 100644 weekly_mission_2/examples_4/node_modules/locate-path/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/locate-path/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_DataView.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_Hash.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_LazyWrapper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_ListCache.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_LodashWrapper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_Map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_MapCache.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_Promise.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_Set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_SetCache.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_Stack.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_Symbol.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_Uint8Array.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_WeakMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_apply.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayAggregator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayEach.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayEachRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayEvery.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayFilter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayIncludes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayIncludesWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayLikeKeys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayPush.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayReduce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayReduceRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arraySample.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arraySampleSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arrayShuffle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_arraySome.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_asciiSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_asciiToArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_asciiWords.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_assignMergeValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_assignValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_assocIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseAggregator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseAssign.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseAssignIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseAssignValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseAt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseClamp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseClone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseConforms.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseConformsTo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseCreate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseDelay.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseDifference.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseEach.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseEachRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseEvery.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseExtremum.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseFill.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseFilter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseFindIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseFindKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseFlatten.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseFor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseForOwn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseForOwnRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseForRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseFunctions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseGet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseGetAllKeys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseGetTag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseGt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseHas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseHasIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseInRange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIndexOfWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIntersection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseInverter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseInvoke.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsArguments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsArrayBuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsDate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsEqual.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsEqualDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsMatch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsNaN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsNative.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIsTypedArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseIteratee.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseKeys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseKeysIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseLodash.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseLt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseMatches.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseMatchesProperty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseMean.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseMerge.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseMergeDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseNth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseOrderBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_basePick.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_basePickBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseProperty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_basePropertyDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_basePropertyOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_basePullAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_basePullAt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseRandom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseRange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseReduce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseRepeat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseRest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSample.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSampleSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSetData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSetToString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseShuffle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSlice.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSome.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSortBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSortedIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSortedIndexBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSortedUniq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseSum.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseTimes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseToNumber.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseToPairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseToString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseTrim.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseUnary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseUniq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseUnset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseUpdate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseValues.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseWrapperValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseXor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_baseZipObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_cacheHas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_castArrayLikeObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_castFunction.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_castPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_castRest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_castSlice.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_charsEndIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_charsStartIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_cloneArrayBuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_cloneBuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_cloneDataView.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_cloneRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_cloneSymbol.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_cloneTypedArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_compareAscending.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_compareMultiple.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_composeArgs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_composeArgsRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_copyArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_copyObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_copySymbols.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_copySymbolsIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_coreJsData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_countHolders.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createAggregator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createAssigner.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createBaseEach.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createBaseFor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createBind.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createCaseFirst.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createCompounder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createCtor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createCurry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createFind.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createFlow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createHybrid.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createInverter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createMathOperation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createOver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createPadding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createPartial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createRange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createRecurry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createRelationalOperation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createRound.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createToPairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_createWrap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_customDefaultsAssignIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_customDefaultsMerge.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_customOmitClone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_deburrLetter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_defineProperty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_equalArrays.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_equalByTag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_equalObjects.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_escapeHtmlChar.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_escapeStringChar.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_flatRest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_freeGlobal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getAllKeys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getAllKeysIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getFuncName.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getHolder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getMapData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getMatchData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getNative.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getPrototype.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getRawTag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getSymbols.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getSymbolsIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getTag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getView.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_getWrapDetails.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hasPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hasUnicode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hasUnicodeWord.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hashClear.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hashDelete.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hashGet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hashHas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_hashSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_initCloneArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_initCloneByTag.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_initCloneObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_insertWrapDetails.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isFlattenable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isIterateeCall.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isKeyable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isLaziable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isMaskable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isMasked.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isPrototype.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_isStrictComparable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_iteratorToArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_lazyClone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_lazyReverse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_lazyValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_listCacheClear.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_listCacheDelete.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_listCacheGet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_listCacheHas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_listCacheSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_mapCacheClear.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_mapCacheDelete.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_mapCacheGet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_mapCacheHas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_mapCacheSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_mapToArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_matchesStrictComparable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_memoizeCapped.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_mergeData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_metaMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_nativeCreate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_nativeKeys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_nativeKeysIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_nodeUtil.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_objectToString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_overArg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_overRest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_parent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_reEscape.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_reEvaluate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_reInterpolate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_realNames.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_reorder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_replaceHolders.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_root.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_safeGet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_setCacheAdd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_setCacheHas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_setData.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_setToArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_setToPairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_setToString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_setWrapToString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_shortOut.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_shuffleSelf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stackClear.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stackDelete.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stackGet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stackHas.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stackSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_strictIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_strictLastIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stringSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stringToArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_stringToPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_toKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_toSource.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_trimmedEndIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_unescapeHtmlChar.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_unicodeSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_unicodeToArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_unicodeWords.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_updateWrapDetails.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/_wrapperClone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/add.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/after.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/array.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/ary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/assign.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/assignIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/assignInWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/assignWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/at.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/attempt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/before.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/bind.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/bindAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/bindKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/camelCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/capitalize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/castArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/ceil.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/chain.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/chunk.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/clamp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/clone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/cloneDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/cloneDeepWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/cloneWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/collection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/commit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/compact.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/concat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/cond.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/conforms.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/conformsTo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/constant.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/core.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/countBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/create.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/curry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/curryRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/date.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/debounce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/deburr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/defaultTo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/defaults.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/defaultsDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/defer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/delay.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/difference.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/differenceBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/differenceWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/divide.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/drop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/dropRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/dropRightWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/dropWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/each.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/eachRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/endsWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/entries.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/entriesIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/eq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/escape.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/escapeRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/every.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/extend.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/extendWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fill.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/filter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/find.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/findIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/findKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/findLast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/findLastIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/findLastKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/first.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flake.lock
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flake.nix
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flatMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flatMapDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flatMapDepth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flatten.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flattenDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flattenDepth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/floor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/flowRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/forEach.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/forEachRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/forIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/forInRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/forOwn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/forOwnRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/F.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/T.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/__.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/_baseConvert.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/_convertBrowser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/_falseOptions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/_mapping.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/_util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/add.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/after.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/all.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/allPass.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/always.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/any.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/anyPass.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/apply.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/array.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/ary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assign.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assignAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assignAllWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assignIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assignInAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assignInAllWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assignInWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assignWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assoc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/assocPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/at.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/attempt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/before.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/bind.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/bindAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/bindKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/camelCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/capitalize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/castArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/ceil.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/chain.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/chunk.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/clamp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/clone.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/cloneDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/cloneDeepWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/cloneWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/collection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/commit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/compact.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/complement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/compose.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/concat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/cond.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/conforms.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/conformsTo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/constant.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/contains.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/convert.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/countBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/create.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/curry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/curryN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/curryRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/curryRightN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/date.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/debounce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/deburr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/defaultTo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/defaults.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/defaultsAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/defaultsDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/defaultsDeepAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/defer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/delay.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/difference.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/differenceBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/differenceWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/dissoc.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/dissocPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/divide.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/drop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/dropLast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/dropLastWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/dropRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/dropRightWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/dropWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/each.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/eachRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/endsWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/entries.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/entriesIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/eq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/equals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/escape.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/escapeRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/every.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/extend.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/extendAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/extendAllWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/extendWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/fill.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/filter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/find.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findIndexFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findLast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findLastFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findLastIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findLastIndexFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/findLastKey.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/first.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flatMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flatMapDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flatMapDepth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flatten.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flattenDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flattenDepth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/floor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flow.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/flowRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/forEach.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/forEachRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/forIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/forInRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/forOwn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/forOwnRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/fromPairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/functions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/functionsIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/get.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/getOr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/groupBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/gt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/gte.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/has.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/hasIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/head.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/identical.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/identity.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/inRange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/includes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/includesFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/indexBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/indexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/indexOfFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/init.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/initial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/intersection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/intersectionBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/intersectionWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/invert.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/invertBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/invertObj.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/invoke.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/invokeArgs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/invokeArgsMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/invokeMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isArguments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isArrayBuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isArrayLike.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isArrayLikeObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isBoolean.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isBuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isDate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isEmpty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isEqual.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isEqualWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isError.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isFinite.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isFunction.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isLength.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isMatch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isMatchWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isNaN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isNative.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isNil.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isNull.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isNumber.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isObjectLike.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isPlainObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isSafeInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isSymbol.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isTypedArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isUndefined.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isWeakMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/isWeakSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/iteratee.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/join.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/juxt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/kebabCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/keyBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/keys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/keysIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/lang.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/last.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/lastIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/lastIndexOfFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/lowerCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/lowerFirst.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/lt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/lte.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/mapKeys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/mapValues.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/matches.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/matchesProperty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/math.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/max.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/maxBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/mean.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/meanBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/memoize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/merge.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/mergeAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/mergeAllWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/mergeWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/method.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/methodOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/minBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/multiply.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/nAry.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/negate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/next.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/noop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/now.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/nth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/nthArg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/number.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/object.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/omit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/omitAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/omitBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/once.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/orderBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/over.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/overArgs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/overEvery.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/overSome.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pad.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/padChars.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/padCharsEnd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/padCharsStart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/padEnd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/padStart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/parseInt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/partial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/partialRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/partition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/path.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pathEq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pathOr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/paths.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pick.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pickAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pickBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pipe.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/placeholder.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/plant.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pluck.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/prop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/propEq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/propOr.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/property.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/propertyOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/props.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pull.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pullAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pullAllBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pullAllWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/pullAt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/random.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/rangeRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/rangeStep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/rangeStepRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/rearg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/reduce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/reduceRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/reject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/remove.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/repeat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/replace.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/rest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/restFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/result.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/reverse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/round.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sample.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sampleSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/seq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/setWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/shuffle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/size.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/slice.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/snakeCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/some.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedIndexBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedLastIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedLastIndexBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedLastIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedUniq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sortedUniqBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/split.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/spread.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/spreadFrom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/startCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/startsWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/string.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/stubArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/stubFalse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/stubObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/stubString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/stubTrue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/subtract.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sum.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/sumBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/symmetricDifference.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/symmetricDifferenceBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/symmetricDifferenceWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/tail.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/take.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/takeLast.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/takeLastWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/takeRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/takeRightWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/takeWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/tap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/template.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/templateSettings.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/throttle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/thru.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/times.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toFinite.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toIterator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toJSON.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toLength.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toLower.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toNumber.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toPairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toPairsIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toPlainObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toSafeInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/toUpper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/transform.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/trim.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/trimChars.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/trimCharsEnd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/trimCharsStart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/trimEnd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/trimStart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/truncate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unapply.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unescape.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/union.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unionBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unionWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/uniq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/uniqBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/uniqWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/uniqueId.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unnest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unzip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/unzipWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/update.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/updateWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/upperCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/upperFirst.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/useWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/value.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/valueOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/values.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/valuesIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/where.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/whereEq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/without.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/words.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/wrap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/wrapperAt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/wrapperChain.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/wrapperLodash.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/wrapperReverse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/wrapperValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/xor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/xorBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/xorWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/zip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/zipAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/zipObj.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/zipObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/zipObjectDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fp/zipWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/fromPairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/functions.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/functionsIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/get.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/groupBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/gt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/gte.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/has.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/hasIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/head.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/identity.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/inRange.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/includes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/indexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/initial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/intersection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/intersectionBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/intersectionWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/invert.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/invertBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/invoke.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/invokeMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isArguments.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isArrayBuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isArrayLike.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isArrayLikeObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isBoolean.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isBuffer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isDate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isEmpty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isEqual.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isEqualWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isError.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isFinite.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isFunction.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isLength.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isMatch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isMatchWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isNaN.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isNative.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isNil.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isNull.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isNumber.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isObjectLike.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isPlainObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isRegExp.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isSafeInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isSymbol.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isTypedArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isUndefined.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isWeakMap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/isWeakSet.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/iteratee.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/join.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/kebabCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/keyBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/keys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/keysIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lang.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/last.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lastIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lodash.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lodash.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lowerCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lowerFirst.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/lte.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/mapKeys.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/mapValues.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/matches.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/matchesProperty.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/math.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/max.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/maxBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/mean.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/meanBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/memoize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/merge.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/mergeWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/method.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/methodOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/minBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/multiply.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/negate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/next.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/noop.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/now.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/nth.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/nthArg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/number.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/object.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/omit.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/omitBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/once.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/orderBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/over.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/overArgs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/overEvery.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/overSome.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pad.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/padEnd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/padStart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/parseInt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/partial.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/partialRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/partition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pick.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pickBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/plant.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/property.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/propertyOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pull.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pullAll.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pullAllBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pullAllWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/pullAt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/random.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/rangeRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/rearg.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/reduce.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/reduceRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/reject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/release.md
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/remove.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/repeat.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/replace.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/rest.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/result.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/reverse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/round.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sample.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sampleSize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/seq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/setWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/shuffle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/size.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/slice.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/snakeCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/some.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedIndexBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedLastIndex.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedLastIndexBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedLastIndexOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedUniq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sortedUniqBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/split.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/spread.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/startCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/startsWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/string.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/stubArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/stubFalse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/stubObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/stubString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/stubTrue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/subtract.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sum.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/sumBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/tail.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/take.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/takeRight.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/takeRightWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/takeWhile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/tap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/template.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/templateSettings.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/throttle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/thru.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/times.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toArray.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toFinite.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toIterator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toJSON.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toLength.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toLower.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toNumber.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toPairs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toPairsIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toPath.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toPlainObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toSafeInteger.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toString.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/toUpper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/transform.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/trim.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/trimEnd.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/trimStart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/truncate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/unary.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/unescape.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/union.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/unionBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/unionWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/uniq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/uniqBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/uniqWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/uniqueId.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/unset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/unzip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/unzipWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/update.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/updateWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/upperCase.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/upperFirst.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/value.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/valueOf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/values.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/valuesIn.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/without.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/words.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/wrap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/wrapperAt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/wrapperChain.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/wrapperLodash.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/wrapperReverse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/wrapperValue.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/xor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/xorBy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/xorWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/zip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/zipObject.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/zipObjectDeep.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lodash/zipWith.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lru-cache/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/lru-cache/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/lru-cache/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/lru-cache/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/make-dir/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/make-dir/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/make-dir/license
create mode 100644 weekly_mission_2/examples_4/node_modules/make-dir/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/make-dir/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/makeerror/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/makeerror/lib/makeerror.js
create mode 100644 weekly_mission_2/examples_4/node_modules/makeerror/license
create mode 100644 weekly_mission_2/examples_4/node_modules/makeerror/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/makeerror/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/merge-stream/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/merge-stream/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/merge-stream/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/merge-stream/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/micromatch/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/micromatch/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/micromatch/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/micromatch/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-db/HISTORY.md
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-db/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-db/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-db/db.json
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-db/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-db/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-types/HISTORY.md
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-types/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-types/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-types/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/mime-types/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/mimic-fn/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/mimic-fn/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/mimic-fn/license
create mode 100644 weekly_mission_2/examples_4/node_modules/mimic-fn/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/mimic-fn/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/minimatch/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/minimatch/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/minimatch/minimatch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/minimatch/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ms/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ms/license.md
create mode 100644 weekly_mission_2/examples_4/node_modules/ms/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ms/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/natural-compare/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/natural-compare/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/natural-compare/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/node-int64/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/node-int64/Int64.js
create mode 100644 weekly_mission_2/examples_4/node_modules/node-int64/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/node-int64/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/node-int64/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/node-int64/test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/node-releases/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/node-releases/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/node-releases/data/processed/envs.json
create mode 100644 weekly_mission_2/examples_4/node_modules/node-releases/data/release-schedule/release-schedule.json
create mode 100644 weekly_mission_2/examples_4/node_modules/node-releases/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/normalize-path/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/normalize-path/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/normalize-path/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/normalize-path/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/npm-run-path/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/npm-run-path/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/npm-run-path/license
create mode 100644 weekly_mission_2/examples_4/node_modules/npm-run-path/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/npm-run-path/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/nwsapi/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/nwsapi/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/nwsapi/dist/lint.log
create mode 100644 weekly_mission_2/examples_4/node_modules/nwsapi/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/nwsapi/src/modules/nwsapi-jquery.js
create mode 100644 weekly_mission_2/examples_4/node_modules/nwsapi/src/modules/nwsapi-traversal.js
create mode 100644 weekly_mission_2/examples_4/node_modules/nwsapi/src/nwsapi.js
create mode 100644 weekly_mission_2/examples_4/node_modules/once/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/once/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/once/once.js
create mode 100644 weekly_mission_2/examples_4/node_modules/once/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/onetime/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/onetime/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/onetime/license
create mode 100644 weekly_mission_2/examples_4/node_modules/onetime/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/onetime/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/optionator/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/optionator/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/optionator/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/optionator/lib/help.js
create mode 100644 weekly_mission_2/examples_4/node_modules/optionator/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/optionator/lib/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/optionator/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/p-limit/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/p-limit/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/p-limit/license
create mode 100644 weekly_mission_2/examples_4/node_modules/p-limit/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/p-limit/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/p-locate/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/p-locate/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/p-locate/license
create mode 100644 weekly_mission_2/examples_4/node_modules/p-locate/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/p-locate/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/p-try/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/p-try/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/p-try/license
create mode 100644 weekly_mission_2/examples_4/node_modules/p-try/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/p-try/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/parse-json/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse-json/license
create mode 100644 weekly_mission_2/examples_4/node_modules/parse-json/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/parse-json/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/common/doctype.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/common/error-codes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/common/foreign-content.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/common/html.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/common/unicode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/error-reporting/mixin-base.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/location-info/parser-mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/parser/formatting-element-list.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/parser/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/parser/open-element-stack.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/serializer/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/tokenizer/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/tokenizer/named-entity-data.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/tokenizer/preprocessor.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/tree-adapters/default.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/utils/merge-options.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/lib/utils/mixin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/parse5/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/path-exists/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/path-exists/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/path-exists/license
create mode 100644 weekly_mission_2/examples_4/node_modules/path-exists/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/path-exists/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/path-is-absolute/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/path-is-absolute/license
create mode 100644 weekly_mission_2/examples_4/node_modules/path-is-absolute/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/path-is-absolute/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/path-key/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/path-key/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/path-key/license
create mode 100644 weekly_mission_2/examples_4/node_modules/path-key/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/path-key/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/path-parse/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/path-parse/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/path-parse/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/path-parse/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/picocolors/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/picocolors/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/picocolors/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/picocolors/picocolors.browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picocolors/picocolors.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/picocolors/picocolors.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picocolors/types.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/lib/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/lib/parse.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/lib/picomatch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/lib/scan.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/picomatch/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/pirates/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/pirates/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/pirates/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pirates/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pirates/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/pkg-dir/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pkg-dir/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pkg-dir/license
create mode 100644 weekly_mission_2/examples_4/node_modules/pkg-dir/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/pkg-dir/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/lib/Func.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/lib/List.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/lib/Num.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/lib/Obj.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/lib/Str.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prelude-ls/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/collections.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/collections.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/AsymmetricMatcher.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/AsymmetricMatcher.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/ConvertAnsi.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/ConvertAnsi.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/DOMCollection.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/DOMCollection.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/DOMElement.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/DOMElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/Immutable.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/Immutable.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/ReactElement.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/ReactElement.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/ReactTestComponent.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/ReactTestComponent.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/lib/escapeHTML.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/lib/escapeHTML.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/lib/markup.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/plugins/lib/markup.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/types.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/build/types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/node_modules/ansi-styles/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/node_modules/ansi-styles/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/node_modules/ansi-styles/license
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/node_modules/ansi-styles/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/node_modules/ansi-styles/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/pretty-format/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/datepart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/day.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/hours.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/meridiem.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/milliseconds.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/minutes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/month.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/seconds.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/dateparts/year.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/autocomplete.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/autocompleteMultiselect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/confirm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/date.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/multiselect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/number.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/prompt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/select.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/elements/toggle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/prompts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/action.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/clear.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/entriesToDisplay.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/figures.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/lines.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/strip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/style.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/dist/util/wrap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/datepart.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/day.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/hours.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/meridiem.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/milliseconds.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/minutes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/month.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/seconds.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/dateparts/year.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/autocomplete.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/autocompleteMultiselect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/confirm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/date.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/multiselect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/number.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/prompt.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/select.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/text.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/elements/toggle.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/prompts.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/action.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/clear.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/entriesToDisplay.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/figures.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/lines.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/strip.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/style.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/lib/util/wrap.js
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/license
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/prompts/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/browserstack-logo.svg
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/data/rules.json
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/dist/psl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/dist/psl.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/psl/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/punycode/LICENSE-MIT.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/punycode/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/punycode/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/punycode/punycode.es6.js
create mode 100644 weekly_mission_2/examples_4/node_modules/punycode/punycode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/build-info.json
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/cjs/react-is.development.js
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/cjs/react-is.production.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/umd/react-is.development.js
create mode 100644 weekly_mission_2/examples_4/node_modules/react-is/umd/react-is.production.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/require-directory/.jshintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/require-directory/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/require-directory/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/require-directory/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/require-directory/README.markdown
create mode 100644 weekly_mission_2/examples_4/node_modules/require-directory/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/require-directory/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-cwd/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-cwd/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-cwd/license
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-cwd/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-cwd/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-from/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-from/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-from/license
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-from/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve-from/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve.exports/dist/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve.exports/dist/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve.exports/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve.exports/license
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve.exports/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve.exports/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/.editorconfig
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/.eslintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/.github/FUNDING.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/SECURITY.md
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/appveyor.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/async.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/bin/resolve
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/example/async.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/example/sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/async.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/caller.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/core.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/homedir.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/is-core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/node-modules-paths.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/normalize-options.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/lib/sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/readme.markdown
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/dotdot.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/dotdot/abc/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/dotdot/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/faulty_basedir.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/filter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/filter_sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/home_paths.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/home_paths_sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/mock.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/mock_sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/module_dir.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/node-modules-paths.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/node_path.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/node_path/x/aaa/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/node_path/x/ccc/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/node_path/y/bbb/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/node_path/y/ccc/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/nonstring.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/pathfilter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/pathfilter/deep_ref/main.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/precedence.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/precedence/aaa.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/precedence/aaa/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/precedence/aaa/main.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/precedence/bbb.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/precedence/bbb/main.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/baz/doom.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/baz/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/baz/quux.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/browser_field/a.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/browser_field/b.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/browser_field/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/cup.coffee
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/dot_main/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/dot_main/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/dot_slash_main/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/dot_slash_main/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/foo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/incorrect_main/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/incorrect_main/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/invalid_main/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/malformed_package_json/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/malformed_package_json/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/mug.coffee
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/mug.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/multirepo/lerna.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/multirepo/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/other_path/root.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/quux/foo/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/same_names/foo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/same_names/foo/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/symlinked/package/bar.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/symlinked/package/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver/without_basedir/main.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/resolver_sync.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/shadowed_core.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/shadowed_core/node_modules/util/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/subdirs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/resolve/test/symlinks.js
create mode 100644 weekly_mission_2/examples_4/node_modules/rimraf/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/rimraf/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/rimraf/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/rimraf/bin.js
create mode 100644 weekly_mission_2/examples_4/node_modules/rimraf/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/rimraf/rimraf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/safe-buffer/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/safe-buffer/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/safe-buffer/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/safe-buffer/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/safe-buffer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/safer-buffer/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/safer-buffer/Porting-Buffer.md
create mode 100644 weekly_mission_2/examples_4/node_modules/safer-buffer/Readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/safer-buffer/dangerous.js
create mode 100644 weekly_mission_2/examples_4/node_modules/safer-buffer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/safer-buffer/safer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/safer-buffer/tests.js
create mode 100644 weekly_mission_2/examples_4/node_modules/saxes/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/saxes/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/saxes/saxes.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/saxes/saxes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/saxes/saxes.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/semver/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/semver/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/semver/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/semver/bin/semver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/semver/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/semver/range.bnf
create mode 100644 weekly_mission_2/examples_4/node_modules/semver/semver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-command/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-command/license
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-command/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-command/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-regex/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-regex/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-regex/license
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-regex/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/shebang-regex/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/signal-exit/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/signal-exit/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/signal-exit/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/signal-exit/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/signal-exit/signals.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sisteransi/license
create mode 100644 weekly_mission_2/examples_4/node_modules/sisteransi/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/sisteransi/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/sisteransi/src/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sisteransi/src/sisteransi.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/slash/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/slash/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/slash/license
create mode 100644 weekly_mission_2/examples_4/node_modules/slash/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/slash/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map-support/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map-support/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map-support/browser-source-map-support.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map-support/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map-support/register-hook-require.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map-support/register.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map-support/source-map-support.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/dist/source-map.debug.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/dist/source-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/dist/source-map.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/dist/source-map.min.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/array-set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/base64-vlq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/base64.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/binary-search.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/mapping-list.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/quick-sort.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/source-map-consumer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/source-map-generator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/source-node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/lib/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/source-map.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/source-map/source-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/.npmignore
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/bower.json
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/demo/angular.html
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/dist/angular-sprintf.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/dist/angular-sprintf.min.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/dist/angular-sprintf.min.map
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/dist/sprintf.min.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/dist/sprintf.min.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/dist/sprintf.min.map
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/gruntfile.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/src/angular-sprintf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/src/sprintf.js
create mode 100644 weekly_mission_2/examples_4/node_modules/sprintf-js/test/test.js
create mode 100644 weekly_mission_2/examples_4/node_modules/stack-utils/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/stack-utils/license
create mode 100644 weekly_mission_2/examples_4/node_modules/stack-utils/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/stack-utils/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/string-length/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/string-length/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/string-length/license
create mode 100644 weekly_mission_2/examples_4/node_modules/string-length/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/string-length/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/string-width/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/string-width/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/string-width/license
create mode 100644 weekly_mission_2/examples_4/node_modules/string-width/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/string-width/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-ansi/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-ansi/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-ansi/license
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-ansi/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-ansi/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-bom/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-bom/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-bom/license
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-bom/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-bom/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-final-newline/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-final-newline/license
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-final-newline/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-final-newline/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-json-comments/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-json-comments/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-json-comments/license
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-json-comments/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/strip-json-comments/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-color/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-color/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-color/license
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-color/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-color/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-hyperlinks/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-hyperlinks/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-hyperlinks/license
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-hyperlinks/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-hyperlinks/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/.eslintrc
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/.nycrc
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/supports-preserve-symlinks-flag/test/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/symbol-tree/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/symbol-tree/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/symbol-tree/lib/SymbolTree.js
create mode 100644 weekly_mission_2/examples_4/node_modules/symbol-tree/lib/SymbolTreeNode.js
create mode 100644 weekly_mission_2/examples_4/node_modules/symbol-tree/lib/TreeIterator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/symbol-tree/lib/TreePosition.js
create mode 100644 weekly_mission_2/examples_4/node_modules/symbol-tree/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/terminal-link/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/terminal-link/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/terminal-link/license
create mode 100644 weekly_mission_2/examples_4/node_modules/terminal-link/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/terminal-link/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/is-outside-dir-posix.js
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/is-outside-dir-win32.js
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/is-outside-dir.js
create mode 100644 weekly_mission_2/examples_4/node_modules/test-exclude/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/throat/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/throat/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/throat/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/throat/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/throat/index.js.flow
create mode 100644 weekly_mission_2/examples_4/node_modules/throat/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/tmpl/lib/tmpl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tmpl/license
create mode 100644 weekly_mission_2/examples_4/node_modules/tmpl/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/tmpl/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/to-fast-properties/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/to-fast-properties/license
create mode 100644 weekly_mission_2/examples_4/node_modules/to-fast-properties/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/to-fast-properties/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/to-regex-range/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/to-regex-range/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/to-regex-range/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/to-regex-range/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/lib/cookie.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/lib/memstore.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/lib/pathMatch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/lib/permuteDomain.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/lib/pubsuffix-psl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/lib/store.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/lib/version.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tough-cookie/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/tr46/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/tr46/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/tr46/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tr46/lib/mappingTable.json
create mode 100644 weekly_mission_2/examples_4/node_modules/tr46/lib/regexes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tr46/lib/statusMapping.js
create mode 100644 weekly_mission_2/examples_4/node_modules/tr46/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/type-check/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/type-check/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/type-check/lib/check.js
create mode 100644 weekly_mission_2/examples_4/node_modules/type-check/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/type-check/lib/parse-type.js
create mode 100644 weekly_mission_2/examples_4/node_modules/type-check/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/type-detect/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/type-detect/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/type-detect/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/type-detect/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/type-detect/type-detect.js
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/base.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/license
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/async-return-type.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/asyncify.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/basic.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/conditional-except.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/conditional-keys.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/conditional-pick.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/entries.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/entry.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/except.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/fixed-length-array.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/iterable-element.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/literal-union.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/merge-exclusive.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/merge.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/mutable.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/opaque.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/package-json.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/partial-deep.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/promisable.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/promise-value.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/readonly-deep.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/require-at-least-one.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/require-exactly-one.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/set-optional.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/set-required.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/set-return-type.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/simplify.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/stringified.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/tsconfig-json.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/typed-array.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/union-to-intersection.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/utilities.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/source/value-of.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/camel-case.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/delimiter-case.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/get.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/kebab-case.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/pascal-case.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/snake-case.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/type-fest/ts41/utilities.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/typedarray-to-buffer/.airtap.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/typedarray-to-buffer/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/typedarray-to-buffer/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/typedarray-to-buffer/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/typedarray-to-buffer/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/typedarray-to-buffer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/typedarray-to-buffer/test/basic.js
create mode 100644 weekly_mission_2/examples_4/node_modules/universalify/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/universalify/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/universalify/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/universalify/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/lib/branch.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/lib/function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/lib/line.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/lib/range.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/lib/source.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/lib/v8-to-istanbul.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/dist/source-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/array-set.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/base64-vlq.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/base64.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/binary-search.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/mapping-list.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/mappings.wasm
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/read-wasm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/source-map-consumer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/source-map-generator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/source-node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/lib/wasm.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/source-map.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/node_modules/source-map/source-map.js
create mode 100644 weekly_mission_2/examples_4/node_modules/v8-to-istanbul/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/lib/calculate-clock-offset.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/lib/clock-is-accurate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/lib/global-monotonic-clock.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/lib/performance.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-hr-time/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-xmlserializer/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-xmlserializer/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-xmlserializer/lib/attributes.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-xmlserializer/lib/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-xmlserializer/lib/serialize.js
create mode 100644 weekly_mission_2/examples_4/node_modules/w3c-xmlserializer/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/walker/.travis.yml
create mode 100644 weekly_mission_2/examples_4/node_modules/walker/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/walker/lib/walker.js
create mode 100644 weekly_mission_2/examples_4/node_modules/walker/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/walker/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/webidl-conversions/LICENSE.md
create mode 100644 weekly_mission_2/examples_4/node_modules/webidl-conversions/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/webidl-conversions/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/webidl-conversions/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-encoding/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-encoding/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-encoding/lib/labels-to-names.json
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-encoding/lib/supported-names.json
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-encoding/lib/whatwg-encoding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-encoding/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-mimetype/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-mimetype/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-mimetype/lib/mime-type.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-mimetype/lib/parser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-mimetype/lib/serializer.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-mimetype/lib/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-mimetype/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/Function.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/URL-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/URL.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/URLSearchParams-impl.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/URLSearchParams.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/VoidFunction.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/encoding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/infra.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/percent-encoding.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/url-state-machine.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/urlencoded.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/dist/utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/whatwg-url/webidl2js-wrapper.js
create mode 100644 weekly_mission_2/examples_4/node_modules/which/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/which/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/which/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/which/bin/node-which
create mode 100644 weekly_mission_2/examples_4/node_modules/which/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/which/which.js
create mode 100644 weekly_mission_2/examples_4/node_modules/word-wrap/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/word-wrap/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/word-wrap/index.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/word-wrap/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/word-wrap/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/wrap-ansi/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/wrap-ansi/license
create mode 100644 weekly_mission_2/examples_4/node_modules/wrap-ansi/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/wrap-ansi/readme.md
create mode 100644 weekly_mission_2/examples_4/node_modules/wrappy/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/wrappy/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/wrappy/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/wrappy/wrappy.js
create mode 100644 weekly_mission_2/examples_4/node_modules/write-file-atomic/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/write-file-atomic/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/write-file-atomic/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/write-file-atomic/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/write-file-atomic/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/buffer-util.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/constants.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/event-target.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/extension.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/limiter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/permessage-deflate.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/receiver.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/sender.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/stream.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/validation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/websocket-server.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/lib/websocket.js
create mode 100644 weekly_mission_2/examples_4/node_modules/ws/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/xml-name-validator/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/xml-name-validator/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/xml-name-validator/lib/generated-parser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/xml-name-validator/lib/grammar.pegjs
create mode 100644 weekly_mission_2/examples_4/node_modules/xml-name-validator/lib/xml-name-validator.js
create mode 100644 weekly_mission_2/examples_4/node_modules/xml-name-validator/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.0/ed4.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.0/ed4.js
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.0/ed4.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.0/ed5.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.0/ed5.js
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.0/ed5.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.1/ed2.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.1/ed2.js
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xml/1.1/ed2.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xmlchars.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xmlchars.js
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xmlchars.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xmlns/1.0/ed3.d.ts
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xmlns/1.0/ed3.js
create mode 100644 weekly_mission_2/examples_4/node_modules/xmlchars/xmlns/1.0/ed3.js.map
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/build/index.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/build/lib/cjs.js
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/build/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/build/lib/platform-shims/node.js
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/y18n/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/LICENSE.txt
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/browser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/build/index.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/build/lib/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/build/lib/string-utils.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/build/lib/tokenize-arg-string.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/build/lib/yargs-parser-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/build/lib/yargs-parser.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs-parser/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/CHANGELOG.md
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/LICENSE
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/README.md
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/browser.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/index.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/argsert.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/command.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/completion-templates.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/completion.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/middleware.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/parse-command.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/typings/common-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/typings/yargs-parser-types.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/usage.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/utils/apply-extends.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/utils/is-promise.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/utils/levenshtein.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/utils/obj-filter.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/utils/process-argv.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/utils/set-blocking.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/utils/which-module.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/validation.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/yargs-factory.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/build/lib/yerror.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/helpers/helpers.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/helpers/index.js
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/helpers/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/index.cjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/index.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/lib/platform-shims/browser.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/lib/platform-shims/esm.mjs
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/be.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/de.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/en.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/es.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/fi.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/fr.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/hi.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/hu.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/id.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/it.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/ja.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/ko.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/nb.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/nl.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/nn.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/pirate.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/pl.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/pt.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/pt_BR.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/ru.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/th.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/tr.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/zh_CN.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/locales/zh_TW.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/package.json
create mode 100644 weekly_mission_2/examples_4/node_modules/yargs/yargs
create mode 100644 weekly_mission_2/examples_4/package-lock.json
create mode 100644 weekly_mission_2/examples_4/package.json
create mode 100644 weekly_mission_2/examples_4/pokemon.js
create mode 100644 weekly_mission_2/examples_4/pokemon.test.js
create mode 100644 weekly_mission_2/exercises/exercise_1/exercise_1.js
create mode 100644 weekly_mission_2/exercises/exercise_1/exercise_2.js
create mode 100644 weekly_mission_2/exercises/exercise_1/exercise_3.js
create mode 100644 weekly_mission_2/exercises/exercise_1/exercise_4.js
create mode 100644 weekly_mission_2/exercises/exercise_2/exercise_1.js
diff --git a/weekly_mission_1/example10/pokemon.js b/weekly_mission_1/example10/pokemon.js
index e69de29bb..c90e95f6b 100644
--- a/weekly_mission_1/example10/pokemon.js
+++ b/weekly_mission_1/example10/pokemon.js
@@ -0,0 +1,11 @@
+export default class MyPokemon {
+ constructor (name) {
+ this.name = name
+ }
+ sayHello() {
+ console.log(`Mi pokemon ${this.name} te saluda`)
+ }
+ sayMessage(msg) {
+ console.log(`Mi pokemon ${this.name} dice: ${msg}`)
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_1/example9/main.js b/weekly_mission_1/example9/main.js
index 326fc252a..5917d0cd6 100644
--- a/weekly_mission_1/example9/main.js
+++ b/weekly_mission_1/example9/main.js
@@ -1,4 +1,4 @@
-const Pokemon = require('./pokemon')
+const Pokemon = require('./pokemon').default.default
const pikachu = new Pokemon("pikachu")
const bulbasaur = new Pokemon("bulbasaur")
diff --git a/weekly_mission_1/example9/pokemon.js b/weekly_mission_1/example9/pokemon.js
index 720581802..0ce481634 100644
--- a/weekly_mission_1/example9/pokemon.js
+++ b/weekly_mission_1/example9/pokemon.js
@@ -1,9 +1,13 @@
-export default class Pok {
- constructor (Pokemon) {
- this.Pokemon = Pokemon
- }
- sayHello(Message){
- console.sayHello(`[${this.Pokemon}] ${Message}`)
- }
+class Pokemon {
+ constructor (name) {
+ this.name = name
+ }
+ sayHello() {
+ console.log(`Mi pokemon ${this.name} te saluda`)
+ }
+ sayMessage(msg) {
+ console.log(`Mi pokemon ${this.name} dice: ${msg}`)
+ }
+}
-}
\ No newline at end of file
+module.exports = Pokemon
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_1.js b/weekly_mission_2/examples_0/example_1.js
new file mode 100644
index 000000000..826e36937
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_1.js
@@ -0,0 +1,6 @@
+console.log("Objetos")
+
+// Ejemplo 1: Crear un objeto
+const myObjetc = {} // Esto es un objeto vacío
+console.log("Ejemplo 1: Crear un objeto vacío")
+console.log(myObjetc)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_2.js b/weekly_mission_2/examples_0/example_2.js
new file mode 100644
index 000000000..03d8a5e5a
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_2.js
@@ -0,0 +1,7 @@
+// Ejemplo 2: Crear un objeto con propiedades
+const myObjetc2 = {
+ name: "Carlo",
+ age: 27
+ }
+ console.log("Ejemplo 2: Crear un objeto con propiedades")
+ console.log(myObjetc2)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_3.js b/weekly_mission_2/examples_0/example_3.js
new file mode 100644
index 000000000..d582abece
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_3.js
@@ -0,0 +1,19 @@
+// Ejemplo 3: Objeto con diferentes propiedades
+const myObject3 = {
+ name: "Tulio",
+ age: 2,
+ nicknames: [
+ "Tulipan",
+ "Tulancingo",
+ "Tulish"
+ ],
+ address: {
+ zip_code: "10000",
+ street: "Dr. Vertiz 11 Benito Juarez",
+ city: "CDMX"
+ }
+ }
+ console.log("Ejemplo 3: Objeto con diferentes propiedades")
+ console.log(myObject3)
+ console.log(myObject3.name)
+ console.log(myObject3["address"])
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_4.js b/weekly_mission_2/examples_0/example_4.js
new file mode 100644
index 000000000..df3ccd9f0
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_4.js
@@ -0,0 +1,12 @@
+// Ejemplo 4: Objeto con métodos
+const pet = {
+ name: "Tulio",
+ // Esta es una función que se guarda como propiedad
+ sayHello: function(){
+ // this.name hace referencia a la propiedad del objeto
+ console.log(`${this.name} te saluda en español!`)
+ }
+ }
+
+ console.log("Ejemplo 4: Objeto con métodos")
+ pet.sayHello()
\ No newline at end of file
diff --git a/weekly_mission_2/examples_0/example_5.js b/weekly_mission_2/examples_0/example_5.js
new file mode 100644
index 000000000..b6d97d6f6
--- /dev/null
+++ b/weekly_mission_2/examples_0/example_5.js
@@ -0,0 +1,10 @@
+// Ejemplo 5: Objeto con método que recibe parámetros
+const myPet = {
+ name: "Woopa",
+ sayHelloToMyPet: function(yourPet){
+ console.log(`${this.name} say's hello to ${yourPet}`)
+ }
+ }
+
+ console.log("Ejemplo 5: Objeto con método que recibe parámetros")
+ myPet.sayHelloToMyPet("Tulio")
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_1.js b/weekly_mission_2/examples_1/example_1.js
new file mode 100644
index 000000000..95732f36a
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_1.js
@@ -0,0 +1,4 @@
+// Ejemplo 1: for Each para imprimir elementos de una lista
+const numbers = [1, 2, 3, 4, 5];
+console.log("Ejemplo 1: Imprimiendo los elementos de una lista")
+numbers.forEach(num => console.log(num))
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_10.js b/weekly_mission_2/examples_1/example_10.js
new file mode 100644
index 000000000..75e21ef7b
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_10.js
@@ -0,0 +1,4 @@
+// Ejemplo 10: uso de every nos ayuda a validar todos los elementos de una lista, si todos cumplen con la validación que indiques te regresa true, de lo contrario false
+const names10 = ['Explorer 1', 'Explorer 2', 'Explorer 3', 'Explorer 4']
+const areAllStr = names10.every((name) => typeof name === 'string') // every
+console.log("Ejemplo 10: Son todos los nombres string: " + areAllStr)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_11.js b/weekly_mission_2/examples_1/example_11.js
new file mode 100644
index 000000000..058448b27
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_11.js
@@ -0,0 +1,4 @@
+// Ejemplo 11: Uso de find para encontrar el primer elemento de una lista que cumpla con lo que indiques
+const ages = [24, 22, 19, 25, 32, 35, 18]
+const age = ages.find((age) => age < 20)
+console.log("Ejemplo 11: Primera edad menor a 20 es: "+ age)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_12.js b/weekly_mission_2/examples_1/example_12.js
new file mode 100644
index 000000000..2d402aec6
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_12.js
@@ -0,0 +1,11 @@
+// Ejemplo 12: Uso de find en una lista de objetos
+const scores12 = [
+ { name: 'A', score: 95 },
+ { name: 'M', score: 80 },
+ { name: 'E', score: 50 },
+ { name: 'M', score: 85 },
+ { name: 'J', score: 100 },
+ ]
+
+ const score_less_than_80 = scores12.find((user) => user.score > 80)
+ console.log("Ejemplo 12. Name score found:" + score_less_than_80.name)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_13.js b/weekly_mission_2/examples_1/example_13.js
new file mode 100644
index 000000000..3595c2608
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_13.js
@@ -0,0 +1,4 @@
+// Ejemplo 13: Uso de findIndex, este método regresa la posición del primer elemento que cumpla con la validación que indiques.
+const names13 = ['Explorer 1', 'Explorer 2', 'Explorer 3']
+const result = names13.findIndex((name) => name.length > 7)
+console.log("Ejemplo 13: Primer elemento cuya palabra sea mayor a 7 esta en la posición "+ result)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_14.js b/weekly_mission_2/examples_1/example_14.js
new file mode 100644
index 000000000..9c73612bd
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_14.js
@@ -0,0 +1,7 @@
+// Ejemplo 14: Uso de some, este método validará todos los elementos de la lista, y si alguno cumple con la validación indicada, regresará true, de lo contrario será false.
+
+// lista de elementos
+const bools = [true, true, false, true]
+// Uso de Some para ver si al menos uno de los elementos es false
+const areSomeTrue = bools.some((b) => b === false)
+console.log("Ejemplo 14: Alguno de los elementos en el array es false: " + areSomeTrue) //true
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_15.js b/weekly_mission_2/examples_1/example_15.js
new file mode 100644
index 000000000..73c5b0123
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_15.js
@@ -0,0 +1,4 @@
+//Ejemplo 15: Uso de sort para ordenar elementos
+const products = ['Milk', 'Coffee', 'Sugar', 'Honey', 'Apple', 'Carrot']
+console.log("Ejemplo 15: Elementos ordernados usando SORT")
+console.log(products.sort())
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_16.js b/weekly_mission_2/examples_1/example_16.js
new file mode 100644
index 000000000..706573789
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_16.js
@@ -0,0 +1,16 @@
+// Ejemplo 16: Ordenando una lista de objetos
+const users = [
+ { name: 'A', age: 150 },
+ { name: 'B', age: 50 },
+ { name: 'C', age: 100 },
+ { name: 'D', age: 22 },
+ ]
+
+ users.sort((a, b) => { // podemos invocar una función
+ if (a.age < b.age) return -1
+ if (a.age > b.age) return 1
+ return 0
+ })
+
+ console.log("Ejemplo 16: Ordenando una lista de objetos por la edad")
+ console.log(users) // sorted ascending
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_2.js b/weekly_mission_2/examples_1/example_2.js
new file mode 100644
index 000000000..5a0f639ad
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_2.js
@@ -0,0 +1,6 @@
+// Ejemplo 2: for Each para calcular la suma de todos los elementos de una lista
+let sum = 0;
+const numbers2 = [1, 2, 3, 4, 5];
+numbers2.forEach(num => sum += num)
+console.log("Ejemplo 2: Cálculo de la suma de los elementos de la lista")
+console.log(sum)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_3.js b/weekly_mission_2/examples_1/example_3.js
new file mode 100644
index 000000000..90107494f
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_3.js
@@ -0,0 +1,4 @@
+// Ejemplo 3: forEach para imprimir los países en letras mayúsculas
+const countries = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland']
+console.log("Ejemplo 5: Imprimiendo la lista de países en mayúsculas")
+countries.forEach((element) => console.log(element.toUpperCase()))
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_4.js b/weekly_mission_2/examples_1/example_4.js
new file mode 100644
index 000000000..007c98643
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_4.js
@@ -0,0 +1,10 @@
+// Ejemplo 4: Uso de map para recorrer los elementos de una lista y crear una nueva lista
+/*Arrow function and explicit return
+const modifiedArray = arr.map((element,index) => element);
+*/
+const numbers4 = [1, 2, 3, 4, 5]
+const numbersSquare = numbers4.map(function(num){ return num * num})
+// También puedes escribir la función como fat arrow
+//const numbersSquare = numbers4.map((num) => return num * num)
+console.log("Ejemplo 4: Imprimiendo la lista de elementos al cuadrado")
+console.log(numbersSquare)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_5.js b/weekly_mission_2/examples_1/example_5.js
new file mode 100644
index 000000000..7d2ba00e9
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_5.js
@@ -0,0 +1,6 @@
+// Ejemplo 5: Uso de Map para convertir todos los nombres de una lista a minúsculas
+const names = ['Asabeneh', 'Mathias', 'Elias', 'Brook']
+const namesToUpperCase = names.map((name) => name.toUpperCase())
+
+console.log("Ejemplo 5: Uso de Map para convertir todos los nombres de una lista a minúsculas")
+console.log(namesToUpperCase)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_6.js b/weekly_mission_2/examples_1/example_6.js
new file mode 100644
index 000000000..2afcc9016
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_6.js
@@ -0,0 +1,7 @@
+// Ejemplo 6: Uso de map para convertir todos los nombres de una lista a mayúsculas
+const countries6 = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland']
+const countriesFirstThreeLetters = countries6.map((country) =>
+ country.toUpperCase().slice(0, 3) // el método slice obtiene solo la longitud marcada del string
+)
+console.log("Ejemplo 6: Uso de map para convertir todos los nombres de una lista a mayúsculas")
+console.log(countriesFirstThreeLetters)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_7.js b/weekly_mission_2/examples_1/example_7.js
new file mode 100644
index 000000000..0bbd63cdd
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_7.js
@@ -0,0 +1,10 @@
+// Ejemplo 7: Uso de filter para filtrar una lista de elementos
+const countries7 = ['Finland', 'Denmark', 'Sweden', 'Norway', 'Iceland']
+const countriesContainingLand = countries7.filter((country) => // esta es una función
+ country.includes('land') // indicación para solo filtrar elementos que incluyan "land"
+)
+console.log("Ejemplo 7: Uso de filter para filtrar una lista de elementos")
+console.log(countriesContainingLand)
+const countriesEndsByia = countries7.filter((country) => country.endsWith('ia'))
+console.log("Ejemplo 7: Paises que terminan en i")
+console.log(countriesEndsByia)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_8.js b/weekly_mission_2/examples_1/example_8.js
new file mode 100644
index 000000000..c9ba401b9
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_8.js
@@ -0,0 +1,13 @@
+// Ejemplo 8: Filtrar una lista por condicional
+const scores = [
+ { name: 'A', score: 95 },
+ { name: 'L', score: 98 },
+ { name: 'M', score: 80 },
+ { name: 'E', score: 50 },
+ { name: 'M', score: 85 },
+ { name: 'J', score: 100 },
+ ]
+
+ const scoresGreaterEighty = scores.filter((score) => score.score > 80)
+ console.log("Ejemplo 8: Filtrando elementos por score")
+ console.log(scoresGreaterEighty)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_1/example_9.js b/weekly_mission_2/examples_1/example_9.js
new file mode 100644
index 000000000..1b2c708af
--- /dev/null
+++ b/weekly_mission_2/examples_1/example_9.js
@@ -0,0 +1,5 @@
+// Ejemplo 9: Uso del reduce
+const numbers9 = [1, 2, 3, 4, 5]
+const result_of_reduce = numbers9.reduce((acc, element) => acc + element, 0)
+console.log("Ejemplo 9: Uso de reduce para calcular la suma de los elementos de una lista")
+console.log(result_of_reduce)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_1.js b/weekly_mission_2/examples_2/example_1.js
new file mode 100644
index 000000000..1ac1403bf
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_1.js
@@ -0,0 +1,5 @@
+// Ejemplo 1: Crear una clase vacía
+class Person {
+}
+console.log("Ejemplo 1: Crear una clase vacía")
+console.log(Person) // [class Person]
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_10.js b/weekly_mission_2/examples_2/example_10.js
new file mode 100644
index 000000000..4a8f9bf3c
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_10.js
@@ -0,0 +1,32 @@
+// Ejemplo 10: Overrinding methods
+
+class Explorer{
+ constructor(name, username, mission){
+ this.name = name
+ this.username = username
+ this.mission = mission
+ }
+
+ getNameAndUsername(){
+ return `Explorer ${this. name}, username: ${this.username}`
+ }
+ }
+
+ class Viajero extends Explorer {
+ constructor(name, username, mission, cycle){
+ super(name, username, mission) // SUPER nos ayudará a llamar el constructor padre
+ this.cycle = cycle // Agregamos este atributo de la clase Viajero, es exclusiva de esta clase y no de la clase padre
+ }
+
+ getGeneralInfo(){
+ let nameAndUsername = this.getNameAndUsername() // llamamos el método de la clase padre
+ // nameAndUsername es una variable de esta función, no necesitas usar this para referenciarla.
+ return `${nameAndUsername}, Ciclo ${this.cycle}`
+ }
+ }
+
+ const viajero1 = new Viajero("Carlo", "LaunchX", "Node JS", "Abril 2022")
+ console.log("Ejemplo 10: Overrinding methods")
+ console.log(viajero1)
+ console.log(viajero1.getNameAndUsername()) // Método de la clase padre
+ console.log(viajero1.getGeneralInfo()) // Método de la clase hija
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_2.js b/weekly_mission_2/examples_2/example_2.js
new file mode 100644
index 000000000..e93560e5c
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_2.js
@@ -0,0 +1,6 @@
+// Ejemplo 2: Crear un objeto a partir de una clase
+class Pet {
+}
+const myPet1 = new Pet() // Puedo crear muchos objetos de la clase Pet
+console.log("Ejemplo 2: Crear un objeto a partir de una clase")
+console.log(myPet1) // un objeto de la clase Pet
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_3.js b/weekly_mission_2/examples_2/example_3.js
new file mode 100644
index 000000000..07a1975a1
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_3.js
@@ -0,0 +1,14 @@
+// Ejemplo 3: Instanciar un objeto con atributos
+class Student {
+ // El constructor nos permite instanciar un objeto y asignarle atributos, this nos ayuda a realizar esto.
+ constructor(name, age, subjects){
+ this.name = name
+ this.age = age
+ this.subjects = subjects
+ }
+}
+
+// Crear un objeto de la clase Student (esto se le llama instanciación)
+const carloStudent = new Student("Carlo", 12, ["NodeJs", "Python"])
+console.log("Ejemplo 3: Instanciar un objeto con atributos")
+console.log(carloStudent)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_4.js b/weekly_mission_2/examples_2/example_4.js
new file mode 100644
index 000000000..6fed3c3db
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_4.js
@@ -0,0 +1,16 @@
+// Ejemplo 4: Métodos en los objetos
+class Repository {
+ constructor(name, author, language, stars){
+ this.name = name
+ this.author = author
+ this.language = language
+ this.stars = stars
+ }
+
+ getInfo(){ // es una función que ejecutará cualquier objeto instanciado de esta clase
+ return `Repository ${this.name} has ${this.stars} stars`
+ }
+ }
+ console.log("Ejemplo 4: Métodos en los objetos")
+ const myRepo = new Repository("LaunchX", "carlogilmar", "js", 100)
+ console.log(myRepo.getInfo())
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_5.js b/weekly_mission_2/examples_2/example_5.js
new file mode 100644
index 000000000..3894f7190
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_5.js
@@ -0,0 +1,22 @@
+// Ejemplo 5: Atributos con valores por default
+class PullRequest {
+ constructor(repo, title, lines_changed){
+ this.repo = repo
+ this.title = title
+ this.lines_changed = lines_changed
+ this.status = "OPEN"
+ this.dateCreated = new Date() // esto guardará la fecha actual en que se instancia el objeto
+ }
+
+ getInfo(){
+ return `This PR is in the repo: ${this.repo} (status: ${this.status}) and was created on ${this.dateCreated}`
+ }
+ }
+
+ console.log("Ejemplo 5: Atributos con valores por default")
+ const myPR1 = new PullRequest("LaunchX", "Mi Primer PR", 100)
+ console.log(myPR1.getInfo())
+
+ // Puedes instanciar n cantidad de objetos de la misma clase
+ const myPR2 = new PullRequest("LaunchX", "Mi segundo PR", 99)
+ console.log(myPR2.getInfo())
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_6.js b/weekly_mission_2/examples_2/example_6.js
new file mode 100644
index 000000000..0e2434f7e
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_6.js
@@ -0,0 +1,20 @@
+// Ejemplo 6: Getters para acceder a los atributos del objeto
+
+class Ajolonauta {
+ constructor(name, age, stack){
+ this.name = name
+ this.age = age
+ this.stack = stack
+ this.exercises_completed = 0
+ this.exercises_todo = 99
+ }
+
+ // Podemos acceder a los atributos de esta clase
+ get getExercisesCompleted() {
+ return this.exercises_completed
+ }
+ }
+
+ console.log("Ejemplo 6: Getters para acceder a los atributos del objeto")
+ const woopa = new Ajolonauta("Woopa", 1, [])
+ console.log(woopa.getExercisesCompleted)
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_7.js b/weekly_mission_2/examples_2/example_7.js
new file mode 100644
index 000000000..9a8bfe7f8
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_7.js
@@ -0,0 +1,38 @@
+// Ejemplo 7: Setters para modificar los atributos del objeto
+class MissionCommander {
+ constructor(name, mission){
+ this.name = name
+ this.mission = mission
+ this.students = 0
+ this.lives = 0
+ }
+
+ get getStudents(){
+ return this.students
+ }
+
+ get getLives(){
+ return this.lives
+ }
+
+ set setStudents(students){
+ this.students = students
+ }
+
+ set setLives(lives){
+ this.lives = lives
+ }
+ }
+
+ console.log("Ejemplo 7: Setters para modificar los atributos del objeto")
+ const missionCommanderNode = new MissionCommander("Carlo", "NodeJS")
+
+ console.log(missionCommanderNode.getStudents) // 0 por default
+ console.log(missionCommanderNode.getLives)// 0 por default
+
+ // actualizamos los atributos por medio de los setters
+ missionCommanderNode.setStudents = 100
+ missionCommanderNode.setLives = 3
+
+ console.log(missionCommanderNode.getStudents) // 0 por default
+ console.log(missionCommanderNode.getLives)// 0 por default
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_8.js b/weekly_mission_2/examples_2/example_8.js
new file mode 100644
index 000000000..9591877ba
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_8.js
@@ -0,0 +1,17 @@
+// Ejemplo 8: Métodos static nos ayudan a escribir métodos en una clase que podemos usar sin necesidad de instanciar algún objeto
+class Toolbox {
+ static getMostUsefulTools(){
+ return ["Command line", "git", "Text Editor"]
+ }
+ }
+
+ console.log("Ejemplo 8: Métodos static")
+ // Puedo llamar el método static directamente con el nombre de la clase
+ console.log(Toolbox.getMostUsefulTools())
+ // Si intentamos instanciar un objeto, no podremos llamar este método static
+ //const toolbox = new Toolbox()
+ //console.log(toolbox.getMostUsefulTools()) // is not a function
+
+ /*
+ HERENCIA: Nos permite relacionar clases entre sí y rehusar sus componentes
+ */
\ No newline at end of file
diff --git a/weekly_mission_2/examples_2/example_9.js b/weekly_mission_2/examples_2/example_9.js
new file mode 100644
index 000000000..cbed6814c
--- /dev/null
+++ b/weekly_mission_2/examples_2/example_9.js
@@ -0,0 +1,25 @@
+// Ejemplo 9: Herencia entre dos clases
+class Developer {
+ constructor(name, mainLang, stack){
+ this.name = name
+ this.mainLang = mainLang
+ this.stack = stack
+ }
+
+ get getName() {
+ return this.name
+ }
+ }
+
+ console.log("Ejemplo 9: Herencia entre dos clases")
+ const carloDev = new Developer("Carlo", "js", ["elixir", "groovy", "lisp"])
+ console.log(carloDev)
+
+ // Se usa la palabra extends para indicar que heredarás las propiedades de la clase Padre (Developer) en la clase definida.
+ // Podemos definir una clase vacía y rehusar todos los componentes de la clase padre
+ class LaunchXStudent extends Developer{
+ }
+
+ const carloLaunchXDev = new LaunchXStudent("Carlo", "js", ["elixir", "groovy", "lisp"])
+ console.log(carloLaunchXDev)
+ console.log(carloLaunchXDev.getName) // getter de la clase padre rehusada en la clase hija
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/explorer.js b/weekly_mission_2/examples_3/explorer.js
new file mode 100644
index 000000000..dd0c3eff2
--- /dev/null
+++ b/weekly_mission_2/examples_3/explorer.js
@@ -0,0 +1,11 @@
+export default class Explorer{
+ constructor(name, username, mission){
+ this.name = name
+ this.username = username
+ this.mission = mission
+ }
+
+ getNameAndUsername(){
+ return `Explorer ${this. name}, username: ${this.username}`
+ }
+ }
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/main.js b/weekly_mission_2/examples_3/main.js
new file mode 100644
index 000000000..655eab3c6
--- /dev/null
+++ b/weekly_mission_2/examples_3/main.js
@@ -0,0 +1,10 @@
+import Viajero from './viajero.js'
+
+/*
+Este es un ejemplo de como modularizar clases y usarlas mediante módulos.
+*/
+
+const viajero1 = new Viajero("Carlo", "LaunchX", "Node JS", "Abril 2022")
+console.log(viajero1)
+console.log(viajero1.getNameAndUsername()) // Método de la clase padre
+console.log(viajero1.getGeneralInfo()) // Método de la clase hija
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/package.json b/weekly_mission_2/examples_3/package.json
new file mode 100644
index 000000000..af2dff37c
--- /dev/null
+++ b/weekly_mission_2/examples_3/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "First_project",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "type": "module",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+ }
\ No newline at end of file
diff --git a/weekly_mission_2/examples_3/viajero.js b/weekly_mission_2/examples_3/viajero.js
new file mode 100644
index 000000000..60bf8ab4b
--- /dev/null
+++ b/weekly_mission_2/examples_3/viajero.js
@@ -0,0 +1,13 @@
+import Explorer from './explorer.js'
+
+export default class Viajero extends Explorer {
+ constructor(name, username, mission, cycle){
+ super(name, username, mission)
+ this.cycle = cycle
+ }
+
+ getGeneralInfo(){
+ let nameAndUsername = this.getNameAndUsername()
+ return `${nameAndUsername}, Ciclo ${this.cycle}`
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/acorn b/weekly_mission_2/examples_4/node_modules/.bin/acorn
new file mode 100644
index 000000000..46a3e61a1
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/acorn
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
+else
+ exec node "$basedir/../acorn/bin/acorn" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/acorn.cmd b/weekly_mission_2/examples_4/node_modules/.bin/acorn.cmd
new file mode 100644
index 000000000..a9324df95
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/acorn.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/acorn.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/acorn.ps1
new file mode 100644
index 000000000..6f6dcddf3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/acorn.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../acorn/bin/acorn" $args
+ } else {
+ & "node$exe" "$basedir/../acorn/bin/acorn" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/browserslist b/weekly_mission_2/examples_4/node_modules/.bin/browserslist
new file mode 100644
index 000000000..68dd69d49
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/browserslist
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../browserslist/cli.js" "$@"
+else
+ exec node "$basedir/../browserslist/cli.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/browserslist.cmd b/weekly_mission_2/examples_4/node_modules/.bin/browserslist.cmd
new file mode 100644
index 000000000..f93c251ea
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/browserslist.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\browserslist\cli.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/browserslist.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/browserslist.ps1
new file mode 100644
index 000000000..01e10a08b
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/browserslist.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../browserslist/cli.js" $args
+ } else {
+ & "node$exe" "$basedir/../browserslist/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/escodegen b/weekly_mission_2/examples_4/node_modules/.bin/escodegen
new file mode 100644
index 000000000..63c8e9931
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/escodegen
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../escodegen/bin/escodegen.js" "$@"
+else
+ exec node "$basedir/../escodegen/bin/escodegen.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/escodegen.cmd b/weekly_mission_2/examples_4/node_modules/.bin/escodegen.cmd
new file mode 100644
index 000000000..9ac38a744
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/escodegen.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\escodegen\bin\escodegen.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/escodegen.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/escodegen.ps1
new file mode 100644
index 000000000..61d258e10
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/escodegen.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
+ } else {
+ & "node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esgenerate b/weekly_mission_2/examples_4/node_modules/.bin/esgenerate
new file mode 100644
index 000000000..710797a61
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esgenerate
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../escodegen/bin/esgenerate.js" "$@"
+else
+ exec node "$basedir/../escodegen/bin/esgenerate.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esgenerate.cmd b/weekly_mission_2/examples_4/node_modules/.bin/esgenerate.cmd
new file mode 100644
index 000000000..5c6426ddd
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esgenerate.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\escodegen\bin\esgenerate.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esgenerate.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/esgenerate.ps1
new file mode 100644
index 000000000..8835d6075
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esgenerate.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
+ } else {
+ & "node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esparse b/weekly_mission_2/examples_4/node_modules/.bin/esparse
new file mode 100644
index 000000000..1cc1c96ff
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esparse
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@"
+else
+ exec node "$basedir/../esprima/bin/esparse.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esparse.cmd b/weekly_mission_2/examples_4/node_modules/.bin/esparse.cmd
new file mode 100644
index 000000000..2ca6d502e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esparse.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esprima\bin\esparse.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esparse.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/esparse.ps1
new file mode 100644
index 000000000..f19ed7301
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esparse.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../esprima/bin/esparse.js" $args
+ } else {
+ & "node$exe" "$basedir/../esprima/bin/esparse.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esvalidate b/weekly_mission_2/examples_4/node_modules/.bin/esvalidate
new file mode 100644
index 000000000..91a4c9b5f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esvalidate
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@"
+else
+ exec node "$basedir/../esprima/bin/esvalidate.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esvalidate.cmd b/weekly_mission_2/examples_4/node_modules/.bin/esvalidate.cmd
new file mode 100644
index 000000000..4c41643ef
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esvalidate.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esprima\bin\esvalidate.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/esvalidate.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/esvalidate.ps1
new file mode 100644
index 000000000..23699d11e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/esvalidate.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
+ } else {
+ & "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture b/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture
new file mode 100644
index 000000000..79e318001
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../import-local/fixtures/cli.js" "$@"
+else
+ exec node "$basedir/../import-local/fixtures/cli.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.cmd b/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.cmd
new file mode 100644
index 000000000..5a3f68598
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\import-local\fixtures\cli.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.ps1
new file mode 100644
index 000000000..01ef78421
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/import-local-fixture.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../import-local/fixtures/cli.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../import-local/fixtures/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../import-local/fixtures/cli.js" $args
+ } else {
+ & "node$exe" "$basedir/../import-local/fixtures/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/jest b/weekly_mission_2/examples_4/node_modules/.bin/jest
new file mode 100644
index 000000000..e6376e84e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/jest
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../jest/bin/jest.js" "$@"
+else
+ exec node "$basedir/../jest/bin/jest.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/jest.cmd b/weekly_mission_2/examples_4/node_modules/.bin/jest.cmd
new file mode 100644
index 000000000..67a602ac5
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/jest.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jest\bin\jest.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/jest.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/jest.ps1
new file mode 100644
index 000000000..78a25637f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/jest.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../jest/bin/jest.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../jest/bin/jest.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../jest/bin/jest.js" $args
+ } else {
+ & "node$exe" "$basedir/../jest/bin/jest.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/js-yaml b/weekly_mission_2/examples_4/node_modules/.bin/js-yaml
new file mode 100644
index 000000000..ed78a8682
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/js-yaml
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+else
+ exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/js-yaml.cmd b/weekly_mission_2/examples_4/node_modules/.bin/js-yaml.cmd
new file mode 100644
index 000000000..453312b6d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/js-yaml.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/js-yaml.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/js-yaml.ps1
new file mode 100644
index 000000000..2acfc61c3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/js-yaml.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ } else {
+ & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/jsesc b/weekly_mission_2/examples_4/node_modules/.bin/jsesc
new file mode 100644
index 000000000..e7105da30
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/jsesc
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../jsesc/bin/jsesc" "$@"
+else
+ exec node "$basedir/../jsesc/bin/jsesc" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/jsesc.cmd b/weekly_mission_2/examples_4/node_modules/.bin/jsesc.cmd
new file mode 100644
index 000000000..eb41110f6
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/jsesc.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jsesc\bin\jsesc" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/jsesc.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/jsesc.ps1
new file mode 100644
index 000000000..6007e022f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/jsesc.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../jsesc/bin/jsesc" $args
+ } else {
+ & "node$exe" "$basedir/../jsesc/bin/jsesc" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/json5 b/weekly_mission_2/examples_4/node_modules/.bin/json5
new file mode 100644
index 000000000..977b75071
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/json5
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../json5/lib/cli.js" "$@"
+else
+ exec node "$basedir/../json5/lib/cli.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/json5.cmd b/weekly_mission_2/examples_4/node_modules/.bin/json5.cmd
new file mode 100644
index 000000000..95c137fe0
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/json5.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\json5\lib\cli.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/json5.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/json5.ps1
new file mode 100644
index 000000000..8700ddbef
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/json5.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../json5/lib/cli.js" $args
+ } else {
+ & "node$exe" "$basedir/../json5/lib/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/node-which b/weekly_mission_2/examples_4/node_modules/.bin/node-which
new file mode 100644
index 000000000..aece73531
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/node-which
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../which/bin/node-which" "$@"
+else
+ exec node "$basedir/../which/bin/node-which" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/node-which.cmd b/weekly_mission_2/examples_4/node_modules/.bin/node-which.cmd
new file mode 100644
index 000000000..8738aed88
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/node-which.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/node-which.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/node-which.ps1
new file mode 100644
index 000000000..cfb09e844
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/node-which.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../which/bin/node-which" $args
+ } else {
+ & "node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/parser b/weekly_mission_2/examples_4/node_modules/.bin/parser
new file mode 100644
index 000000000..cb5b10d8a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/parser
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+else
+ exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/parser.cmd b/weekly_mission_2/examples_4/node_modules/.bin/parser.cmd
new file mode 100644
index 000000000..1ad5c81c2
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/parser.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/parser.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/parser.ps1
new file mode 100644
index 000000000..8926517b4
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/parser.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
+ } else {
+ & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/resolve b/weekly_mission_2/examples_4/node_modules/.bin/resolve
new file mode 100644
index 000000000..757d454aa
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/resolve
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../resolve/bin/resolve" "$@"
+else
+ exec node "$basedir/../resolve/bin/resolve" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/resolve.cmd b/weekly_mission_2/examples_4/node_modules/.bin/resolve.cmd
new file mode 100644
index 000000000..1a017c403
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/resolve.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\resolve\bin\resolve" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/resolve.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/resolve.ps1
new file mode 100644
index 000000000..f22b2d317
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/resolve.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../resolve/bin/resolve" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../resolve/bin/resolve" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../resolve/bin/resolve" $args
+ } else {
+ & "node$exe" "$basedir/../resolve/bin/resolve" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/rimraf b/weekly_mission_2/examples_4/node_modules/.bin/rimraf
new file mode 100644
index 000000000..b81682550
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/rimraf
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../rimraf/bin.js" "$@"
+else
+ exec node "$basedir/../rimraf/bin.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/rimraf.cmd b/weekly_mission_2/examples_4/node_modules/.bin/rimraf.cmd
new file mode 100644
index 000000000..13f45eca3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/rimraf.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rimraf\bin.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/rimraf.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/rimraf.ps1
new file mode 100644
index 000000000..17167914f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/rimraf.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../rimraf/bin.js" $args
+ } else {
+ & "node$exe" "$basedir/../rimraf/bin.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/semver b/weekly_mission_2/examples_4/node_modules/.bin/semver
new file mode 100644
index 000000000..77443e787
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/semver
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
+else
+ exec node "$basedir/../semver/bin/semver.js" "$@"
+fi
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/semver.cmd b/weekly_mission_2/examples_4/node_modules/.bin/semver.cmd
new file mode 100644
index 000000000..9913fa9d0
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/semver.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %*
diff --git a/weekly_mission_2/examples_4/node_modules/.bin/semver.ps1 b/weekly_mission_2/examples_4/node_modules/.bin/semver.ps1
new file mode 100644
index 000000000..314717ad4
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.bin/semver.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../semver/bin/semver.js" $args
+ } else {
+ & "node$exe" "$basedir/../semver/bin/semver.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/weekly_mission_2/examples_4/node_modules/.package-lock.json b/weekly_mission_2/examples_4/node_modules/.package-lock.json
new file mode 100644
index 000000000..ec8df4dcd
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/.package-lock.json
@@ -0,0 +1,3955 @@
+{
+ "name": "First_project",
+ "version": "1.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "node_modules/@ampproject/remapping": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
+ "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
+ "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz",
+ "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.17.9",
+ "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/helper-module-transforms": "^7.17.7",
+ "@babel/helpers": "^7.17.9",
+ "@babel/parser": "^7.17.9",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz",
+ "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.17.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
+ "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.17.7",
+ "@babel/helper-validator-option": "^7.16.7",
+ "browserslist": "^4.17.5",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
+ "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
+ "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-simple-access": "^7.17.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.3",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
+ "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
+ "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
+ "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
+ "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.9",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz",
+ "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz",
+ "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==",
+ "dev": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz",
+ "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/parser": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz",
+ "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.17.9",
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/parser": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.17.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
+ "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
+ "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
+ "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/reporters": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^27.5.1",
+ "jest-config": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-resolve-dependencies": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "jest-watcher": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
+ "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "expect": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
+ "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "dev": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "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-haste-map": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^8.1.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
+ "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
+ "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+ "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-runtime": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
+ "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^27.5.1",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
+ "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
+ "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz",
+ "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
+ "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.1.19",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz",
+ "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
+ "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+ "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz",
+ "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.3.0"
+ }
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
+ "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+ "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+ "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "17.0.23",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz",
+ "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==",
+ "dev": true
+ },
+ "node_modules/@types/prettier": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz",
+ "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==",
+ "dev": true
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+ "dev": true
+ },
+ "node_modules/@types/yargs": {
+ "version": "16.0.4",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+ "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
+ "dev": true
+ },
+ "node_modules/abab": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
+ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "node_modules/babel-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
+ "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+ "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "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"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+ "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true
+ },
+ "node_modules/browserslist": {
+ "version": "4.20.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
+ "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001317",
+ "electron-to-chromium": "^1.4.84",
+ "escalade": "^3.1.1",
+ "node-releases": "^2.0.2",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001327",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz",
+ "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz",
+ "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==",
+ "dev": true
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
+ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+ "dev": true
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
+ "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+ "dev": true
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.3.1",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
+ "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==",
+ "dev": true
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
+ "dev": true
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "dev": true,
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.106",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz",
+ "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==",
+ "dev": true
+ },
+ "node_modules/emittery": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
+ "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+ "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "dev": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
+ "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
+ "dev": true,
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "node_modules/is-core-module": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
+ "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz",
+ "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
+ "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
+ "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "import-local": "^3.0.2",
+ "jest-cli": "^27.5.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+ "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "execa": "^5.0.0",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
+ "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
+ "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "prompts": "^2.0.1",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
+ "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.8.0",
+ "@jest/test-sequencer": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "babel-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-jasmine2": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
+ "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "dev": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
+ "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+ "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jsdom": "^16.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+ "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+ "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^27.5.1",
+ "jest-serializer": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-jasmine2": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+ "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+ "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
+ "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
+ "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^1.1.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+ "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-snapshot": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
+ "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-leak-detector": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "source-map-support": "^0.5.6",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
+ "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/globals": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "execa": "^5.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz",
+ "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^7.4.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
+ "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "leven": "^3.1.0",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
+ "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^27.5.1",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz",
+ "integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
+ "dev": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
+ "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
+ "dev": true
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
+ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
+ "dev": true
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
+ "dev": true
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
+ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
+ "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
+ "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/throat": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
+ "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==",
+ "dev": true
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
+ "dev": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+ "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "dev": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "7.5.7",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz",
+ "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ }
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/LICENSE b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/LICENSE
new file mode 100644
index 000000000..f367dfb2d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2019 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/README.md b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/README.md
new file mode 100644
index 000000000..1463c9f62
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/README.md
@@ -0,0 +1,218 @@
+# @ampproject/remapping
+
+> Remap sequential sourcemaps through transformations to point at the original source code
+
+Remapping allows you to take the sourcemaps generated through transforming your code and "remap"
+them to the original source locations. Think "my minified code, transformed with babel and bundled
+with webpack", all pointing to the correct location in your original source code.
+
+With remapping, none of your source code transformations need to be aware of the input's sourcemap,
+they only need to generate an output sourcemap. This greatly simplifies building custom
+transformations (think a find-and-replace).
+
+## Installation
+
+```sh
+npm install @ampproject/remapping
+```
+
+## Usage
+
+```typescript
+function remapping(
+ map: SourceMap | SourceMap[],
+ loader: (file: string, ctx: LoaderContext) => (SourceMap | null | undefined),
+ options?: { excludeContent: boolean, decodedMappings: boolean }
+): SourceMap;
+
+// LoaderContext gives the loader the importing sourcemap, tree depth, the ability to override the
+// "source" location (where child sources are resolved relative to, or the location of original
+// source), and the ability to override the "content" of an original source for inclusion in the
+// output sourcemap.
+type LoaderContext = {
+ readonly importer: string;
+ readonly depth: number;
+ source: string;
+ content: string | null | undefined;
+}
+```
+
+`remapping` takes the final output sourcemap, and a `loader` function. For every source file pointer
+in the sourcemap, the `loader` will be called with the resolved path. If the path itself represents
+a transformed file (it has a sourcmap associated with it), then the `loader` should return that
+sourcemap. If not, the path will be treated as an original, untransformed source code.
+
+```js
+// Babel transformed "helloworld.js" into "transformed.js"
+const transformedMap = JSON.stringify({
+ file: 'transformed.js',
+ // 1st column of 2nd line of output file translates into the 1st source
+ // file, line 3, column 2
+ mappings: ';CAEE',
+ sources: ['helloworld.js'],
+ version: 3,
+});
+
+// Uglify minified "transformed.js" into "transformed.min.js"
+const minifiedTransformedMap = JSON.stringify({
+ file: 'transformed.min.js',
+ // 0th column of 1st line of output file translates into the 1st source
+ // file, line 2, column 1.
+ mappings: 'AACC',
+ names: [],
+ sources: ['transformed.js'],
+ version: 3,
+});
+
+const remapped = remapping(
+ minifiedTransformedMap,
+ (file, ctx) => {
+
+ // The "transformed.js" file is an transformed file.
+ if (file === 'transformed.js') {
+ // The root importer is empty.
+ console.assert(ctx.importer === '');
+ // The depth in the sourcemap tree we're currently loading.
+ // The root `minifiedTransformedMap` is depth 0, and its source children are depth 1, etc.
+ console.assert(ctx.depth === 1);
+
+ return transformedMap;
+ }
+
+ // Loader will be called to load transformedMap's source file pointers as well.
+ console.assert(file === 'helloworld.js');
+ // `transformed.js`'s sourcemap points into `helloworld.js`.
+ console.assert(ctx.importer === 'transformed.js');
+ // This is a source child of `transformed`, which is a source child of `minifiedTransformedMap`.
+ console.assert(ctx.depth === 2);
+ return null;
+ }
+);
+
+console.log(remapped);
+// {
+// file: 'transpiled.min.js',
+// mappings: 'AAEE',
+// sources: ['helloworld.js'],
+// version: 3,
+// };
+```
+
+In this example, `loader` will be called twice:
+
+1. `"transformed.js"`, the first source file pointer in the `minifiedTransformedMap`. We return the
+ associated sourcemap for it (its a transformed file, after all) so that sourcemap locations can
+ be traced through it into the source files it represents.
+2. `"helloworld.js"`, our original, unmodified source code. This file does not have a sourcemap, so
+ we return `null`.
+
+The `remapped` sourcemap now points from `transformed.min.js` into locations in `helloworld.js`. If
+you were to read the `mappings`, it says "0th column of the first line output line points to the 1st
+column of the 2nd line of the file `helloworld.js`".
+
+### Multiple transformations of a file
+
+As a convenience, if you have multiple single-source transformations of a file, you may pass an
+array of sourcemap files in the order of most-recent transformation sourcemap first. Note that this
+changes the `importer` and `depth` of each call to our loader. So our above example could have been
+written as:
+
+```js
+const remapped = remapping(
+ [minifiedTransformedMap, transformedMap],
+ () => null
+);
+
+console.log(remapped);
+// {
+// file: 'transpiled.min.js',
+// mappings: 'AAEE',
+// sources: ['helloworld.js'],
+// version: 3,
+// };
+```
+
+### Advanced control of the loading graph
+
+#### `source`
+
+The `source` property can overridden to any value to change the location of the current load. Eg,
+for an original source file, it allows us to change the location to the original source regardless
+of what the sourcemap source entry says. And for transformed files, it allows us to change the
+relative resolving location for child sources of the loaded sourcemap.
+
+```js
+const remapped = remapping(
+ minifiedTransformedMap,
+ (file, ctx) => {
+
+ if (file === 'transformed.js') {
+ // We pretend the transformed.js file actually exists in the 'src/' directory. When the nested
+ // source files are loaded, they will now be relative to `src/`.
+ ctx.source = 'src/transformed.js';
+ return transformedMap;
+ }
+
+ console.assert(file === 'src/helloworld.js');
+ // We could futher change the source of this original file, eg, to be inside a nested directory
+ // itself. This will be reflected in the remapped sourcemap.
+ ctx.source = 'src/nested/transformed.js';
+ return null;
+ }
+);
+
+console.log(remapped);
+// {
+// …,
+// sources: ['src/nested/helloworld.js'],
+// };
+```
+
+
+#### `content`
+
+The `content` property can be overridden when we encounter an original source file. Eg, this allows
+you to manually provide the source content of the original file regardless of whether the
+`sourcesContent` field is present in the parent sourcemap. It can also be set to `null` to remove
+the source content.
+
+```js
+const remapped = remapping(
+ minifiedTransformedMap,
+ (file, ctx) => {
+
+ if (file === 'transformed.js') {
+ // transformedMap does not include a `sourcesContent` field, so usually the remapped sourcemap
+ // would not include any `sourcesContent` values.
+ return transformedMap;
+ }
+
+ console.assert(file === 'helloworld.js');
+ // We can read the file to provide the source content.
+ ctx.content = fs.readFileSync(file, 'utf8');
+ return null;
+ }
+);
+
+console.log(remapped);
+// {
+// …,
+// sourcesContent: [
+// 'console.log("Hello world!")',
+// ],
+// };
+```
+
+### Options
+
+#### excludeContent
+
+By default, `excludeContent` is `false`. Passing `{ excludeContent: true }` will exclude the
+`sourcesContent` field from the returned sourcemap. This is mainly useful when you want to reduce
+the size out the sourcemap.
+
+#### decodedMappings
+
+By default, `decodedMappings` is `false`. Passing `{ decodedMappings: true }` will leave the
+`mappings` field in a [decoded state](https://github.com/rich-harris/sourcemap-codec) instead of
+encoding into a VLQ string.
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs
new file mode 100644
index 000000000..4847e8a81
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs
@@ -0,0 +1,276 @@
+import { traceSegment, decodedMappings, presortedDecodedMap, TraceMap, encodedMappings } from '@jridgewell/trace-mapping';
+
+/**
+ * A "leaf" node in the sourcemap tree, representing an original, unmodified
+ * source file. Recursive segment tracing ends at the `OriginalSource`.
+ */
+class OriginalSource {
+ constructor(source, content) {
+ this.source = source;
+ this.content = content;
+ }
+ /**
+ * Tracing a `SourceMapSegment` ends when we get to an `OriginalSource`,
+ * meaning this line/column location originated from this source file.
+ */
+ originalPositionFor(line, column, name) {
+ return { column, line, name, source: this.source, content: this.content };
+ }
+}
+
+/**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+let put;
+/**
+ * FastStringArray acts like a `Set` (allowing only one occurrence of a string
+ * `key`), but provides the index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of
+ * the backing array, like how `sourcesContent[i]` is the source content
+ * associated with `source[i]`, and there are never duplicates.
+ */
+class FastStringArray {
+ constructor() {
+ this.indexes = Object.create(null);
+ this.array = [];
+ }
+}
+(() => {
+ put = (strarr, key) => {
+ const { array, indexes } = strarr;
+ // The key may or may not be present. If it is present, it's a number.
+ let index = indexes[key];
+ // If it's not yet present, we need to insert it and track the index in the
+ // indexes.
+ if (index === undefined) {
+ index = indexes[key] = array.length;
+ array.push(key);
+ }
+ return index;
+ };
+})();
+
+const INVALID_MAPPING = undefined;
+const SOURCELESS_MAPPING = null;
+/**
+ * traceMappings is only called on the root level SourceMapTree, and begins the process of
+ * resolving each mapping in terms of the original source files.
+ */
+let traceMappings;
+/**
+ * SourceMapTree represents a single sourcemap, with the ability to trace
+ * mappings into its child nodes (which may themselves be SourceMapTrees).
+ */
+class SourceMapTree {
+ constructor(map, sources) {
+ this.map = map;
+ this.sources = sources;
+ }
+ /**
+ * originalPositionFor is only called on children SourceMapTrees. It recurses down
+ * into its own child SourceMapTrees, until we find the original source map.
+ */
+ originalPositionFor(line, column, name) {
+ const segment = traceSegment(this.map, line, column);
+ // If we couldn't find a segment, then this doesn't exist in the sourcemap.
+ if (segment == null)
+ return INVALID_MAPPING;
+ // 1-length segments only move the current generated column, there's no source information
+ // to gather from it.
+ if (segment.length === 1)
+ return SOURCELESS_MAPPING;
+ const source = this.sources[segment[1]];
+ return source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? this.map.names[segment[4]] : name);
+ }
+}
+(() => {
+ traceMappings = (tree) => {
+ const mappings = [];
+ const names = new FastStringArray();
+ const sources = new FastStringArray();
+ const sourcesContent = [];
+ const { sources: rootSources, map } = tree;
+ const rootNames = map.names;
+ const rootMappings = decodedMappings(map);
+ let lastLineWithSegment = -1;
+ for (let i = 0; i < rootMappings.length; i++) {
+ const segments = rootMappings[i];
+ const tracedSegments = [];
+ let lastSourcesIndex = -1;
+ let lastSourceLine = -1;
+ let lastSourceColumn = -1;
+ for (let j = 0; j < segments.length; j++) {
+ const segment = segments[j];
+ let traced = SOURCELESS_MAPPING;
+ // 1-length segments only move the current generated column, there's no source information
+ // to gather from it.
+ if (segment.length !== 1) {
+ const source = rootSources[segment[1]];
+ traced = source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');
+ // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a
+ // respective segment into an original source.
+ if (traced === INVALID_MAPPING)
+ continue;
+ }
+ const genCol = segment[0];
+ if (traced === SOURCELESS_MAPPING) {
+ if (lastSourcesIndex === -1) {
+ // This is a consecutive source-less segment, which doesn't carry any new information.
+ continue;
+ }
+ lastSourcesIndex = lastSourceLine = lastSourceColumn = -1;
+ tracedSegments.push([genCol]);
+ continue;
+ }
+ // So we traced a segment down into its original source file. Now push a
+ // new segment pointing to this location.
+ const { column, line, name, content, source } = traced;
+ // Store the source location, and ensure we keep sourcesContent up to
+ // date with the sources array.
+ const sourcesIndex = put(sources, source);
+ sourcesContent[sourcesIndex] = content;
+ if (lastSourcesIndex === sourcesIndex &&
+ lastSourceLine === line &&
+ lastSourceColumn === column) {
+ // This is a duplicate mapping pointing at the exact same starting point in the source
+ // file. It doesn't carry any new information, and only bloats the sourcemap.
+ continue;
+ }
+ lastLineWithSegment = i;
+ lastSourcesIndex = sourcesIndex;
+ lastSourceLine = line;
+ lastSourceColumn = column;
+ // This looks like unnecessary duplication, but it noticeably increases performance. If we
+ // were to push the nameIndex onto length-4 array, v8 would internally allocate 22 slots!
+ // That's 68 wasted bytes! Array literals have the same capacity as their length, saving
+ // memory.
+ tracedSegments.push(name
+ ? [genCol, sourcesIndex, line, column, put(names, name)]
+ : [genCol, sourcesIndex, line, column]);
+ }
+ mappings.push(tracedSegments);
+ }
+ if (mappings.length > lastLineWithSegment + 1) {
+ mappings.length = lastLineWithSegment + 1;
+ }
+ return presortedDecodedMap(Object.assign({}, tree.map, {
+ mappings,
+ // TODO: Make all sources relative to the sourceRoot.
+ sourceRoot: undefined,
+ names: names.array,
+ sources: sources.array,
+ sourcesContent,
+ }));
+ };
+})();
+
+function asArray(value) {
+ if (Array.isArray(value))
+ return value;
+ return [value];
+}
+/**
+ * Recursively builds a tree structure out of sourcemap files, with each node
+ * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of
+ * `OriginalSource`s and `SourceMapTree`s.
+ *
+ * Every sourcemap is composed of a collection of source files and mappings
+ * into locations of those source files. When we generate a `SourceMapTree` for
+ * the sourcemap, we attempt to load each source file's own sourcemap. If it
+ * does not have an associated sourcemap, it is considered an original,
+ * unmodified source file.
+ */
+function buildSourceMapTree(input, loader) {
+ const maps = asArray(input).map((m) => new TraceMap(m, ''));
+ const map = maps.pop();
+ for (let i = 0; i < maps.length; i++) {
+ if (maps[i].sources.length > 1) {
+ throw new Error(`Transformation map ${i} must have exactly one source file.\n` +
+ 'Did you specify these with the most recent transformation maps first?');
+ }
+ }
+ let tree = build(map, loader, '', 0);
+ for (let i = maps.length - 1; i >= 0; i--) {
+ tree = new SourceMapTree(maps[i], [tree]);
+ }
+ return tree;
+}
+function build(map, loader, importer, importerDepth) {
+ const { resolvedSources, sourcesContent } = map;
+ const depth = importerDepth + 1;
+ const children = resolvedSources.map((sourceFile, i) => {
+ // The loading context gives the loader more information about why this file is being loaded
+ // (eg, from which importer). It also allows the loader to override the location of the loaded
+ // sourcemap/original source, or to override the content in the sourcesContent field if it's
+ // an unmodified source file.
+ const ctx = {
+ importer,
+ depth,
+ source: sourceFile || '',
+ content: undefined,
+ };
+ // Use the provided loader callback to retrieve the file's sourcemap.
+ // TODO: We should eventually support async loading of sourcemap files.
+ const sourceMap = loader(ctx.source, ctx);
+ const { source, content } = ctx;
+ // If there is no sourcemap, then it is an unmodified source file.
+ if (!sourceMap) {
+ // The contents of this unmodified source file can be overridden via the loader context,
+ // allowing it to be explicitly null or a string. If it remains undefined, we fall back to
+ // the importing sourcemap's `sourcesContent` field.
+ const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;
+ return new OriginalSource(source, sourceContent);
+ }
+ // Else, it's a real sourcemap, and we need to recurse into it to load its
+ // source files.
+ return build(new TraceMap(sourceMap, source), loader, source, depth);
+ });
+ return new SourceMapTree(map, children);
+}
+
+/**
+ * A SourceMap v3 compatible sourcemap, which only includes fields that were
+ * provided to it.
+ */
+class SourceMap {
+ constructor(map, options) {
+ this.version = 3; // SourceMap spec says this should be first.
+ this.file = map.file;
+ this.mappings = options.decodedMappings ? decodedMappings(map) : encodedMappings(map);
+ this.names = map.names;
+ this.sourceRoot = map.sourceRoot;
+ this.sources = map.sources;
+ if (!options.excludeContent && 'sourcesContent' in map) {
+ this.sourcesContent = map.sourcesContent;
+ }
+ }
+ toString() {
+ return JSON.stringify(this);
+ }
+}
+
+/**
+ * Traces through all the mappings in the root sourcemap, through the sources
+ * (and their sourcemaps), all the way back to the original source location.
+ *
+ * `loader` will be called every time we encounter a source file. If it returns
+ * a sourcemap, we will recurse into that sourcemap to continue the trace. If
+ * it returns a falsey value, that source file is treated as an original,
+ * unmodified source file.
+ *
+ * Pass `excludeContent` to exclude any self-containing source file content
+ * from the output sourcemap.
+ *
+ * Pass `decodedMappings` to receive a SourceMap with decoded (instead of
+ * VLQ encoded) mappings.
+ */
+function remapping(input, loader, options) {
+ const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };
+ const tree = buildSourceMapTree(input, loader);
+ return new SourceMap(traceMappings(tree), opts);
+}
+
+export { remapping as default };
+//# sourceMappingURL=remapping.mjs.map
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs.map b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs.map
new file mode 100644
index 000000000..0ca5153d3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"remapping.mjs","sources":["../../src/original-source.ts","../../src/fast-string-array.ts","../../src/source-map-tree.ts","../../src/build-source-map-tree.ts","../../src/source-map.ts","../../src/remapping.ts"],"sourcesContent":[null,null,null,null,null,null],"names":[],"mappings":";;AAEA;;;;MAIqB,cAAc;IAIjC,YAAY,MAAc,EAAE,OAAsB;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;;;;;IAMD,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAE,IAAY;QAC5D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;KAC3E;;;ACrBH;;;;AAIO,IAAI,GAAqD,CAAC;AAEjE;;;;;;;;MAQa,eAAe;IAA5B;QACE,YAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAA8B,CAAC;QAC3D,UAAK,GAAG,EAA2B,CAAC;KAkBrC;CAAA;AAhBC;IACE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG;QAChB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;;QAElC,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAuB,CAAC;;;QAI/C,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACnC,KAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;QAED,OAAO,KAAK,CAAC;KACd,CAAC;AACJ,CAAC,GAAA;;ACxBH,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAGhC;;;;AAIO,IAAI,aAAgD,CAAC;AAE5D;;;;MAIa,aAAa;IAIxB,YAAY,GAAa,EAAE,OAAkB;QAC3C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;;;;;IA6GD,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAE,IAAY;QAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;;QAGrD,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,eAAe,CAAC;;;QAG5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,kBAAkB,CAAC;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,mBAAmB,CAC/B,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CACzD,CAAC;KACH;CACF;AA3HC;IACE,aAAa,GAAG,CAAC,IAAI;QACnB,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,cAAc,GAAsB,EAAE,CAAC;QAC7C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;QAC5B,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,cAAc,GAAuB,EAAE,CAAC;YAE9C,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;YACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;YAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAE5B,IAAI,MAAM,GAAkB,kBAAkB,CAAC;;;gBAG/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACxB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,MAAM,GAAG,MAAM,CAAC,mBAAmB,CACjC,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAClD,CAAC;;;oBAIF,IAAI,MAAM,KAAK,eAAe;wBAAE,SAAS;iBAC1C;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,MAAM,KAAK,kBAAkB,EAAE;oBACjC,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE;;wBAE3B,SAAS;qBACV;oBACD,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;oBAC1D,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC9B,SAAS;iBACV;;;gBAID,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;;;gBAIvD,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1C,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;gBAEvC,IACE,gBAAgB,KAAK,YAAY;oBACjC,cAAc,KAAK,IAAI;oBACvB,gBAAgB,KAAK,MAAM,EAC3B;;;oBAGA,SAAS;iBACV;gBACD,mBAAmB,GAAG,CAAC,CAAC;gBACxB,gBAAgB,GAAG,YAAY,CAAC;gBAChC,cAAc,GAAG,IAAI,CAAC;gBACtB,gBAAgB,GAAG,MAAM,CAAC;;;;;gBAM1B,cAAc,CAAC,IAAI,CACjB,IAAI;sBACA,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;sBACtD,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CACzC,CAAC;aACH;YAED,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC/B;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,GAAG,CAAC,EAAE;YAC7C,QAAQ,CAAC,MAAM,GAAG,mBAAmB,GAAG,CAAC,CAAC;SAC3C;QAED,OAAO,mBAAmB,CACxB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YAC1B,QAAQ;;YAER,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,cAAc;SACf,CAAC,CACH,CAAC;KACH,CAAC;AACJ,CAAC,GAAA;;AC9HH,SAAS,OAAO,CAAI,KAAc;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;SAWwB,kBAAkB,CACxC,KAAwC,EACxC,MAAuB;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CACb,sBAAsB,CAAC,uCAAuC;gBAC5D,uEAAuE,CAC1E,CAAC;SACH;KACF;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3C;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,KAAK,CACZ,GAAa,EACb,MAAuB,EACvB,QAAgB,EAChB,aAAqB;IAErB,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC;IAEhD,MAAM,KAAK,GAAG,aAAa,GAAG,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAClC,CAAC,UAAyB,EAAE,CAAS;;;;;QAKnC,MAAM,GAAG,GAAkB;YACzB,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,UAAU,IAAI,EAAE;YACxB,OAAO,EAAE,SAAS;SACnB,CAAC;;;QAIF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;;QAGhC,IAAI,CAAC,SAAS,EAAE;;;;YAId,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC9E,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;SAClD;;;QAID,OAAO,KAAK,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;KACtE,CACF,CAAC;IAEF,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC1C;;ACtFA;;;;MAIqB,SAAS;IAS5B,YAAY,GAAa,EAAE,OAAgB;QACzC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAEvB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAEjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,gBAAgB,IAAI,GAAG,EAAE;YACtD,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;SAC1C;KACF;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC7B;;;ACnBH;;;;;;;;;;;;;;;SAewB,SAAS,CAC/B,KAAwC,EACxC,MAAuB,EACvB,OAA2B;IAE3B,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IAChG,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD;;;;"}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js
new file mode 100644
index 000000000..d4f3df4e3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js
@@ -0,0 +1,282 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@jridgewell/trace-mapping')) :
+ typeof define === 'function' && define.amd ? define(['@jridgewell/trace-mapping'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.remapping = factory(global.traceMapping));
+})(this, (function (traceMapping) { 'use strict';
+
+ /**
+ * A "leaf" node in the sourcemap tree, representing an original, unmodified
+ * source file. Recursive segment tracing ends at the `OriginalSource`.
+ */
+ class OriginalSource {
+ constructor(source, content) {
+ this.source = source;
+ this.content = content;
+ }
+ /**
+ * Tracing a `SourceMapSegment` ends when we get to an `OriginalSource`,
+ * meaning this line/column location originated from this source file.
+ */
+ originalPositionFor(line, column, name) {
+ return { column, line, name, source: this.source, content: this.content };
+ }
+ }
+
+ /**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+ let put;
+ /**
+ * FastStringArray acts like a `Set` (allowing only one occurrence of a string
+ * `key`), but provides the index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of
+ * the backing array, like how `sourcesContent[i]` is the source content
+ * associated with `source[i]`, and there are never duplicates.
+ */
+ class FastStringArray {
+ constructor() {
+ this.indexes = Object.create(null);
+ this.array = [];
+ }
+ }
+ (() => {
+ put = (strarr, key) => {
+ const { array, indexes } = strarr;
+ // The key may or may not be present. If it is present, it's a number.
+ let index = indexes[key];
+ // If it's not yet present, we need to insert it and track the index in the
+ // indexes.
+ if (index === undefined) {
+ index = indexes[key] = array.length;
+ array.push(key);
+ }
+ return index;
+ };
+ })();
+
+ const INVALID_MAPPING = undefined;
+ const SOURCELESS_MAPPING = null;
+ /**
+ * traceMappings is only called on the root level SourceMapTree, and begins the process of
+ * resolving each mapping in terms of the original source files.
+ */
+ let traceMappings;
+ /**
+ * SourceMapTree represents a single sourcemap, with the ability to trace
+ * mappings into its child nodes (which may themselves be SourceMapTrees).
+ */
+ class SourceMapTree {
+ constructor(map, sources) {
+ this.map = map;
+ this.sources = sources;
+ }
+ /**
+ * originalPositionFor is only called on children SourceMapTrees. It recurses down
+ * into its own child SourceMapTrees, until we find the original source map.
+ */
+ originalPositionFor(line, column, name) {
+ const segment = traceMapping.traceSegment(this.map, line, column);
+ // If we couldn't find a segment, then this doesn't exist in the sourcemap.
+ if (segment == null)
+ return INVALID_MAPPING;
+ // 1-length segments only move the current generated column, there's no source information
+ // to gather from it.
+ if (segment.length === 1)
+ return SOURCELESS_MAPPING;
+ const source = this.sources[segment[1]];
+ return source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? this.map.names[segment[4]] : name);
+ }
+ }
+ (() => {
+ traceMappings = (tree) => {
+ const mappings = [];
+ const names = new FastStringArray();
+ const sources = new FastStringArray();
+ const sourcesContent = [];
+ const { sources: rootSources, map } = tree;
+ const rootNames = map.names;
+ const rootMappings = traceMapping.decodedMappings(map);
+ let lastLineWithSegment = -1;
+ for (let i = 0; i < rootMappings.length; i++) {
+ const segments = rootMappings[i];
+ const tracedSegments = [];
+ let lastSourcesIndex = -1;
+ let lastSourceLine = -1;
+ let lastSourceColumn = -1;
+ for (let j = 0; j < segments.length; j++) {
+ const segment = segments[j];
+ let traced = SOURCELESS_MAPPING;
+ // 1-length segments only move the current generated column, there's no source information
+ // to gather from it.
+ if (segment.length !== 1) {
+ const source = rootSources[segment[1]];
+ traced = source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');
+ // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a
+ // respective segment into an original source.
+ if (traced === INVALID_MAPPING)
+ continue;
+ }
+ const genCol = segment[0];
+ if (traced === SOURCELESS_MAPPING) {
+ if (lastSourcesIndex === -1) {
+ // This is a consecutive source-less segment, which doesn't carry any new information.
+ continue;
+ }
+ lastSourcesIndex = lastSourceLine = lastSourceColumn = -1;
+ tracedSegments.push([genCol]);
+ continue;
+ }
+ // So we traced a segment down into its original source file. Now push a
+ // new segment pointing to this location.
+ const { column, line, name, content, source } = traced;
+ // Store the source location, and ensure we keep sourcesContent up to
+ // date with the sources array.
+ const sourcesIndex = put(sources, source);
+ sourcesContent[sourcesIndex] = content;
+ if (lastSourcesIndex === sourcesIndex &&
+ lastSourceLine === line &&
+ lastSourceColumn === column) {
+ // This is a duplicate mapping pointing at the exact same starting point in the source
+ // file. It doesn't carry any new information, and only bloats the sourcemap.
+ continue;
+ }
+ lastLineWithSegment = i;
+ lastSourcesIndex = sourcesIndex;
+ lastSourceLine = line;
+ lastSourceColumn = column;
+ // This looks like unnecessary duplication, but it noticeably increases performance. If we
+ // were to push the nameIndex onto length-4 array, v8 would internally allocate 22 slots!
+ // That's 68 wasted bytes! Array literals have the same capacity as their length, saving
+ // memory.
+ tracedSegments.push(name
+ ? [genCol, sourcesIndex, line, column, put(names, name)]
+ : [genCol, sourcesIndex, line, column]);
+ }
+ mappings.push(tracedSegments);
+ }
+ if (mappings.length > lastLineWithSegment + 1) {
+ mappings.length = lastLineWithSegment + 1;
+ }
+ return traceMapping.presortedDecodedMap(Object.assign({}, tree.map, {
+ mappings,
+ // TODO: Make all sources relative to the sourceRoot.
+ sourceRoot: undefined,
+ names: names.array,
+ sources: sources.array,
+ sourcesContent,
+ }));
+ };
+ })();
+
+ function asArray(value) {
+ if (Array.isArray(value))
+ return value;
+ return [value];
+ }
+ /**
+ * Recursively builds a tree structure out of sourcemap files, with each node
+ * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of
+ * `OriginalSource`s and `SourceMapTree`s.
+ *
+ * Every sourcemap is composed of a collection of source files and mappings
+ * into locations of those source files. When we generate a `SourceMapTree` for
+ * the sourcemap, we attempt to load each source file's own sourcemap. If it
+ * does not have an associated sourcemap, it is considered an original,
+ * unmodified source file.
+ */
+ function buildSourceMapTree(input, loader) {
+ const maps = asArray(input).map((m) => new traceMapping.TraceMap(m, ''));
+ const map = maps.pop();
+ for (let i = 0; i < maps.length; i++) {
+ if (maps[i].sources.length > 1) {
+ throw new Error(`Transformation map ${i} must have exactly one source file.\n` +
+ 'Did you specify these with the most recent transformation maps first?');
+ }
+ }
+ let tree = build(map, loader, '', 0);
+ for (let i = maps.length - 1; i >= 0; i--) {
+ tree = new SourceMapTree(maps[i], [tree]);
+ }
+ return tree;
+ }
+ function build(map, loader, importer, importerDepth) {
+ const { resolvedSources, sourcesContent } = map;
+ const depth = importerDepth + 1;
+ const children = resolvedSources.map((sourceFile, i) => {
+ // The loading context gives the loader more information about why this file is being loaded
+ // (eg, from which importer). It also allows the loader to override the location of the loaded
+ // sourcemap/original source, or to override the content in the sourcesContent field if it's
+ // an unmodified source file.
+ const ctx = {
+ importer,
+ depth,
+ source: sourceFile || '',
+ content: undefined,
+ };
+ // Use the provided loader callback to retrieve the file's sourcemap.
+ // TODO: We should eventually support async loading of sourcemap files.
+ const sourceMap = loader(ctx.source, ctx);
+ const { source, content } = ctx;
+ // If there is no sourcemap, then it is an unmodified source file.
+ if (!sourceMap) {
+ // The contents of this unmodified source file can be overridden via the loader context,
+ // allowing it to be explicitly null or a string. If it remains undefined, we fall back to
+ // the importing sourcemap's `sourcesContent` field.
+ const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;
+ return new OriginalSource(source, sourceContent);
+ }
+ // Else, it's a real sourcemap, and we need to recurse into it to load its
+ // source files.
+ return build(new traceMapping.TraceMap(sourceMap, source), loader, source, depth);
+ });
+ return new SourceMapTree(map, children);
+ }
+
+ /**
+ * A SourceMap v3 compatible sourcemap, which only includes fields that were
+ * provided to it.
+ */
+ class SourceMap {
+ constructor(map, options) {
+ this.version = 3; // SourceMap spec says this should be first.
+ this.file = map.file;
+ this.mappings = options.decodedMappings ? traceMapping.decodedMappings(map) : traceMapping.encodedMappings(map);
+ this.names = map.names;
+ this.sourceRoot = map.sourceRoot;
+ this.sources = map.sources;
+ if (!options.excludeContent && 'sourcesContent' in map) {
+ this.sourcesContent = map.sourcesContent;
+ }
+ }
+ toString() {
+ return JSON.stringify(this);
+ }
+ }
+
+ /**
+ * Traces through all the mappings in the root sourcemap, through the sources
+ * (and their sourcemaps), all the way back to the original source location.
+ *
+ * `loader` will be called every time we encounter a source file. If it returns
+ * a sourcemap, we will recurse into that sourcemap to continue the trace. If
+ * it returns a falsey value, that source file is treated as an original,
+ * unmodified source file.
+ *
+ * Pass `excludeContent` to exclude any self-containing source file content
+ * from the output sourcemap.
+ *
+ * Pass `decodedMappings` to receive a SourceMap with decoded (instead of
+ * VLQ encoded) mappings.
+ */
+ function remapping(input, loader, options) {
+ const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };
+ const tree = buildSourceMapTree(input, loader);
+ return new SourceMap(traceMappings(tree), opts);
+ }
+
+ return remapping;
+
+}));
+//# sourceMappingURL=remapping.umd.js.map
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js.map b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js.map
new file mode 100644
index 000000000..4002d2cea
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/remapping.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"remapping.umd.js","sources":["../../src/original-source.ts","../../src/fast-string-array.ts","../../src/source-map-tree.ts","../../src/build-source-map-tree.ts","../../src/source-map.ts","../../src/remapping.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["traceSegment","decodedMappings","presortedDecodedMap","TraceMap","encodedMappings"],"mappings":";;;;;;IAEA;;;;UAIqB,cAAc;QAIjC,YAAY,MAAc,EAAE,OAAsB;YAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;;;;QAMD,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAE,IAAY;YAC5D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;SAC3E;;;ICrBH;;;;IAIO,IAAI,GAAqD,CAAC;IAEjE;;;;;;;;UAQa,eAAe;QAA5B;YACE,YAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAA8B,CAAC;YAC3D,UAAK,GAAG,EAA2B,CAAC;SAkBrC;KAAA;IAhBC;QACE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG;YAChB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;;YAElC,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAuB,CAAC;;;YAI/C,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;gBACnC,KAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC/B;YAED,OAAO,KAAK,CAAC;SACd,CAAC;IACJ,CAAC,GAAA;;ICxBH,MAAM,eAAe,GAAG,SAAS,CAAC;IAClC,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAGhC;;;;IAIO,IAAI,aAAgD,CAAC;IAE5D;;;;UAIa,aAAa;QAIxB,YAAY,GAAa,EAAE,OAAkB;YAC3C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;;;;QA6GD,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAE,IAAY;YAC5D,MAAM,OAAO,GAAGA,yBAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;;YAGrD,IAAI,OAAO,IAAI,IAAI;gBAAE,OAAO,eAAe,CAAC;;;YAG5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,kBAAkB,CAAC;YAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC,mBAAmB,CAC/B,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CACzD,CAAC;SACH;KACF;IA3HC;QACE,aAAa,GAAG,CAAC,IAAI;YACnB,MAAM,QAAQ,GAAyB,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,cAAc,GAAsB,EAAE,CAAC;YAC7C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;YAC5B,MAAM,YAAY,GAAGC,4BAAe,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,cAAc,GAAuB,EAAE,CAAC;gBAE9C,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;gBAC1B,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;gBAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAE5B,IAAI,MAAM,GAAkB,kBAAkB,CAAC;;;oBAG/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;wBACxB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvC,MAAM,GAAG,MAAM,CAAC,mBAAmB,CACjC,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAClD,CAAC;;;wBAIF,IAAI,MAAM,KAAK,eAAe;4BAAE,SAAS;qBAC1C;oBAED,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,MAAM,KAAK,kBAAkB,EAAE;wBACjC,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE;;4BAE3B,SAAS;yBACV;wBACD,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;wBAC1D,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC9B,SAAS;qBACV;;;oBAID,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;;;oBAIvD,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1C,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;oBAEvC,IACE,gBAAgB,KAAK,YAAY;wBACjC,cAAc,KAAK,IAAI;wBACvB,gBAAgB,KAAK,MAAM,EAC3B;;;wBAGA,SAAS;qBACV;oBACD,mBAAmB,GAAG,CAAC,CAAC;oBACxB,gBAAgB,GAAG,YAAY,CAAC;oBAChC,cAAc,GAAG,IAAI,CAAC;oBACtB,gBAAgB,GAAG,MAAM,CAAC;;;;;oBAM1B,cAAc,CAAC,IAAI,CACjB,IAAI;0BACA,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;0BACtD,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CACzC,CAAC;iBACH;gBAED,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC/B;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,GAAG,CAAC,EAAE;gBAC7C,QAAQ,CAAC,MAAM,GAAG,mBAAmB,GAAG,CAAC,CAAC;aAC3C;YAED,OAAOC,gCAAmB,CACxB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;gBAC1B,QAAQ;;gBAER,UAAU,EAAE,SAAS;gBACrB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,OAAO,CAAC,KAAK;gBACtB,cAAc;aACf,CAAC,CACH,CAAC;SACH,CAAC;IACJ,CAAC,GAAA;;IC9HH,SAAS,OAAO,CAAI,KAAc;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;aAWwB,kBAAkB,CACxC,KAAwC,EACxC,MAAuB;QAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAIC,qBAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,MAAM,IAAI,KAAK,CACb,sBAAsB,CAAC,uCAAuC;oBAC5D,uEAAuE,CAC1E,CAAC;aACH;SACF;QAED,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,KAAK,CACZ,GAAa,EACb,MAAuB,EACvB,QAAgB,EAChB,aAAqB;QAErB,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC;QAEhD,MAAM,KAAK,GAAG,aAAa,GAAG,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAClC,CAAC,UAAyB,EAAE,CAAS;;;;;YAKnC,MAAM,GAAG,GAAkB;gBACzB,QAAQ;gBACR,KAAK;gBACL,MAAM,EAAE,UAAU,IAAI,EAAE;gBACxB,OAAO,EAAE,SAAS;aACnB,CAAC;;;YAIF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAE1C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;;YAGhC,IAAI,CAAC,SAAS,EAAE;;;;gBAId,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC9E,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;aAClD;;;YAID,OAAO,KAAK,CAAC,IAAIA,qBAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;SACtE,CACF,CAAC;QAEF,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1C;;ICtFA;;;;UAIqB,SAAS;QAS5B,YAAY,GAAa,EAAE,OAAgB;YACzC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAGF,4BAAe,CAAC,GAAG,CAAC,GAAGG,4BAAe,CAAC,GAAG,CAAC,CAAC;YACtF,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YAEvB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;YAEjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,gBAAgB,IAAI,GAAG,EAAE;gBACtD,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;aAC1C;SACF;QAED,QAAQ;YACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7B;;;ICnBH;;;;;;;;;;;;;;;aAewB,SAAS,CAC/B,KAAwC,EACxC,MAAuB,EACvB,OAA2B;QAE3B,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QAChG,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD;;;;;;;;"}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts
new file mode 100644
index 000000000..d276667bd
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts
@@ -0,0 +1,14 @@
+import { SourceMapTree } from './source-map-tree';
+import type { SourceMapInput, SourceMapLoader } from './types';
+/**
+ * Recursively builds a tree structure out of sourcemap files, with each node
+ * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of
+ * `OriginalSource`s and `SourceMapTree`s.
+ *
+ * Every sourcemap is composed of a collection of source files and mappings
+ * into locations of those source files. When we generate a `SourceMapTree` for
+ * the sourcemap, we attempt to load each source file's own sourcemap. If it
+ * does not have an associated sourcemap, it is considered an original,
+ * unmodified source file.
+ */
+export default function buildSourceMapTree(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader): SourceMapTree;
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/fast-string-array.d.ts b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/fast-string-array.d.ts
new file mode 100644
index 000000000..760973ae9
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/fast-string-array.d.ts
@@ -0,0 +1,19 @@
+/**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+export declare let put: (strarr: FastStringArray, key: string) => number;
+/**
+ * FastStringArray acts like a `Set` (allowing only one occurrence of a string
+ * `key`), but provides the index of the `key` in the backing array.
+ *
+ * This is designed to allow synchronizing a second array with the contents of
+ * the backing array, like how `sourcesContent[i]` is the source content
+ * associated with `source[i]`, and there are never duplicates.
+ */
+export declare class FastStringArray {
+ indexes: {
+ [key: string]: number;
+ };
+ array: readonly string[];
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/original-source.d.ts b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/original-source.d.ts
new file mode 100644
index 000000000..ce8f92416
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/original-source.d.ts
@@ -0,0 +1,15 @@
+import type { SourceMapSegmentObject } from './types';
+/**
+ * A "leaf" node in the sourcemap tree, representing an original, unmodified
+ * source file. Recursive segment tracing ends at the `OriginalSource`.
+ */
+export default class OriginalSource {
+ content: string | null;
+ source: string;
+ constructor(source: string, content: string | null);
+ /**
+ * Tracing a `SourceMapSegment` ends when we get to an `OriginalSource`,
+ * meaning this line/column location originated from this source file.
+ */
+ originalPositionFor(line: number, column: number, name: string): SourceMapSegmentObject;
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/remapping.d.ts b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/remapping.d.ts
new file mode 100644
index 000000000..53a56df79
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/remapping.d.ts
@@ -0,0 +1,19 @@
+import SourceMap from './source-map';
+import type { SourceMapInput, SourceMapLoader, Options } from './types';
+export type { SourceMapSegment, RawSourceMap, DecodedSourceMap, SourceMapInput, SourceMapLoader, LoaderContext, Options, } from './types';
+/**
+ * Traces through all the mappings in the root sourcemap, through the sources
+ * (and their sourcemaps), all the way back to the original source location.
+ *
+ * `loader` will be called every time we encounter a source file. If it returns
+ * a sourcemap, we will recurse into that sourcemap to continue the trace. If
+ * it returns a falsey value, that source file is treated as an original,
+ * unmodified source file.
+ *
+ * Pass `excludeContent` to exclude any self-containing source file content
+ * from the output sourcemap.
+ *
+ * Pass `decodedMappings` to receive a SourceMap with decoded (instead of
+ * VLQ encoded) mappings.
+ */
+export default function remapping(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader, options?: boolean | Options): SourceMap;
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts
new file mode 100644
index 000000000..41e0210cb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts
@@ -0,0 +1,27 @@
+import type { TraceMap } from '@jridgewell/trace-mapping';
+import type OriginalSource from './original-source';
+import type { SourceMapSegmentObject } from './types';
+declare type Sources = OriginalSource | SourceMapTree;
+declare const INVALID_MAPPING: undefined;
+declare const SOURCELESS_MAPPING: null;
+declare type MappingSource = SourceMapSegmentObject | typeof INVALID_MAPPING | typeof SOURCELESS_MAPPING;
+/**
+ * traceMappings is only called on the root level SourceMapTree, and begins the process of
+ * resolving each mapping in terms of the original source files.
+ */
+export declare let traceMappings: (tree: SourceMapTree) => TraceMap;
+/**
+ * SourceMapTree represents a single sourcemap, with the ability to trace
+ * mappings into its child nodes (which may themselves be SourceMapTrees).
+ */
+export declare class SourceMapTree {
+ map: TraceMap;
+ sources: Sources[];
+ constructor(map: TraceMap, sources: Sources[]);
+ /**
+ * originalPositionFor is only called on children SourceMapTrees. It recurses down
+ * into its own child SourceMapTrees, until we find the original source map.
+ */
+ originalPositionFor(line: number, column: number, name: string): MappingSource;
+}
+export {};
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map.d.ts b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map.d.ts
new file mode 100644
index 000000000..c692dc94a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/source-map.d.ts
@@ -0,0 +1,17 @@
+import type { TraceMap } from '@jridgewell/trace-mapping';
+import type { DecodedSourceMap, RawSourceMap, Options } from './types';
+/**
+ * A SourceMap v3 compatible sourcemap, which only includes fields that were
+ * provided to it.
+ */
+export default class SourceMap {
+ file?: string | null;
+ mappings: RawSourceMap['mappings'] | DecodedSourceMap['mappings'];
+ sourceRoot?: string;
+ names: string[];
+ sources: (string | null)[];
+ sourcesContent?: (string | null)[];
+ version: 3;
+ constructor(map: TraceMap, options: Options);
+ toString(): string;
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/types.d.ts b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/types.d.ts
new file mode 100644
index 000000000..fbda0b3b7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/dist/types/types.d.ts
@@ -0,0 +1,40 @@
+interface SourceMapV3 {
+ file?: string | null;
+ names: string[];
+ sourceRoot?: string;
+ sources: (string | null)[];
+ sourcesContent?: (string | null)[];
+ version: 3;
+}
+declare type Column = number;
+declare type SourcesIndex = number;
+declare type SourceLine = number;
+declare type SourceColumn = number;
+declare type NamesIndex = number;
+export declare type SourceMapSegment = [Column] | [Column, SourcesIndex, SourceLine, SourceColumn] | [Column, SourcesIndex, SourceLine, SourceColumn, NamesIndex];
+export interface RawSourceMap extends SourceMapV3 {
+ mappings: string;
+}
+export interface DecodedSourceMap extends SourceMapV3 {
+ mappings: SourceMapSegment[][];
+}
+export interface SourceMapSegmentObject {
+ column: number;
+ line: number;
+ name: string;
+ source: string;
+ content: string | null;
+}
+export declare type SourceMapInput = string | RawSourceMap | DecodedSourceMap;
+export declare type LoaderContext = {
+ readonly importer: string;
+ readonly depth: number;
+ source: string;
+ content: string | null | undefined;
+};
+export declare type SourceMapLoader = (file: string, ctx: LoaderContext) => SourceMapInput | null | undefined;
+export declare type Options = {
+ excludeContent?: boolean;
+ decodedMappings?: boolean;
+};
+export {};
diff --git a/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/package.json b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/package.json
new file mode 100644
index 000000000..0914a04eb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@ampproject/remapping/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "@ampproject/remapping",
+ "version": "2.1.2",
+ "description": "Remap sequential sourcemaps through transformations to point at the original source code",
+ "keywords": [
+ "source",
+ "map",
+ "remap"
+ ],
+ "main": "dist/remapping.umd.js",
+ "module": "dist/remapping.mjs",
+ "typings": "dist/types/remapping.d.ts",
+ "files": [
+ "dist"
+ ],
+ "author": "Justin Ridgewell ",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ampproject/remapping.git"
+ },
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "scripts": {
+ "build": "run-s -n build:*",
+ "build:rollup": "rollup -c rollup.config.js",
+ "build:ts": "tsc --project tsconfig.build.json",
+ "lint": "run-s -n lint:*",
+ "lint:prettier": "npm run test:lint:prettier -- --write",
+ "lint:ts": "npm run test:lint:ts -- --fix",
+ "prebuild": "rm -rf dist",
+ "prepublishOnly": "npm run preversion",
+ "preversion": "run-s test build",
+ "test": "run-s -n test:lint test:only",
+ "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
+ "test:lint": "run-s -n test:lint:*",
+ "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+ "test:lint:ts": "eslint '{src,test}/**/*.ts'",
+ "test:only": "jest --coverage",
+ "test:watch": "jest --coverage --watch"
+ },
+ "devDependencies": {
+ "@rollup/plugin-typescript": "8.3.0",
+ "@types/jest": "27.4.0",
+ "@typescript-eslint/eslint-plugin": "5.10.2",
+ "@typescript-eslint/parser": "5.10.2",
+ "eslint": "8.8.0",
+ "eslint-config-prettier": "8.3.0",
+ "jest": "27.4.7",
+ "jest-config": "27.4.7",
+ "npm-run-all": "4.1.5",
+ "prettier": "2.5.1",
+ "rollup": "2.67.0",
+ "ts-jest": "27.1.3",
+ "tslib": "2.3.1",
+ "typescript": "4.5.5"
+ },
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.0"
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/code-frame/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/code-frame/README.md b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/README.md
new file mode 100644
index 000000000..08cacb047
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/README.md
@@ -0,0 +1,19 @@
+# @babel/code-frame
+
+> Generate errors that contain a code frame that point to source locations.
+
+See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/code-frame
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/code-frame --dev
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/code-frame/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/lib/index.js
new file mode 100644
index 000000000..cba3f8379
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/lib/index.js
@@ -0,0 +1,163 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.codeFrameColumns = codeFrameColumns;
+exports.default = _default;
+
+var _highlight = require("@babel/highlight");
+
+let deprecationWarningShown = false;
+
+function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
+}
+
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+
+function getMarkerLines(loc, source, opts) {
+ const startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ const endLoc = Object.assign({}, startLoc, loc.end);
+ const {
+ linesAbove = 2,
+ linesBelow = 3
+ } = opts || {};
+ const startLine = startLoc.line;
+ const startColumn = startLoc.column;
+ const endLine = endLoc.line;
+ const endColumn = endLoc.column;
+ let start = Math.max(startLine - (linesAbove + 1), 0);
+ let end = Math.min(source.length, endLine + linesBelow);
+
+ if (startLine === -1) {
+ start = 0;
+ }
+
+ if (endLine === -1) {
+ end = source.length;
+ }
+
+ const lineDiff = endLine - startLine;
+ const markerLines = {};
+
+ if (lineDiff) {
+ for (let i = 0; i <= lineDiff; i++) {
+ const lineNumber = i + startLine;
+
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ const sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ const sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, sourceLength];
+ }
+ }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
+ }
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
+ }
+ }
+
+ return {
+ start,
+ end,
+ markerLines
+ };
+}
+
+function codeFrameColumns(rawLines, loc, opts = {}) {
+ const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
+ const chalk = (0, _highlight.getChalk)(opts);
+ const defs = getDefs(chalk);
+
+ const maybeHighlight = (chalkFn, string) => {
+ return highlighted ? chalkFn(string) : string;
+ };
+
+ const lines = rawLines.split(NEWLINE);
+ const {
+ start,
+ end,
+ markerLines
+ } = getMarkerLines(loc, lines, opts);
+ const hasColumns = loc.start && typeof loc.start.column === "number";
+ const numberMaxWidth = String(end).length;
+ const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
+ let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
+ const number = start + 1 + index;
+ const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ const gutter = ` ${paddedNumber} |`;
+ const hasMarker = markerLines[number];
+ const lastMarkerLine = !markerLines[number + 1];
+
+ if (hasMarker) {
+ let markerLine = "";
+
+ if (Array.isArray(hasMarker)) {
+ const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ const numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
+
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
+ } else {
+ return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
+ }
+ }).join("\n");
+
+ if (opts.message && !hasColumns) {
+ frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
+ }
+
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
+}
+
+function _default(rawLines, lineNumber, colNumber, opts = {}) {
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
+
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ const deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
+
+ colNumber = Math.max(colNumber, 0);
+ const location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/code-frame/package.json b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/package.json
new file mode 100644
index 000000000..ee1b3820a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/code-frame/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@babel/code-frame",
+ "version": "7.16.7",
+ "description": "Generate errors that contain a code frame that point to source locations.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-code-frame"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/highlight": "^7.16.7"
+ },
+ "devDependencies": {
+ "@types/chalk": "^2.0.0",
+ "chalk": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/README.md b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/README.md
new file mode 100644
index 000000000..9f3abdece
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/README.md
@@ -0,0 +1,19 @@
+# @babel/compat-data
+
+>
+
+See our website [@babel/compat-data](https://babeljs.io/docs/en/babel-compat-data) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/compat-data
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/compat-data
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs2-built-ins.js b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs2-built-ins.js
new file mode 100644
index 000000000..68ce97ff8
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs2-built-ins.js
@@ -0,0 +1 @@
+module.exports = require("./data/corejs2-built-ins.json");
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs3-shipped-proposals.js b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs3-shipped-proposals.js
new file mode 100644
index 000000000..6a85b4d97
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/corejs3-shipped-proposals.js
@@ -0,0 +1 @@
+module.exports = require("./data/corejs3-shipped-proposals.json");
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs2-built-ins.json b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs2-built-ins.json
new file mode 100644
index 000000000..ab9d30be3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs2-built-ins.json
@@ -0,0 +1,1789 @@
+{
+ "es6.array.copy-within": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "32",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.every": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.fill": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.filter": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.array.find": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.find-index": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es7.array.flat-map": {
+ "chrome": "69",
+ "opera": "56",
+ "edge": "79",
+ "firefox": "62",
+ "safari": "12",
+ "node": "11",
+ "ios": "12",
+ "samsung": "10",
+ "electron": "4.0"
+ },
+ "es6.array.for-each": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.from": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "36",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es7.array.includes": {
+ "chrome": "47",
+ "opera": "34",
+ "edge": "14",
+ "firefox": "43",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "es6.array.index-of": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.is-array": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.iterator": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "12",
+ "firefox": "60",
+ "safari": "9",
+ "node": "10",
+ "ios": "9",
+ "samsung": "9",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es6.array.last-index-of": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.map": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.array.of": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.reduce": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.reduce-right": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.slice": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.array.some": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.sort": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "12",
+ "firefox": "5",
+ "safari": "12",
+ "node": "10",
+ "ie": "9",
+ "ios": "12",
+ "samsung": "8",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es6.array.species": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.date.now": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.date.to-iso-string": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3.5",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.date.to-json": {
+ "chrome": "5",
+ "opera": "12.10",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "10",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "10",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.date.to-primitive": {
+ "chrome": "47",
+ "opera": "34",
+ "edge": "15",
+ "firefox": "44",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "es6.date.to-string": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "10",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.function.bind": {
+ "chrome": "7",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.function.has-instance": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "50",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.function.name": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "14",
+ "firefox": "2",
+ "safari": "4",
+ "node": "0.10",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.map": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.math.acosh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.asinh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.atanh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.cbrt": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.clz32": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.cosh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.expm1": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.fround": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "26",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.hypot": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "27",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.imul": {
+ "chrome": "30",
+ "opera": "17",
+ "edge": "12",
+ "firefox": "23",
+ "safari": "7",
+ "node": "0.12",
+ "android": "4.4",
+ "ios": "7",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.log1p": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.log10": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.log2": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.sign": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.sinh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.tanh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.trunc": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.constructor": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "36",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.number.epsilon": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.number.is-finite": {
+ "chrome": "19",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "16",
+ "safari": "9",
+ "node": "0.12",
+ "android": "4.1",
+ "ios": "9",
+ "samsung": "1.5",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.is-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "16",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.is-nan": {
+ "chrome": "19",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "15",
+ "safari": "9",
+ "node": "0.12",
+ "android": "4.1",
+ "ios": "9",
+ "samsung": "1.5",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.is-safe-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "32",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.max-safe-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.min-safe-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.parse-float": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.number.parse-int": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.object.assign": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "36",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.object.create": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.object.define-getter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "16",
+ "firefox": "48",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es7.object.define-setter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "16",
+ "firefox": "48",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.object.define-property": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.object.define-properties": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.object.entries": {
+ "chrome": "54",
+ "opera": "41",
+ "edge": "14",
+ "firefox": "47",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "rhino": "1.7.14",
+ "electron": "1.4"
+ },
+ "es6.object.freeze": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.get-own-property-descriptor": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es7.object.get-own-property-descriptors": {
+ "chrome": "54",
+ "opera": "41",
+ "edge": "15",
+ "firefox": "50",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "electron": "1.4"
+ },
+ "es6.object.get-own-property-names": {
+ "chrome": "40",
+ "opera": "27",
+ "edge": "12",
+ "firefox": "33",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.object.get-prototype-of": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es7.object.lookup-getter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "79",
+ "firefox": "36",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es7.object.lookup-setter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "79",
+ "firefox": "36",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.object.prevent-extensions": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.to-string": {
+ "chrome": "57",
+ "opera": "44",
+ "edge": "15",
+ "firefox": "51",
+ "safari": "10",
+ "node": "8",
+ "ios": "10",
+ "samsung": "7",
+ "electron": "1.7"
+ },
+ "es6.object.is": {
+ "chrome": "19",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "22",
+ "safari": "9",
+ "node": "0.12",
+ "android": "4.1",
+ "ios": "9",
+ "samsung": "1.5",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.object.is-frozen": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.is-sealed": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.is-extensible": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.keys": {
+ "chrome": "40",
+ "opera": "27",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.object.seal": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.set-prototype-of": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ie": "11",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.object.values": {
+ "chrome": "54",
+ "opera": "41",
+ "edge": "14",
+ "firefox": "47",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "rhino": "1.7.14",
+ "electron": "1.4"
+ },
+ "es6.promise": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "14",
+ "firefox": "45",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es7.promise.finally": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "18",
+ "firefox": "58",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.reflect.apply": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.construct": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.define-property": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.delete-property": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.get": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.get-own-property-descriptor": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.get-prototype-of": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.has": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.is-extensible": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.own-keys": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.prevent-extensions": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.set": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.set-prototype-of": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.regexp.constructor": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "40",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.regexp.flags": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "79",
+ "firefox": "37",
+ "safari": "9",
+ "node": "6",
+ "ios": "9",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.regexp.match": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "1.1"
+ },
+ "es6.regexp.replace": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.regexp.split": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.regexp.search": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "1.1"
+ },
+ "es6.regexp.to-string": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "39",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.set": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.symbol": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "79",
+ "firefox": "51",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es7.symbol.async-iterator": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "79",
+ "firefox": "57",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.string.anchor": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.big": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.blink": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.bold": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.code-point-at": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.ends-with": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.fixed": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.fontcolor": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.fontsize": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.from-code-point": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.includes": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "40",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.italics": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.iterator": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "36",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.string.link": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es7.string.pad-start": {
+ "chrome": "57",
+ "opera": "44",
+ "edge": "15",
+ "firefox": "48",
+ "safari": "10",
+ "node": "8",
+ "ios": "10",
+ "samsung": "7",
+ "rhino": "1.7.13",
+ "electron": "1.7"
+ },
+ "es7.string.pad-end": {
+ "chrome": "57",
+ "opera": "44",
+ "edge": "15",
+ "firefox": "48",
+ "safari": "10",
+ "node": "8",
+ "ios": "10",
+ "samsung": "7",
+ "rhino": "1.7.13",
+ "electron": "1.7"
+ },
+ "es6.string.raw": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.14",
+ "electron": "0.21"
+ },
+ "es6.string.repeat": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "24",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.small": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.starts-with": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.strike": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.sub": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.sup": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.14",
+ "electron": "0.20"
+ },
+ "es6.string.trim": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3.5",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.string.trim-left": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "61",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "9",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es7.string.trim-right": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "61",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "9",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es6.typed.array-buffer": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.data-view": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "15",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "10",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.typed.int8-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint8-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint8-clamped-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.int16-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint16-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.int32-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint32-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.float32-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.float64-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.weak-map": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "9",
+ "node": "6.5",
+ "ios": "9",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.weak-set": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "9",
+ "node": "6.5",
+ "ios": "9",
+ "samsung": "5",
+ "electron": "1.2"
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
new file mode 100644
index 000000000..7ce01ed93
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
@@ -0,0 +1,5 @@
+[
+ "esnext.global-this",
+ "esnext.promise.all-settled",
+ "esnext.string.match-all"
+]
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/native-modules.json b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/native-modules.json
new file mode 100644
index 000000000..bf634997e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/native-modules.json
@@ -0,0 +1,18 @@
+{
+ "es6.module": {
+ "chrome": "61",
+ "and_chr": "61",
+ "edge": "16",
+ "firefox": "60",
+ "and_ff": "60",
+ "node": "13.2.0",
+ "opera": "48",
+ "op_mob": "48",
+ "safari": "10.1",
+ "ios": "10.3",
+ "samsung": "8.2",
+ "android": "61",
+ "electron": "2.0",
+ "ios_saf": "10.3"
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/overlapping-plugins.json b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/overlapping-plugins.json
new file mode 100644
index 000000000..6ad09e432
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/overlapping-plugins.json
@@ -0,0 +1,22 @@
+{
+ "transform-async-to-generator": [
+ "bugfix/transform-async-arrows-in-class"
+ ],
+ "transform-parameters": [
+ "bugfix/transform-edge-default-parameters",
+ "bugfix/transform-safari-id-destructuring-collision-in-function-expression"
+ ],
+ "transform-function-name": [
+ "bugfix/transform-edge-function-name"
+ ],
+ "transform-block-scoping": [
+ "bugfix/transform-safari-block-shadowing",
+ "bugfix/transform-safari-for-shadowing"
+ ],
+ "transform-template-literals": [
+ "bugfix/transform-tagged-template-caching"
+ ],
+ "proposal-optional-chaining": [
+ "bugfix/transform-v8-spread-parameters-in-optional-chaining"
+ ]
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugin-bugfixes.json b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugin-bugfixes.json
new file mode 100644
index 000000000..a16d707df
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugin-bugfixes.json
@@ -0,0 +1,157 @@
+{
+ "bugfix/transform-async-arrows-in-class": {
+ "chrome": "55",
+ "opera": "42",
+ "edge": "15",
+ "firefox": "52",
+ "safari": "11",
+ "node": "7.6",
+ "ios": "11",
+ "samsung": "6",
+ "electron": "1.6"
+ },
+ "bugfix/transform-edge-default-parameters": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "18",
+ "firefox": "52",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "bugfix/transform-edge-function-name": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "79",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "bugfix/transform-safari-block-shadowing": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "44",
+ "safari": "11",
+ "node": "6",
+ "ie": "11",
+ "ios": "11",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "bugfix/transform-safari-for-shadowing": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "11",
+ "node": "6",
+ "ie": "11",
+ "ios": "11",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.37"
+ },
+ "bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "14",
+ "firefox": "2",
+ "node": "6",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "bugfix/transform-tagged-template-caching": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "13",
+ "node": "4",
+ "ios": "13",
+ "samsung": "3.4",
+ "rhino": "1.7.14",
+ "electron": "0.21"
+ },
+ "bugfix/transform-v8-spread-parameters-in-optional-chaining": {
+ "chrome": "91",
+ "opera": "77",
+ "edge": "91",
+ "firefox": "74",
+ "safari": "13.1",
+ "node": "16.9",
+ "ios": "13.4",
+ "electron": "13.0"
+ },
+ "proposal-optional-chaining": {
+ "chrome": "80",
+ "opera": "67",
+ "edge": "80",
+ "firefox": "74",
+ "safari": "13.1",
+ "node": "14",
+ "ios": "13.4",
+ "samsung": "13",
+ "electron": "8.0"
+ },
+ "transform-parameters": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "transform-async-to-generator": {
+ "chrome": "55",
+ "opera": "42",
+ "edge": "15",
+ "firefox": "52",
+ "safari": "10.1",
+ "node": "7.6",
+ "ios": "10.3",
+ "samsung": "6",
+ "electron": "1.6"
+ },
+ "transform-template-literals": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "13",
+ "firefox": "34",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "transform-function-name": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "14",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-block-scoping": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "14",
+ "firefox": "51",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugins.json b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugins.json
new file mode 100644
index 000000000..b64714c7f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/data/plugins.json
@@ -0,0 +1,477 @@
+{
+ "proposal-class-static-block": {
+ "chrome": "94",
+ "opera": "80",
+ "edge": "94",
+ "firefox": "93",
+ "node": "16.11"
+ },
+ "proposal-private-property-in-object": {
+ "chrome": "91",
+ "opera": "77",
+ "edge": "91",
+ "firefox": "90",
+ "safari": "15",
+ "node": "16.9",
+ "ios": "15",
+ "electron": "13.0"
+ },
+ "proposal-class-properties": {
+ "chrome": "74",
+ "opera": "62",
+ "edge": "79",
+ "firefox": "90",
+ "safari": "14.1",
+ "node": "12",
+ "ios": "15",
+ "samsung": "11",
+ "electron": "6.0"
+ },
+ "proposal-private-methods": {
+ "chrome": "84",
+ "opera": "70",
+ "edge": "84",
+ "firefox": "90",
+ "safari": "15",
+ "node": "14.6",
+ "ios": "15",
+ "samsung": "14",
+ "electron": "10.0"
+ },
+ "proposal-numeric-separator": {
+ "chrome": "75",
+ "opera": "62",
+ "edge": "79",
+ "firefox": "70",
+ "safari": "13",
+ "node": "12.5",
+ "ios": "13",
+ "samsung": "11",
+ "rhino": "1.7.14",
+ "electron": "6.0"
+ },
+ "proposal-logical-assignment-operators": {
+ "chrome": "85",
+ "opera": "71",
+ "edge": "85",
+ "firefox": "79",
+ "safari": "14",
+ "node": "15",
+ "ios": "14",
+ "samsung": "14",
+ "electron": "10.0"
+ },
+ "proposal-nullish-coalescing-operator": {
+ "chrome": "80",
+ "opera": "67",
+ "edge": "80",
+ "firefox": "72",
+ "safari": "13.1",
+ "node": "14",
+ "ios": "13.4",
+ "samsung": "13",
+ "electron": "8.0"
+ },
+ "proposal-optional-chaining": {
+ "chrome": "91",
+ "opera": "77",
+ "edge": "91",
+ "firefox": "74",
+ "safari": "13.1",
+ "node": "16.9",
+ "ios": "13.4",
+ "electron": "13.0"
+ },
+ "proposal-json-strings": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "62",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "9",
+ "rhino": "1.7.14",
+ "electron": "3.0"
+ },
+ "proposal-optional-catch-binding": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "58",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "9",
+ "electron": "3.0"
+ },
+ "transform-parameters": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "18",
+ "firefox": "53",
+ "node": "6",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "proposal-async-generator-functions": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "79",
+ "firefox": "57",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "proposal-object-rest-spread": {
+ "chrome": "60",
+ "opera": "47",
+ "edge": "79",
+ "firefox": "55",
+ "safari": "11.1",
+ "node": "8.3",
+ "ios": "11.3",
+ "samsung": "8",
+ "electron": "2.0"
+ },
+ "transform-dotall-regex": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "79",
+ "firefox": "78",
+ "safari": "11.1",
+ "node": "8.10",
+ "ios": "11.3",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "proposal-unicode-property-regex": {
+ "chrome": "64",
+ "opera": "51",
+ "edge": "79",
+ "firefox": "78",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "9",
+ "electron": "3.0"
+ },
+ "transform-named-capturing-groups-regex": {
+ "chrome": "64",
+ "opera": "51",
+ "edge": "79",
+ "firefox": "78",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "9",
+ "electron": "3.0"
+ },
+ "transform-async-to-generator": {
+ "chrome": "55",
+ "opera": "42",
+ "edge": "15",
+ "firefox": "52",
+ "safari": "11",
+ "node": "7.6",
+ "ios": "11",
+ "samsung": "6",
+ "electron": "1.6"
+ },
+ "transform-exponentiation-operator": {
+ "chrome": "52",
+ "opera": "39",
+ "edge": "14",
+ "firefox": "52",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "rhino": "1.7.14",
+ "electron": "1.3"
+ },
+ "transform-template-literals": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "13",
+ "firefox": "34",
+ "safari": "13",
+ "node": "4",
+ "ios": "13",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "transform-literals": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "53",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "electron": "0.30"
+ },
+ "transform-function-name": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "79",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-arrow-functions": {
+ "chrome": "47",
+ "opera": "34",
+ "edge": "13",
+ "firefox": "43",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.36"
+ },
+ "transform-block-scoped-functions": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "46",
+ "safari": "10",
+ "node": "4",
+ "ie": "11",
+ "ios": "10",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "transform-classes": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "13",
+ "firefox": "45",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-object-super": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "13",
+ "firefox": "45",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-shorthand-properties": {
+ "chrome": "43",
+ "opera": "30",
+ "edge": "12",
+ "firefox": "33",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.14",
+ "electron": "0.27"
+ },
+ "transform-duplicate-keys": {
+ "chrome": "42",
+ "opera": "29",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "electron": "0.25"
+ },
+ "transform-computed-properties": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "4",
+ "electron": "0.30"
+ },
+ "transform-for-of": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-sticky-regex": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "3",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "transform-unicode-escapes": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "53",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "electron": "0.30"
+ },
+ "transform-unicode-regex": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "13",
+ "firefox": "46",
+ "safari": "12",
+ "node": "6",
+ "ios": "12",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "transform-spread": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "13",
+ "firefox": "45",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-destructuring": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-block-scoping": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "14",
+ "firefox": "51",
+ "safari": "11",
+ "node": "6",
+ "ios": "11",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "transform-typeof-symbol": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "36",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "transform-new-target": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "14",
+ "firefox": "41",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-regenerator": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "13",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "transform-member-expression-literals": {
+ "chrome": "7",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "transform-property-literals": {
+ "chrome": "7",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "transform-reserved-words": {
+ "chrome": "13",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4.4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "proposal-export-namespace-from": {
+ "chrome": "72",
+ "and_chr": "72",
+ "edge": "79",
+ "firefox": "80",
+ "and_ff": "80",
+ "node": "13.2",
+ "opera": "60",
+ "op_mob": "51",
+ "samsung": "11.0",
+ "android": "72",
+ "electron": "5.0"
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/native-modules.js b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/native-modules.js
new file mode 100644
index 000000000..8e97da4bc
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/native-modules.js
@@ -0,0 +1 @@
+module.exports = require("./data/native-modules.json");
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/overlapping-plugins.js b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/overlapping-plugins.js
new file mode 100644
index 000000000..88242e467
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/overlapping-plugins.js
@@ -0,0 +1 @@
+module.exports = require("./data/overlapping-plugins.json");
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/package.json b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/package.json
new file mode 100644
index 000000000..816a33525
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "@babel/compat-data",
+ "version": "7.17.7",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "description": "",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-compat-data"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "exports": {
+ "./plugins": "./plugins.js",
+ "./native-modules": "./native-modules.js",
+ "./corejs2-built-ins": "./corejs2-built-ins.js",
+ "./corejs3-shipped-proposals": "./corejs3-shipped-proposals.js",
+ "./overlapping-plugins": "./overlapping-plugins.js",
+ "./plugin-bugfixes": "./plugin-bugfixes.js"
+ },
+ "scripts": {
+ "build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js"
+ },
+ "keywords": [
+ "babel",
+ "compat-table",
+ "compat-data"
+ ],
+ "devDependencies": {
+ "@mdn/browser-compat-data": "^4.0.10",
+ "core-js-compat": "^3.20.2",
+ "electron-to-chromium": "^1.3.893"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugin-bugfixes.js b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugin-bugfixes.js
new file mode 100644
index 000000000..f390181a6
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugin-bugfixes.js
@@ -0,0 +1 @@
+module.exports = require("./data/plugin-bugfixes.json");
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugins.js b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugins.js
new file mode 100644
index 000000000..42646edce
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/compat-data/plugins.js
@@ -0,0 +1 @@
+module.exports = require("./data/plugins.json");
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/core/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/README.md b/weekly_mission_2/examples_4/node_modules/@babel/core/README.md
new file mode 100644
index 000000000..9b3a95033
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/README.md
@@ -0,0 +1,19 @@
+# @babel/core
+
+> Babel compiler core.
+
+See our website [@babel/core](https://babeljs.io/docs/en/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/core
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/core --dev
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/cache-contexts.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/cache-contexts.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/caching.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/caching.js
new file mode 100644
index 000000000..16c6e9edb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/caching.js
@@ -0,0 +1,325 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.assertSimpleType = assertSimpleType;
+exports.makeStrongCache = makeStrongCache;
+exports.makeStrongCacheSync = makeStrongCacheSync;
+exports.makeWeakCache = makeWeakCache;
+exports.makeWeakCacheSync = makeWeakCacheSync;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _async = require("../gensync-utils/async");
+
+var _util = require("./util");
+
+const synchronize = gen => {
+ return _gensync()(gen).sync;
+};
+
+function* genTrue() {
+ return true;
+}
+
+function makeWeakCache(handler) {
+ return makeCachedFunction(WeakMap, handler);
+}
+
+function makeWeakCacheSync(handler) {
+ return synchronize(makeWeakCache(handler));
+}
+
+function makeStrongCache(handler) {
+ return makeCachedFunction(Map, handler);
+}
+
+function makeStrongCacheSync(handler) {
+ return synchronize(makeStrongCache(handler));
+}
+
+function makeCachedFunction(CallCache, handler) {
+ const callCacheSync = new CallCache();
+ const callCacheAsync = new CallCache();
+ const futureCache = new CallCache();
+ return function* cachedFunction(arg, data) {
+ const asyncContext = yield* (0, _async.isAsync)();
+ const callCache = asyncContext ? callCacheAsync : callCacheSync;
+ const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data);
+ if (cached.valid) return cached.value;
+ const cache = new CacheConfigurator(data);
+ const handlerResult = handler(arg, cache);
+ let finishLock;
+ let value;
+
+ if ((0, _util.isIterableIterator)(handlerResult)) {
+ const gen = handlerResult;
+ value = yield* (0, _async.onFirstPause)(gen, () => {
+ finishLock = setupAsyncLocks(cache, futureCache, arg);
+ });
+ } else {
+ value = handlerResult;
+ }
+
+ updateFunctionCache(callCache, cache, arg, value);
+
+ if (finishLock) {
+ futureCache.delete(arg);
+ finishLock.release(value);
+ }
+
+ return value;
+ };
+}
+
+function* getCachedValue(cache, arg, data) {
+ const cachedValue = cache.get(arg);
+
+ if (cachedValue) {
+ for (const {
+ value,
+ valid
+ } of cachedValue) {
+ if (yield* valid(data)) return {
+ valid: true,
+ value
+ };
+ }
+ }
+
+ return {
+ valid: false,
+ value: null
+ };
+}
+
+function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
+ const cached = yield* getCachedValue(callCache, arg, data);
+
+ if (cached.valid) {
+ return cached;
+ }
+
+ if (asyncContext) {
+ const cached = yield* getCachedValue(futureCache, arg, data);
+
+ if (cached.valid) {
+ const value = yield* (0, _async.waitFor)(cached.value.promise);
+ return {
+ valid: true,
+ value
+ };
+ }
+ }
+
+ return {
+ valid: false,
+ value: null
+ };
+}
+
+function setupAsyncLocks(config, futureCache, arg) {
+ const finishLock = new Lock();
+ updateFunctionCache(futureCache, config, arg, finishLock);
+ return finishLock;
+}
+
+function updateFunctionCache(cache, config, arg, value) {
+ if (!config.configured()) config.forever();
+ let cachedValue = cache.get(arg);
+ config.deactivate();
+
+ switch (config.mode()) {
+ case "forever":
+ cachedValue = [{
+ value,
+ valid: genTrue
+ }];
+ cache.set(arg, cachedValue);
+ break;
+
+ case "invalidate":
+ cachedValue = [{
+ value,
+ valid: config.validator()
+ }];
+ cache.set(arg, cachedValue);
+ break;
+
+ case "valid":
+ if (cachedValue) {
+ cachedValue.push({
+ value,
+ valid: config.validator()
+ });
+ } else {
+ cachedValue = [{
+ value,
+ valid: config.validator()
+ }];
+ cache.set(arg, cachedValue);
+ }
+
+ }
+}
+
+class CacheConfigurator {
+ constructor(data) {
+ this._active = true;
+ this._never = false;
+ this._forever = false;
+ this._invalidate = false;
+ this._configured = false;
+ this._pairs = [];
+ this._data = void 0;
+ this._data = data;
+ }
+
+ simple() {
+ return makeSimpleConfigurator(this);
+ }
+
+ mode() {
+ if (this._never) return "never";
+ if (this._forever) return "forever";
+ if (this._invalidate) return "invalidate";
+ return "valid";
+ }
+
+ forever() {
+ if (!this._active) {
+ throw new Error("Cannot change caching after evaluation has completed.");
+ }
+
+ if (this._never) {
+ throw new Error("Caching has already been configured with .never()");
+ }
+
+ this._forever = true;
+ this._configured = true;
+ }
+
+ never() {
+ if (!this._active) {
+ throw new Error("Cannot change caching after evaluation has completed.");
+ }
+
+ if (this._forever) {
+ throw new Error("Caching has already been configured with .forever()");
+ }
+
+ this._never = true;
+ this._configured = true;
+ }
+
+ using(handler) {
+ if (!this._active) {
+ throw new Error("Cannot change caching after evaluation has completed.");
+ }
+
+ if (this._never || this._forever) {
+ throw new Error("Caching has already been configured with .never or .forever()");
+ }
+
+ this._configured = true;
+ const key = handler(this._data);
+ const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`);
+
+ if ((0, _async.isThenable)(key)) {
+ return key.then(key => {
+ this._pairs.push([key, fn]);
+
+ return key;
+ });
+ }
+
+ this._pairs.push([key, fn]);
+
+ return key;
+ }
+
+ invalidate(handler) {
+ this._invalidate = true;
+ return this.using(handler);
+ }
+
+ validator() {
+ const pairs = this._pairs;
+ return function* (data) {
+ for (const [key, fn] of pairs) {
+ if (key !== (yield* fn(data))) return false;
+ }
+
+ return true;
+ };
+ }
+
+ deactivate() {
+ this._active = false;
+ }
+
+ configured() {
+ return this._configured;
+ }
+
+}
+
+function makeSimpleConfigurator(cache) {
+ function cacheFn(val) {
+ if (typeof val === "boolean") {
+ if (val) cache.forever();else cache.never();
+ return;
+ }
+
+ return cache.using(() => assertSimpleType(val()));
+ }
+
+ cacheFn.forever = () => cache.forever();
+
+ cacheFn.never = () => cache.never();
+
+ cacheFn.using = cb => cache.using(() => assertSimpleType(cb()));
+
+ cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb()));
+
+ return cacheFn;
+}
+
+function assertSimpleType(value) {
+ if ((0, _async.isThenable)(value)) {
+ throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`);
+ }
+
+ if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
+ throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
+ }
+
+ return value;
+}
+
+class Lock {
+ constructor() {
+ this.released = false;
+ this.promise = void 0;
+ this._resolve = void 0;
+ this.promise = new Promise(resolve => {
+ this._resolve = resolve;
+ });
+ }
+
+ release(value) {
+ this.released = true;
+
+ this._resolve(value);
+ }
+
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-chain.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-chain.js
new file mode 100644
index 000000000..aa5c5f22a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-chain.js
@@ -0,0 +1,564 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.buildPresetChain = buildPresetChain;
+exports.buildPresetChainWalker = void 0;
+exports.buildRootChain = buildRootChain;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _options = require("./validation/options");
+
+var _patternToRegex = require("./pattern-to-regex");
+
+var _printer = require("./printer");
+
+var _files = require("./files");
+
+var _caching = require("./caching");
+
+var _configDescriptors = require("./config-descriptors");
+
+const debug = _debug()("babel:config:config-chain");
+
+function* buildPresetChain(arg, context) {
+ const chain = yield* buildPresetChainWalker(arg, context);
+ if (!chain) return null;
+ return {
+ plugins: dedupDescriptors(chain.plugins),
+ presets: dedupDescriptors(chain.presets),
+ options: chain.options.map(o => normalizeOptions(o)),
+ files: new Set()
+ };
+}
+
+const buildPresetChainWalker = makeChainWalker({
+ root: preset => loadPresetDescriptors(preset),
+ env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
+ overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
+ overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName),
+ createLogger: () => () => {}
+});
+exports.buildPresetChainWalker = buildPresetChainWalker;
+const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors));
+const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName)));
+const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index)));
+const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName))));
+
+function* buildRootChain(opts, context) {
+ let configReport, babelRcReport;
+ const programmaticLogger = new _printer.ConfigPrinter();
+ const programmaticChain = yield* loadProgrammaticChain({
+ options: opts,
+ dirname: context.cwd
+ }, context, undefined, programmaticLogger);
+ if (!programmaticChain) return null;
+ const programmaticReport = yield* programmaticLogger.output();
+ let configFile;
+
+ if (typeof opts.configFile === "string") {
+ configFile = yield* (0, _files.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller);
+ } else if (opts.configFile !== false) {
+ configFile = yield* (0, _files.findRootConfig)(context.root, context.envName, context.caller);
+ }
+
+ let {
+ babelrc,
+ babelrcRoots
+ } = opts;
+ let babelrcRootsDirectory = context.cwd;
+ const configFileChain = emptyChain();
+ const configFileLogger = new _printer.ConfigPrinter();
+
+ if (configFile) {
+ const validatedFile = validateConfigFile(configFile);
+ const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger);
+ if (!result) return null;
+ configReport = yield* configFileLogger.output();
+
+ if (babelrc === undefined) {
+ babelrc = validatedFile.options.babelrc;
+ }
+
+ if (babelrcRoots === undefined) {
+ babelrcRootsDirectory = validatedFile.dirname;
+ babelrcRoots = validatedFile.options.babelrcRoots;
+ }
+
+ mergeChain(configFileChain, result);
+ }
+
+ let ignoreFile, babelrcFile;
+ let isIgnored = false;
+ const fileChain = emptyChain();
+
+ if ((babelrc === true || babelrc === undefined) && typeof context.filename === "string") {
+ const pkgData = yield* (0, _files.findPackageData)(context.filename);
+
+ if (pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
+ ({
+ ignore: ignoreFile,
+ config: babelrcFile
+ } = yield* (0, _files.findRelativeConfig)(pkgData, context.envName, context.caller));
+
+ if (ignoreFile) {
+ fileChain.files.add(ignoreFile.filepath);
+ }
+
+ if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
+ isIgnored = true;
+ }
+
+ if (babelrcFile && !isIgnored) {
+ const validatedFile = validateBabelrcFile(babelrcFile);
+ const babelrcLogger = new _printer.ConfigPrinter();
+ const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger);
+
+ if (!result) {
+ isIgnored = true;
+ } else {
+ babelRcReport = yield* babelrcLogger.output();
+ mergeChain(fileChain, result);
+ }
+ }
+
+ if (babelrcFile && isIgnored) {
+ fileChain.files.add(babelrcFile.filepath);
+ }
+ }
+ }
+
+ if (context.showConfig) {
+ console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n") + "\n-----End Babel configs-----");
+ }
+
+ const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
+ return {
+ plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
+ presets: isIgnored ? [] : dedupDescriptors(chain.presets),
+ options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)),
+ fileHandling: isIgnored ? "ignored" : "transpile",
+ ignore: ignoreFile || undefined,
+ babelrc: babelrcFile || undefined,
+ config: configFile || undefined,
+ files: chain.files
+ };
+}
+
+function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
+ if (typeof babelrcRoots === "boolean") return babelrcRoots;
+ const absoluteRoot = context.root;
+
+ if (babelrcRoots === undefined) {
+ return pkgData.directories.indexOf(absoluteRoot) !== -1;
+ }
+
+ let babelrcPatterns = babelrcRoots;
+
+ if (!Array.isArray(babelrcPatterns)) {
+ babelrcPatterns = [babelrcPatterns];
+ }
+
+ babelrcPatterns = babelrcPatterns.map(pat => {
+ return typeof pat === "string" ? _path().resolve(babelrcRootsDirectory, pat) : pat;
+ });
+
+ if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
+ return pkgData.directories.indexOf(absoluteRoot) !== -1;
+ }
+
+ return babelrcPatterns.some(pat => {
+ if (typeof pat === "string") {
+ pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory);
+ }
+
+ return pkgData.directories.some(directory => {
+ return matchPattern(pat, babelrcRootsDirectory, directory, context);
+ });
+ });
+}
+
+const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: (0, _options.validate)("configfile", file.options)
+}));
+const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: (0, _options.validate)("babelrcfile", file.options)
+}));
+const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: (0, _options.validate)("extendsfile", file.options)
+}));
+const loadProgrammaticChain = makeChainWalker({
+ root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors),
+ env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName),
+ overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index),
+ overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName),
+ createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger)
+});
+const loadFileChainWalker = makeChainWalker({
+ root: file => loadFileDescriptors(file),
+ env: (file, envName) => loadFileEnvDescriptors(file)(envName),
+ overrides: (file, index) => loadFileOverridesDescriptors(file)(index),
+ overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName),
+ createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger)
+});
+
+function* loadFileChain(input, context, files, baseLogger) {
+ const chain = yield* loadFileChainWalker(input, context, files, baseLogger);
+
+ if (chain) {
+ chain.files.add(input.filepath);
+ }
+
+ return chain;
+}
+
+const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors));
+const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName)));
+const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index)));
+const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName))));
+
+function buildFileLogger(filepath, context, baseLogger) {
+ if (!baseLogger) {
+ return () => {};
+ }
+
+ return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, {
+ filepath
+ });
+}
+
+function buildRootDescriptors({
+ dirname,
+ options
+}, alias, descriptors) {
+ return descriptors(dirname, options, alias);
+}
+
+function buildProgrammaticLogger(_, context, baseLogger) {
+ var _context$caller;
+
+ if (!baseLogger) {
+ return () => {};
+ }
+
+ return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, {
+ callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
+ });
+}
+
+function buildEnvDescriptors({
+ dirname,
+ options
+}, alias, descriptors, envName) {
+ const opts = options.env && options.env[envName];
+ return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null;
+}
+
+function buildOverrideDescriptors({
+ dirname,
+ options
+}, alias, descriptors, index) {
+ const opts = options.overrides && options.overrides[index];
+ if (!opts) throw new Error("Assertion failure - missing override");
+ return descriptors(dirname, opts, `${alias}.overrides[${index}]`);
+}
+
+function buildOverrideEnvDescriptors({
+ dirname,
+ options
+}, alias, descriptors, index, envName) {
+ const override = options.overrides && options.overrides[index];
+ if (!override) throw new Error("Assertion failure - missing override");
+ const opts = override.env && override.env[envName];
+ return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null;
+}
+
+function makeChainWalker({
+ root,
+ env,
+ overrides,
+ overridesEnv,
+ createLogger
+}) {
+ return function* (input, context, files = new Set(), baseLogger) {
+ const {
+ dirname
+ } = input;
+ const flattenedConfigs = [];
+ const rootOpts = root(input);
+
+ if (configIsApplicable(rootOpts, dirname, context)) {
+ flattenedConfigs.push({
+ config: rootOpts,
+ envName: undefined,
+ index: undefined
+ });
+ const envOpts = env(input, context.envName);
+
+ if (envOpts && configIsApplicable(envOpts, dirname, context)) {
+ flattenedConfigs.push({
+ config: envOpts,
+ envName: context.envName,
+ index: undefined
+ });
+ }
+
+ (rootOpts.options.overrides || []).forEach((_, index) => {
+ const overrideOps = overrides(input, index);
+
+ if (configIsApplicable(overrideOps, dirname, context)) {
+ flattenedConfigs.push({
+ config: overrideOps,
+ index,
+ envName: undefined
+ });
+ const overrideEnvOpts = overridesEnv(input, index, context.envName);
+
+ if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context)) {
+ flattenedConfigs.push({
+ config: overrideEnvOpts,
+ index,
+ envName: context.envName
+ });
+ }
+ }
+ });
+ }
+
+ if (flattenedConfigs.some(({
+ config: {
+ options: {
+ ignore,
+ only
+ }
+ }
+ }) => shouldIgnore(context, ignore, only, dirname))) {
+ return null;
+ }
+
+ const chain = emptyChain();
+ const logger = createLogger(input, context, baseLogger);
+
+ for (const {
+ config,
+ index,
+ envName
+ } of flattenedConfigs) {
+ if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) {
+ return null;
+ }
+
+ logger(config, index, envName);
+ yield* mergeChainOpts(chain, config);
+ }
+
+ return chain;
+ };
+}
+
+function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
+ if (opts.extends === undefined) return true;
+ const file = yield* (0, _files.loadConfig)(opts.extends, dirname, context.envName, context.caller);
+
+ if (files.has(file)) {
+ throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n"));
+ }
+
+ files.add(file);
+ const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger);
+ files.delete(file);
+ if (!fileChain) return false;
+ mergeChain(chain, fileChain);
+ return true;
+}
+
+function mergeChain(target, source) {
+ target.options.push(...source.options);
+ target.plugins.push(...source.plugins);
+ target.presets.push(...source.presets);
+
+ for (const file of source.files) {
+ target.files.add(file);
+ }
+
+ return target;
+}
+
+function* mergeChainOpts(target, {
+ options,
+ plugins,
+ presets
+}) {
+ target.options.push(options);
+ target.plugins.push(...(yield* plugins()));
+ target.presets.push(...(yield* presets()));
+ return target;
+}
+
+function emptyChain() {
+ return {
+ options: [],
+ presets: [],
+ plugins: [],
+ files: new Set()
+ };
+}
+
+function normalizeOptions(opts) {
+ const options = Object.assign({}, opts);
+ delete options.extends;
+ delete options.env;
+ delete options.overrides;
+ delete options.plugins;
+ delete options.presets;
+ delete options.passPerPreset;
+ delete options.ignore;
+ delete options.only;
+ delete options.test;
+ delete options.include;
+ delete options.exclude;
+
+ if (Object.prototype.hasOwnProperty.call(options, "sourceMap")) {
+ options.sourceMaps = options.sourceMap;
+ delete options.sourceMap;
+ }
+
+ return options;
+}
+
+function dedupDescriptors(items) {
+ const map = new Map();
+ const descriptors = [];
+
+ for (const item of items) {
+ if (typeof item.value === "function") {
+ const fnKey = item.value;
+ let nameMap = map.get(fnKey);
+
+ if (!nameMap) {
+ nameMap = new Map();
+ map.set(fnKey, nameMap);
+ }
+
+ let desc = nameMap.get(item.name);
+
+ if (!desc) {
+ desc = {
+ value: item
+ };
+ descriptors.push(desc);
+ if (!item.ownPass) nameMap.set(item.name, desc);
+ } else {
+ desc.value = item;
+ }
+ } else {
+ descriptors.push({
+ value: item
+ });
+ }
+ }
+
+ return descriptors.reduce((acc, desc) => {
+ acc.push(desc.value);
+ return acc;
+ }, []);
+}
+
+function configIsApplicable({
+ options
+}, dirname, context) {
+ return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname));
+}
+
+function configFieldIsApplicable(context, test, dirname) {
+ const patterns = Array.isArray(test) ? test : [test];
+ return matchesPatterns(context, patterns, dirname);
+}
+
+function ignoreListReplacer(_key, value) {
+ if (value instanceof RegExp) {
+ return String(value);
+ }
+
+ return value;
+}
+
+function shouldIgnore(context, ignore, only, dirname) {
+ if (ignore && matchesPatterns(context, ignore, dirname)) {
+ var _context$filename;
+
+ const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore, ignoreListReplacer)}\` from "${dirname}"`;
+ debug(message);
+
+ if (context.showConfig) {
+ console.log(message);
+ }
+
+ return true;
+ }
+
+ if (only && !matchesPatterns(context, only, dirname)) {
+ var _context$filename2;
+
+ const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only, ignoreListReplacer)}\` from "${dirname}"`;
+ debug(message);
+
+ if (context.showConfig) {
+ console.log(message);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function matchesPatterns(context, patterns, dirname) {
+ return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context));
+}
+
+function matchPattern(pattern, dirname, pathToTest, context) {
+ if (typeof pattern === "function") {
+ return !!pattern(pathToTest, {
+ dirname,
+ envName: context.envName,
+ caller: context.caller
+ });
+ }
+
+ if (typeof pathToTest !== "string") {
+ throw new Error(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`);
+ }
+
+ if (typeof pattern === "string") {
+ pattern = (0, _patternToRegex.default)(pattern, dirname);
+ }
+
+ return pattern.test(pathToTest);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-descriptors.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-descriptors.js
new file mode 100644
index 000000000..2f0a7a58e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/config-descriptors.js
@@ -0,0 +1,244 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.createCachedDescriptors = createCachedDescriptors;
+exports.createDescriptor = createDescriptor;
+exports.createUncachedDescriptors = createUncachedDescriptors;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _files = require("./files");
+
+var _item = require("./item");
+
+var _caching = require("./caching");
+
+var _resolveTargets = require("./resolve-targets");
+
+function isEqualDescriptor(a, b) {
+ return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && (a.file && a.file.request) === (b.file && b.file.request) && (a.file && a.file.resolved) === (b.file && b.file.resolved);
+}
+
+function* handlerOf(value) {
+ return value;
+}
+
+function optionsWithResolvedBrowserslistConfigFile(options, dirname) {
+ if (typeof options.browserslistConfigFile === "string") {
+ options.browserslistConfigFile = (0, _resolveTargets.resolveBrowserslistConfigFile)(options.browserslistConfigFile, dirname);
+ }
+
+ return options;
+}
+
+function createCachedDescriptors(dirname, options, alias) {
+ const {
+ plugins,
+ presets,
+ passPerPreset
+ } = options;
+ return {
+ options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
+ plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => handlerOf([]),
+ presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => handlerOf([])
+ };
+}
+
+function createUncachedDescriptors(dirname, options, alias) {
+ let plugins;
+ let presets;
+ return {
+ options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
+
+ *plugins() {
+ if (!plugins) {
+ plugins = yield* createPluginDescriptors(options.plugins || [], dirname, alias);
+ }
+
+ return plugins;
+ },
+
+ *presets() {
+ if (!presets) {
+ presets = yield* createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset);
+ }
+
+ return presets;
+ }
+
+ };
+}
+
+const PRESET_DESCRIPTOR_CACHE = new WeakMap();
+const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
+ const dirname = cache.using(dir => dir);
+ return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCache)(function* (passPerPreset) {
+ const descriptors = yield* createPresetDescriptors(items, dirname, alias, passPerPreset);
+ return descriptors.map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc));
+ }));
+});
+const PLUGIN_DESCRIPTOR_CACHE = new WeakMap();
+const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
+ const dirname = cache.using(dir => dir);
+ return (0, _caching.makeStrongCache)(function* (alias) {
+ const descriptors = yield* createPluginDescriptors(items, dirname, alias);
+ return descriptors.map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc));
+ });
+});
+const DEFAULT_OPTIONS = {};
+
+function loadCachedDescriptor(cache, desc) {
+ const {
+ value,
+ options = DEFAULT_OPTIONS
+ } = desc;
+ if (options === false) return desc;
+ let cacheByOptions = cache.get(value);
+
+ if (!cacheByOptions) {
+ cacheByOptions = new WeakMap();
+ cache.set(value, cacheByOptions);
+ }
+
+ let possibilities = cacheByOptions.get(options);
+
+ if (!possibilities) {
+ possibilities = [];
+ cacheByOptions.set(options, possibilities);
+ }
+
+ if (possibilities.indexOf(desc) === -1) {
+ const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc));
+
+ if (matches.length > 0) {
+ return matches[0];
+ }
+
+ possibilities.push(desc);
+ }
+
+ return desc;
+}
+
+function* createPresetDescriptors(items, dirname, alias, passPerPreset) {
+ return yield* createDescriptors("preset", items, dirname, alias, passPerPreset);
+}
+
+function* createPluginDescriptors(items, dirname, alias) {
+ return yield* createDescriptors("plugin", items, dirname, alias);
+}
+
+function* createDescriptors(type, items, dirname, alias, ownPass) {
+ const descriptors = yield* _gensync().all(items.map((item, index) => createDescriptor(item, dirname, {
+ type,
+ alias: `${alias}$${index}`,
+ ownPass: !!ownPass
+ })));
+ assertNoDuplicates(descriptors);
+ return descriptors;
+}
+
+function* createDescriptor(pair, dirname, {
+ type,
+ alias,
+ ownPass
+}) {
+ const desc = (0, _item.getItemDescriptor)(pair);
+
+ if (desc) {
+ return desc;
+ }
+
+ let name;
+ let options;
+ let value = pair;
+
+ if (Array.isArray(value)) {
+ if (value.length === 3) {
+ [value, options, name] = value;
+ } else {
+ [value, options] = value;
+ }
+ }
+
+ let file = undefined;
+ let filepath = null;
+
+ if (typeof value === "string") {
+ if (typeof type !== "string") {
+ throw new Error("To resolve a string-based item, the type of item must be given");
+ }
+
+ const resolver = type === "plugin" ? _files.loadPlugin : _files.loadPreset;
+ const request = value;
+ ({
+ filepath,
+ value
+ } = yield* resolver(value, dirname));
+ file = {
+ request,
+ resolved: filepath
+ };
+ }
+
+ if (!value) {
+ throw new Error(`Unexpected falsy value: ${String(value)}`);
+ }
+
+ if (typeof value === "object" && value.__esModule) {
+ if (value.default) {
+ value = value.default;
+ } else {
+ throw new Error("Must export a default export when using ES6 modules.");
+ }
+ }
+
+ if (typeof value !== "object" && typeof value !== "function") {
+ throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`);
+ }
+
+ if (filepath !== null && typeof value === "object" && value) {
+ throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`);
+ }
+
+ return {
+ name,
+ alias: filepath || alias,
+ value,
+ options,
+ dirname,
+ ownPass,
+ file
+ };
+}
+
+function assertNoDuplicates(items) {
+ const map = new Map();
+
+ for (const item of items) {
+ if (typeof item.value !== "function") continue;
+ let nameMap = map.get(item.value);
+
+ if (!nameMap) {
+ nameMap = new Set();
+ map.set(item.value, nameMap);
+ }
+
+ if (nameMap.has(item.name)) {
+ const conflicts = items.filter(i => i.value === item.value);
+ throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n"));
+ }
+
+ nameMap.add(item.name);
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/configuration.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/configuration.js
new file mode 100644
index 000000000..f6cbf0c62
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/configuration.js
@@ -0,0 +1,358 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ROOT_CONFIG_FILENAMES = void 0;
+exports.findConfigUpwards = findConfigUpwards;
+exports.findRelativeConfig = findRelativeConfig;
+exports.findRootConfig = findRootConfig;
+exports.loadConfig = loadConfig;
+exports.resolveShowConfigPath = resolveShowConfigPath;
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _fs() {
+ const data = require("fs");
+
+ _fs = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _json() {
+ const data = require("json5");
+
+ _json = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _caching = require("../caching");
+
+var _configApi = require("../helpers/config-api");
+
+var _utils = require("./utils");
+
+var _moduleTypes = require("./module-types");
+
+var _patternToRegex = require("../pattern-to-regex");
+
+var fs = require("../../gensync-utils/fs");
+
+function _module() {
+ const data = require("module");
+
+ _module = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const debug = _debug()("babel:config:loading:files:configuration");
+
+const ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json"];
+exports.ROOT_CONFIG_FILENAMES = ROOT_CONFIG_FILENAMES;
+const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json"];
+const BABELIGNORE_FILENAME = ".babelignore";
+
+function findConfigUpwards(rootDir) {
+ let dirname = rootDir;
+
+ for (;;) {
+ for (const filename of ROOT_CONFIG_FILENAMES) {
+ if (_fs().existsSync(_path().join(dirname, filename))) {
+ return dirname;
+ }
+ }
+
+ const nextDir = _path().dirname(dirname);
+
+ if (dirname === nextDir) break;
+ dirname = nextDir;
+ }
+
+ return null;
+}
+
+function* findRelativeConfig(packageData, envName, caller) {
+ let config = null;
+ let ignore = null;
+
+ const dirname = _path().dirname(packageData.filepath);
+
+ for (const loc of packageData.directories) {
+ if (!config) {
+ var _packageData$pkg;
+
+ config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null);
+ }
+
+ if (!ignore) {
+ const ignoreLoc = _path().join(loc, BABELIGNORE_FILENAME);
+
+ ignore = yield* readIgnoreConfig(ignoreLoc);
+
+ if (ignore) {
+ debug("Found ignore %o from %o.", ignore.filepath, dirname);
+ }
+ }
+ }
+
+ return {
+ config,
+ ignore
+ };
+}
+
+function findRootConfig(dirname, envName, caller) {
+ return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);
+}
+
+function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) {
+ const configs = yield* _gensync().all(names.map(filename => readConfig(_path().join(dirname, filename), envName, caller)));
+ const config = configs.reduce((previousConfig, config) => {
+ if (config && previousConfig) {
+ throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`);
+ }
+
+ return config || previousConfig;
+ }, previousConfig);
+
+ if (config) {
+ debug("Found configuration %o from %o.", config.filepath, dirname);
+ }
+
+ return config;
+}
+
+function* loadConfig(name, dirname, envName, caller) {
+ const filepath = (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+ }, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+ })(name, {
+ paths: [dirname]
+ });
+ const conf = yield* readConfig(filepath, envName, caller);
+
+ if (!conf) {
+ throw new Error(`Config file ${filepath} contains no configuration data`);
+ }
+
+ debug("Loaded config %o from %o.", name, dirname);
+ return conf;
+}
+
+function readConfig(filepath, envName, caller) {
+ const ext = _path().extname(filepath);
+
+ return ext === ".js" || ext === ".cjs" || ext === ".mjs" ? readConfigJS(filepath, {
+ envName,
+ caller
+ }) : readConfigJSON5(filepath);
+}
+
+const LOADING_CONFIGS = new Set();
+const readConfigJS = (0, _caching.makeStrongCache)(function* readConfigJS(filepath, cache) {
+ if (!_fs().existsSync(filepath)) {
+ cache.never();
+ return null;
+ }
+
+ if (LOADING_CONFIGS.has(filepath)) {
+ cache.never();
+ debug("Auto-ignoring usage of config %o.", filepath);
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options: {}
+ };
+ }
+
+ let options;
+
+ try {
+ LOADING_CONFIGS.add(filepath);
+ options = yield* (0, _moduleTypes.default)(filepath, "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously.");
+ } catch (err) {
+ err.message = `${filepath}: Error while loading config - ${err.message}`;
+ throw err;
+ } finally {
+ LOADING_CONFIGS.delete(filepath);
+ }
+
+ let assertCache = false;
+
+ if (typeof options === "function") {
+ yield* [];
+ options = options((0, _configApi.makeConfigAPI)(cache));
+ assertCache = true;
+ }
+
+ if (!options || typeof options !== "object" || Array.isArray(options)) {
+ throw new Error(`${filepath}: Configuration should be an exported JavaScript object.`);
+ }
+
+ if (typeof options.then === "function") {
+ throw new Error(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`);
+ }
+
+ if (assertCache && !cache.configured()) throwConfigError();
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options
+ };
+});
+const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => {
+ const babel = file.options["babel"];
+ if (typeof babel === "undefined") return null;
+
+ if (typeof babel !== "object" || Array.isArray(babel) || babel === null) {
+ throw new Error(`${file.filepath}: .babel property must be an object`);
+ }
+
+ return {
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: babel
+ };
+});
+const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ let options;
+
+ try {
+ options = _json().parse(content);
+ } catch (err) {
+ err.message = `${filepath}: Error while parsing config - ${err.message}`;
+ throw err;
+ }
+
+ if (!options) throw new Error(`${filepath}: No config detected`);
+
+ if (typeof options !== "object") {
+ throw new Error(`${filepath}: Config returned typeof ${typeof options}`);
+ }
+
+ if (Array.isArray(options)) {
+ throw new Error(`${filepath}: Expected config object but found array`);
+ }
+
+ delete options["$schema"];
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options
+ };
+});
+const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ const ignoreDir = _path().dirname(filepath);
+
+ const ignorePatterns = content.split("\n").map(line => line.replace(/#(.*?)$/, "").trim()).filter(line => !!line);
+
+ for (const pattern of ignorePatterns) {
+ if (pattern[0] === "!") {
+ throw new Error(`Negation of file paths is not supported.`);
+ }
+ }
+
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir))
+ };
+});
+
+function* resolveShowConfigPath(dirname) {
+ const targetPath = process.env.BABEL_SHOW_CONFIG_FOR;
+
+ if (targetPath != null) {
+ const absolutePath = _path().resolve(dirname, targetPath);
+
+ const stats = yield* fs.stat(absolutePath);
+
+ if (!stats.isFile()) {
+ throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`);
+ }
+
+ return absolutePath;
+ }
+
+ return null;
+}
+
+function throwConfigError() {
+ throw new Error(`\
+Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured
+for various types of caching, using the first param of their handler functions:
+
+module.exports = function(api) {
+ // The API exposes the following:
+
+ // Cache the returned value forever and don't call this function again.
+ api.cache(true);
+
+ // Don't cache at all. Not recommended because it will be very slow.
+ api.cache(false);
+
+ // Cached based on the value of some function. If this function returns a value different from
+ // a previously-encountered value, the plugins will re-evaluate.
+ var env = api.cache(() => process.env.NODE_ENV);
+
+ // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for
+ // any possible NODE_ENV value that might come up during plugin execution.
+ var isProd = api.cache(() => process.env.NODE_ENV === "production");
+
+ // .cache(fn) will perform a linear search though instances to find the matching plugin based
+ // based on previous instantiated plugins. If you want to recreate the plugin and discard the
+ // previous instance whenever something changes, you may use:
+ var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production");
+
+ // Note, we also expose the following more-verbose versions of the above examples:
+ api.cache.forever(); // api.cache(true)
+ api.cache.never(); // api.cache(false)
+ api.cache.using(fn); // api.cache(fn)
+
+ // Return the value that will be cached.
+ return { };
+};`);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import-meta-resolve.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import-meta-resolve.js
new file mode 100644
index 000000000..6e1c90565
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import-meta-resolve.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = resolve;
+
+function _module() {
+ const data = require("module");
+
+ _module = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _importMetaResolve = require("../../vendor/import-meta-resolve");
+
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
+
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
+
+let import_;
+
+try {
+ import_ = require("./import").default;
+} catch (_unused) {}
+
+const importMetaResolveP = import_ && process.execArgv.includes("--experimental-import-meta-resolve") ? import_("data:text/javascript,export default import.meta.resolve").then(m => m.default || _importMetaResolve.resolve, () => _importMetaResolve.resolve) : Promise.resolve(_importMetaResolve.resolve);
+
+function resolve(_x, _x2) {
+ return _resolve.apply(this, arguments);
+}
+
+function _resolve() {
+ _resolve = _asyncToGenerator(function* (specifier, parent) {
+ return (yield importMetaResolveP)(specifier, parent);
+ });
+ return _resolve.apply(this, arguments);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import.js
new file mode 100644
index 000000000..c0acc2b66
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/import.js
@@ -0,0 +1,10 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = import_;
+
+function import_(filepath) {
+ return import(filepath);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index-browser.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index-browser.js
new file mode 100644
index 000000000..c73168bfb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index-browser.js
@@ -0,0 +1,67 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ROOT_CONFIG_FILENAMES = void 0;
+exports.findConfigUpwards = findConfigUpwards;
+exports.findPackageData = findPackageData;
+exports.findRelativeConfig = findRelativeConfig;
+exports.findRootConfig = findRootConfig;
+exports.loadConfig = loadConfig;
+exports.loadPlugin = loadPlugin;
+exports.loadPreset = loadPreset;
+exports.resolvePlugin = resolvePlugin;
+exports.resolvePreset = resolvePreset;
+exports.resolveShowConfigPath = resolveShowConfigPath;
+
+function findConfigUpwards(rootDir) {
+ return null;
+}
+
+function* findPackageData(filepath) {
+ return {
+ filepath,
+ directories: [],
+ pkg: null,
+ isPackage: false
+ };
+}
+
+function* findRelativeConfig(pkgData, envName, caller) {
+ return {
+ config: null,
+ ignore: null
+ };
+}
+
+function* findRootConfig(dirname, envName, caller) {
+ return null;
+}
+
+function* loadConfig(name, dirname, envName, caller) {
+ throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);
+}
+
+function* resolveShowConfigPath(dirname) {
+ return null;
+}
+
+const ROOT_CONFIG_FILENAMES = [];
+exports.ROOT_CONFIG_FILENAMES = ROOT_CONFIG_FILENAMES;
+
+function resolvePlugin(name, dirname) {
+ return null;
+}
+
+function resolvePreset(name, dirname) {
+ return null;
+}
+
+function loadPlugin(name, dirname) {
+ throw new Error(`Cannot load plugin ${name} relative to ${dirname} in a browser`);
+}
+
+function loadPreset(name, dirname) {
+ throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index.js
new file mode 100644
index 000000000..075410c02
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/index.js
@@ -0,0 +1,86 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", {
+ enumerable: true,
+ get: function () {
+ return _configuration.ROOT_CONFIG_FILENAMES;
+ }
+});
+Object.defineProperty(exports, "findConfigUpwards", {
+ enumerable: true,
+ get: function () {
+ return _configuration.findConfigUpwards;
+ }
+});
+Object.defineProperty(exports, "findPackageData", {
+ enumerable: true,
+ get: function () {
+ return _package.findPackageData;
+ }
+});
+Object.defineProperty(exports, "findRelativeConfig", {
+ enumerable: true,
+ get: function () {
+ return _configuration.findRelativeConfig;
+ }
+});
+Object.defineProperty(exports, "findRootConfig", {
+ enumerable: true,
+ get: function () {
+ return _configuration.findRootConfig;
+ }
+});
+Object.defineProperty(exports, "loadConfig", {
+ enumerable: true,
+ get: function () {
+ return _configuration.loadConfig;
+ }
+});
+Object.defineProperty(exports, "loadPlugin", {
+ enumerable: true,
+ get: function () {
+ return plugins.loadPlugin;
+ }
+});
+Object.defineProperty(exports, "loadPreset", {
+ enumerable: true,
+ get: function () {
+ return plugins.loadPreset;
+ }
+});
+exports.resolvePreset = exports.resolvePlugin = void 0;
+Object.defineProperty(exports, "resolveShowConfigPath", {
+ enumerable: true,
+ get: function () {
+ return _configuration.resolveShowConfigPath;
+ }
+});
+
+var _package = require("./package");
+
+var _configuration = require("./configuration");
+
+var plugins = require("./plugins");
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+({});
+
+const resolvePlugin = _gensync()(plugins.resolvePlugin).sync;
+
+exports.resolvePlugin = resolvePlugin;
+
+const resolvePreset = _gensync()(plugins.resolvePreset).sync;
+
+exports.resolvePreset = resolvePreset;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/module-types.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/module-types.js
new file mode 100644
index 000000000..35d8220a3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/module-types.js
@@ -0,0 +1,108 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loadCjsOrMjsDefault;
+exports.supportsESM = void 0;
+
+var _async = require("../../gensync-utils/async");
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _url() {
+ const data = require("url");
+
+ _url = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _module() {
+ const data = require("module");
+
+ _module = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
+
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
+
+let import_;
+
+try {
+ import_ = require("./import").default;
+} catch (_unused) {}
+
+const supportsESM = !!import_;
+exports.supportsESM = supportsESM;
+
+function* loadCjsOrMjsDefault(filepath, asyncError, fallbackToTranspiledModule = false) {
+ switch (guessJSModuleType(filepath)) {
+ case "cjs":
+ return loadCjsDefault(filepath, fallbackToTranspiledModule);
+
+ case "unknown":
+ try {
+ return loadCjsDefault(filepath, fallbackToTranspiledModule);
+ } catch (e) {
+ if (e.code !== "ERR_REQUIRE_ESM") throw e;
+ }
+
+ case "mjs":
+ if (yield* (0, _async.isAsync)()) {
+ return yield* (0, _async.waitFor)(loadMjsDefault(filepath));
+ }
+
+ throw new Error(asyncError);
+ }
+}
+
+function guessJSModuleType(filename) {
+ switch (_path().extname(filename)) {
+ case ".cjs":
+ return "cjs";
+
+ case ".mjs":
+ return "mjs";
+
+ default:
+ return "unknown";
+ }
+}
+
+function loadCjsDefault(filepath, fallbackToTranspiledModule) {
+ const module = require(filepath);
+
+ return module != null && module.__esModule ? module.default || (fallbackToTranspiledModule ? module : undefined) : module;
+}
+
+function loadMjsDefault(_x) {
+ return _loadMjsDefault.apply(this, arguments);
+}
+
+function _loadMjsDefault() {
+ _loadMjsDefault = _asyncToGenerator(function* (filepath) {
+ if (!import_) {
+ throw new Error("Internal error: Native ECMAScript modules aren't supported" + " by this platform.\n");
+ }
+
+ const module = yield import_((0, _url().pathToFileURL)(filepath));
+ return module.default;
+ });
+ return _loadMjsDefault.apply(this, arguments);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/package.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/package.js
new file mode 100644
index 000000000..0e08bfe33
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/package.js
@@ -0,0 +1,76 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.findPackageData = findPackageData;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _utils = require("./utils");
+
+const PACKAGE_FILENAME = "package.json";
+
+function* findPackageData(filepath) {
+ let pkg = null;
+ const directories = [];
+ let isPackage = true;
+
+ let dirname = _path().dirname(filepath);
+
+ while (!pkg && _path().basename(dirname) !== "node_modules") {
+ directories.push(dirname);
+ pkg = yield* readConfigPackage(_path().join(dirname, PACKAGE_FILENAME));
+
+ const nextLoc = _path().dirname(dirname);
+
+ if (dirname === nextLoc) {
+ isPackage = false;
+ break;
+ }
+
+ dirname = nextLoc;
+ }
+
+ return {
+ filepath,
+ directories,
+ pkg,
+ isPackage
+ };
+}
+
+const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ let options;
+
+ try {
+ options = JSON.parse(content);
+ } catch (err) {
+ err.message = `${filepath}: Error while parsing JSON - ${err.message}`;
+ throw err;
+ }
+
+ if (!options) throw new Error(`${filepath}: No config detected`);
+
+ if (typeof options !== "object") {
+ throw new Error(`${filepath}: Config returned typeof ${typeof options}`);
+ }
+
+ if (Array.isArray(options)) {
+ throw new Error(`${filepath}: Expected config object but found array`);
+ }
+
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options
+ };
+});
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/plugins.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/plugins.js
new file mode 100644
index 000000000..8af6e4957
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/plugins.js
@@ -0,0 +1,273 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.loadPlugin = loadPlugin;
+exports.loadPreset = loadPreset;
+exports.resolvePlugin = resolvePlugin;
+exports.resolvePreset = resolvePreset;
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _async = require("../../gensync-utils/async");
+
+var _moduleTypes = require("./module-types");
+
+function _url() {
+ const data = require("url");
+
+ _url = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _importMetaResolve = require("./import-meta-resolve");
+
+function _module() {
+ const data = require("module");
+
+ _module = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
+
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
+
+const debug = _debug()("babel:config:loading:files:plugins");
+
+const EXACT_RE = /^module:/;
+const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/;
+const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/;
+const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/;
+const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/;
+const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/;
+const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/;
+const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/;
+
+function* resolvePlugin(name, dirname) {
+ return yield* resolveStandardizedName("plugin", name, dirname);
+}
+
+function* resolvePreset(name, dirname) {
+ return yield* resolveStandardizedName("preset", name, dirname);
+}
+
+function* loadPlugin(name, dirname) {
+ const filepath = yield* resolvePlugin(name, dirname);
+ const value = yield* requireModule("plugin", filepath);
+ debug("Loaded plugin %o from %o.", name, dirname);
+ return {
+ filepath,
+ value
+ };
+}
+
+function* loadPreset(name, dirname) {
+ const filepath = yield* resolvePreset(name, dirname);
+ const value = yield* requireModule("preset", filepath);
+ debug("Loaded preset %o from %o.", name, dirname);
+ return {
+ filepath,
+ value
+ };
+}
+
+function standardizeName(type, name) {
+ if (_path().isAbsolute(name)) return name;
+ const isPreset = type === "preset";
+ return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`).replace(EXACT_RE, "");
+}
+
+function* resolveAlternativesHelper(type, name) {
+ const standardizedName = standardizeName(type, name);
+ const {
+ error,
+ value
+ } = yield standardizedName;
+ if (!error) return value;
+ if (error.code !== "MODULE_NOT_FOUND") throw error;
+
+ if (standardizedName !== name && !(yield name).error) {
+ error.message += `\n- If you want to resolve "${name}", use "module:${name}"`;
+ }
+
+ if (!(yield standardizeName(type, "@babel/" + name)).error) {
+ error.message += `\n- Did you mean "@babel/${name}"?`;
+ }
+
+ const oppositeType = type === "preset" ? "plugin" : "preset";
+
+ if (!(yield standardizeName(oppositeType, name)).error) {
+ error.message += `\n- Did you accidentally pass a ${oppositeType} as a ${type}?`;
+ }
+
+ throw error;
+}
+
+function tryRequireResolve(id, {
+ paths: [dirname]
+}) {
+ try {
+ return {
+ error: null,
+ value: (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+ }, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+ })(id, {
+ paths: [dirname]
+ })
+ };
+ } catch (error) {
+ return {
+ error,
+ value: null
+ };
+ }
+}
+
+function tryImportMetaResolve(_x, _x2) {
+ return _tryImportMetaResolve.apply(this, arguments);
+}
+
+function _tryImportMetaResolve() {
+ _tryImportMetaResolve = _asyncToGenerator(function* (id, options) {
+ try {
+ return {
+ error: null,
+ value: yield (0, _importMetaResolve.default)(id, options)
+ };
+ } catch (error) {
+ return {
+ error,
+ value: null
+ };
+ }
+ });
+ return _tryImportMetaResolve.apply(this, arguments);
+}
+
+function resolveStandardizedNameForRequrie(type, name, dirname) {
+ const it = resolveAlternativesHelper(type, name);
+ let res = it.next();
+
+ while (!res.done) {
+ res = it.next(tryRequireResolve(res.value, {
+ paths: [dirname]
+ }));
+ }
+
+ return res.value;
+}
+
+function resolveStandardizedNameForImport(_x3, _x4, _x5) {
+ return _resolveStandardizedNameForImport.apply(this, arguments);
+}
+
+function _resolveStandardizedNameForImport() {
+ _resolveStandardizedNameForImport = _asyncToGenerator(function* (type, name, dirname) {
+ const parentUrl = (0, _url().pathToFileURL)(_path().join(dirname, "./babel-virtual-resolve-base.js")).href;
+ const it = resolveAlternativesHelper(type, name);
+ let res = it.next();
+
+ while (!res.done) {
+ res = it.next(yield tryImportMetaResolve(res.value, parentUrl));
+ }
+
+ return (0, _url().fileURLToPath)(res.value);
+ });
+ return _resolveStandardizedNameForImport.apply(this, arguments);
+}
+
+const resolveStandardizedName = _gensync()({
+ sync(type, name, dirname = process.cwd()) {
+ return resolveStandardizedNameForRequrie(type, name, dirname);
+ },
+
+ async(type, name, dirname = process.cwd()) {
+ return _asyncToGenerator(function* () {
+ if (!_moduleTypes.supportsESM) {
+ return resolveStandardizedNameForRequrie(type, name, dirname);
+ }
+
+ try {
+ return yield resolveStandardizedNameForImport(type, name, dirname);
+ } catch (e) {
+ try {
+ return resolveStandardizedNameForRequrie(type, name, dirname);
+ } catch (e2) {
+ if (e.type === "MODULE_NOT_FOUND") throw e;
+ if (e2.type === "MODULE_NOT_FOUND") throw e2;
+ throw e;
+ }
+ }
+ })();
+ }
+
+});
+
+{
+ var LOADING_MODULES = new Set();
+}
+
+function* requireModule(type, name) {
+ {
+ if (!(yield* (0, _async.isAsync)()) && LOADING_MODULES.has(name)) {
+ throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.');
+ }
+ }
+
+ try {
+ {
+ LOADING_MODULES.add(name);
+ }
+ return yield* (0, _moduleTypes.default)(name, `You appear to be using a native ECMAScript module ${type}, ` + "which is only supported when running Babel asynchronously.", true);
+ } catch (err) {
+ err.message = `[BABEL]: ${err.message} (While processing: ${name})`;
+ throw err;
+ } finally {
+ {
+ LOADING_MODULES.delete(name);
+ }
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/types.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/types.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/utils.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/utils.js
new file mode 100644
index 000000000..6da68c0a7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/files/utils.js
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.makeStaticFileCache = makeStaticFileCache;
+
+var _caching = require("../caching");
+
+var fs = require("../../gensync-utils/fs");
+
+function _fs2() {
+ const data = require("fs");
+
+ _fs2 = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function makeStaticFileCache(fn) {
+ return (0, _caching.makeStrongCache)(function* (filepath, cache) {
+ const cached = cache.invalidate(() => fileMtime(filepath));
+
+ if (cached === null) {
+ return null;
+ }
+
+ return fn(filepath, yield* fs.readFile(filepath, "utf8"));
+ });
+}
+
+function fileMtime(filepath) {
+ if (!_fs2().existsSync(filepath)) return null;
+
+ try {
+ return +_fs2().statSync(filepath).mtime;
+ } catch (e) {
+ if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e;
+ }
+
+ return null;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/full.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/full.js
new file mode 100644
index 000000000..e1df648ce
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/full.js
@@ -0,0 +1,378 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _async = require("../gensync-utils/async");
+
+var _util = require("./util");
+
+var context = require("../index");
+
+var _plugin = require("./plugin");
+
+var _item = require("./item");
+
+var _configChain = require("./config-chain");
+
+var _deepArray = require("./helpers/deep-array");
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _caching = require("./caching");
+
+var _options = require("./validation/options");
+
+var _plugins = require("./validation/plugins");
+
+var _configApi = require("./helpers/config-api");
+
+var _partial = require("./partial");
+
+var Context = require("./cache-contexts");
+
+var _default = _gensync()(function* loadFullConfig(inputOpts) {
+ var _opts$assumptions;
+
+ const result = yield* (0, _partial.default)(inputOpts);
+
+ if (!result) {
+ return null;
+ }
+
+ const {
+ options,
+ context,
+ fileHandling
+ } = result;
+
+ if (fileHandling === "ignored") {
+ return null;
+ }
+
+ const optionDefaults = {};
+ const {
+ plugins,
+ presets
+ } = options;
+
+ if (!plugins || !presets) {
+ throw new Error("Assertion failure - plugins and presets exist");
+ }
+
+ const presetContext = Object.assign({}, context, {
+ targets: options.targets
+ });
+
+ const toDescriptor = item => {
+ const desc = (0, _item.getItemDescriptor)(item);
+
+ if (!desc) {
+ throw new Error("Assertion failure - must be config item");
+ }
+
+ return desc;
+ };
+
+ const presetsDescriptors = presets.map(toDescriptor);
+ const initialPluginsDescriptors = plugins.map(toDescriptor);
+ const pluginDescriptorsByPass = [[]];
+ const passes = [];
+ const externalDependencies = [];
+ const ignored = yield* enhanceError(context, function* recursePresetDescriptors(rawPresets, pluginDescriptorsPass) {
+ const presets = [];
+
+ for (let i = 0; i < rawPresets.length; i++) {
+ const descriptor = rawPresets[i];
+
+ if (descriptor.options !== false) {
+ try {
+ var preset = yield* loadPresetDescriptor(descriptor, presetContext);
+ } catch (e) {
+ if (e.code === "BABEL_UNKNOWN_OPTION") {
+ (0, _options.checkNoUnwrappedItemOptionPairs)(rawPresets, i, "preset", e);
+ }
+
+ throw e;
+ }
+
+ externalDependencies.push(preset.externalDependencies);
+
+ if (descriptor.ownPass) {
+ presets.push({
+ preset: preset.chain,
+ pass: []
+ });
+ } else {
+ presets.unshift({
+ preset: preset.chain,
+ pass: pluginDescriptorsPass
+ });
+ }
+ }
+ }
+
+ if (presets.length > 0) {
+ pluginDescriptorsByPass.splice(1, 0, ...presets.map(o => o.pass).filter(p => p !== pluginDescriptorsPass));
+
+ for (const {
+ preset,
+ pass
+ } of presets) {
+ if (!preset) return true;
+ pass.push(...preset.plugins);
+ const ignored = yield* recursePresetDescriptors(preset.presets, pass);
+ if (ignored) return true;
+ preset.options.forEach(opts => {
+ (0, _util.mergeOptions)(optionDefaults, opts);
+ });
+ }
+ }
+ })(presetsDescriptors, pluginDescriptorsByPass[0]);
+ if (ignored) return null;
+ const opts = optionDefaults;
+ (0, _util.mergeOptions)(opts, options);
+ const pluginContext = Object.assign({}, presetContext, {
+ assumptions: (_opts$assumptions = opts.assumptions) != null ? _opts$assumptions : {}
+ });
+ yield* enhanceError(context, function* loadPluginDescriptors() {
+ pluginDescriptorsByPass[0].unshift(...initialPluginsDescriptors);
+
+ for (const descs of pluginDescriptorsByPass) {
+ const pass = [];
+ passes.push(pass);
+
+ for (let i = 0; i < descs.length; i++) {
+ const descriptor = descs[i];
+
+ if (descriptor.options !== false) {
+ try {
+ var plugin = yield* loadPluginDescriptor(descriptor, pluginContext);
+ } catch (e) {
+ if (e.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") {
+ (0, _options.checkNoUnwrappedItemOptionPairs)(descs, i, "plugin", e);
+ }
+
+ throw e;
+ }
+
+ pass.push(plugin);
+ externalDependencies.push(plugin.externalDependencies);
+ }
+ }
+ }
+ })();
+ opts.plugins = passes[0];
+ opts.presets = passes.slice(1).filter(plugins => plugins.length > 0).map(plugins => ({
+ plugins
+ }));
+ opts.passPerPreset = opts.presets.length > 0;
+ return {
+ options: opts,
+ passes: passes,
+ externalDependencies: (0, _deepArray.finalize)(externalDependencies)
+ };
+});
+
+exports.default = _default;
+
+function enhanceError(context, fn) {
+ return function* (arg1, arg2) {
+ try {
+ return yield* fn(arg1, arg2);
+ } catch (e) {
+ if (!/^\[BABEL\]/.test(e.message)) {
+ e.message = `[BABEL] ${context.filename || "unknown"}: ${e.message}`;
+ }
+
+ throw e;
+ }
+ };
+}
+
+const makeDescriptorLoader = apiFactory => (0, _caching.makeWeakCache)(function* ({
+ value,
+ options,
+ dirname,
+ alias
+}, cache) {
+ if (options === false) throw new Error("Assertion failure");
+ options = options || {};
+ const externalDependencies = [];
+ let item = value;
+
+ if (typeof value === "function") {
+ const factory = (0, _async.maybeAsync)(value, `You appear to be using an async plugin/preset, but Babel has been called synchronously`);
+ const api = Object.assign({}, context, apiFactory(cache, externalDependencies));
+
+ try {
+ item = yield* factory(api, options, dirname);
+ } catch (e) {
+ if (alias) {
+ e.message += ` (While processing: ${JSON.stringify(alias)})`;
+ }
+
+ throw e;
+ }
+ }
+
+ if (!item || typeof item !== "object") {
+ throw new Error("Plugin/Preset did not return an object.");
+ }
+
+ if ((0, _async.isThenable)(item)) {
+ yield* [];
+ throw new Error(`You appear to be using a promise as a plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version. ` + `As an alternative, you can prefix the promise with "await". ` + `(While processing: ${JSON.stringify(alias)})`);
+ }
+
+ if (externalDependencies.length > 0 && (!cache.configured() || cache.mode() === "forever")) {
+ let error = `A plugin/preset has external untracked dependencies ` + `(${externalDependencies[0]}), but the cache `;
+
+ if (!cache.configured()) {
+ error += `has not been configured to be invalidated when the external dependencies change. `;
+ } else {
+ error += ` has been configured to never be invalidated. `;
+ }
+
+ error += `Plugins/presets should configure their cache to be invalidated when the external ` + `dependencies change, for example using \`api.cache.invalidate(() => ` + `statSync(filepath).mtimeMs)\` or \`api.cache.never()\`\n` + `(While processing: ${JSON.stringify(alias)})`;
+ throw new Error(error);
+ }
+
+ return {
+ value: item,
+ options,
+ dirname,
+ alias,
+ externalDependencies: (0, _deepArray.finalize)(externalDependencies)
+ };
+});
+
+const pluginDescriptorLoader = makeDescriptorLoader(_configApi.makePluginAPI);
+const presetDescriptorLoader = makeDescriptorLoader(_configApi.makePresetAPI);
+
+function* loadPluginDescriptor(descriptor, context) {
+ if (descriptor.value instanceof _plugin.default) {
+ if (descriptor.options) {
+ throw new Error("Passed options to an existing Plugin instance will not work.");
+ }
+
+ return descriptor.value;
+ }
+
+ return yield* instantiatePlugin(yield* pluginDescriptorLoader(descriptor, context), context);
+}
+
+const instantiatePlugin = (0, _caching.makeWeakCache)(function* ({
+ value,
+ options,
+ dirname,
+ alias,
+ externalDependencies
+}, cache) {
+ const pluginObj = (0, _plugins.validatePluginObject)(value);
+ const plugin = Object.assign({}, pluginObj);
+
+ if (plugin.visitor) {
+ plugin.visitor = _traverse().default.explode(Object.assign({}, plugin.visitor));
+ }
+
+ if (plugin.inherits) {
+ const inheritsDescriptor = {
+ name: undefined,
+ alias: `${alias}$inherits`,
+ value: plugin.inherits,
+ options,
+ dirname
+ };
+ const inherits = yield* (0, _async.forwardAsync)(loadPluginDescriptor, run => {
+ return cache.invalidate(data => run(inheritsDescriptor, data));
+ });
+ plugin.pre = chain(inherits.pre, plugin.pre);
+ plugin.post = chain(inherits.post, plugin.post);
+ plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions);
+ plugin.visitor = _traverse().default.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]);
+
+ if (inherits.externalDependencies.length > 0) {
+ if (externalDependencies.length === 0) {
+ externalDependencies = inherits.externalDependencies;
+ } else {
+ externalDependencies = (0, _deepArray.finalize)([externalDependencies, inherits.externalDependencies]);
+ }
+ }
+ }
+
+ return new _plugin.default(plugin, options, alias, externalDependencies);
+});
+
+const validateIfOptionNeedsFilename = (options, descriptor) => {
+ if (options.test || options.include || options.exclude) {
+ const formattedPresetName = descriptor.name ? `"${descriptor.name}"` : "/* your preset */";
+ throw new Error([`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`, `\`\`\``, `babel.transform(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`, `\`\`\``, `See https://babeljs.io/docs/en/options#filename for more information.`].join("\n"));
+ }
+};
+
+const validatePreset = (preset, context, descriptor) => {
+ if (!context.filename) {
+ const {
+ options
+ } = preset;
+ validateIfOptionNeedsFilename(options, descriptor);
+
+ if (options.overrides) {
+ options.overrides.forEach(overrideOptions => validateIfOptionNeedsFilename(overrideOptions, descriptor));
+ }
+ }
+};
+
+function* loadPresetDescriptor(descriptor, context) {
+ const preset = instantiatePreset(yield* presetDescriptorLoader(descriptor, context));
+ validatePreset(preset, context, descriptor);
+ return {
+ chain: yield* (0, _configChain.buildPresetChain)(preset, context),
+ externalDependencies: preset.externalDependencies
+ };
+}
+
+const instantiatePreset = (0, _caching.makeWeakCacheSync)(({
+ value,
+ dirname,
+ alias,
+ externalDependencies
+}) => {
+ return {
+ options: (0, _options.validate)("preset", value),
+ alias,
+ dirname,
+ externalDependencies
+ };
+});
+
+function chain(a, b) {
+ const fns = [a, b].filter(Boolean);
+ if (fns.length <= 1) return fns[0];
+ return function (...args) {
+ for (const fn of fns) {
+ fn.apply(this, args);
+ }
+ };
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/config-api.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/config-api.js
new file mode 100644
index 000000000..f8dedbcb4
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/config-api.js
@@ -0,0 +1,108 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.makeConfigAPI = makeConfigAPI;
+exports.makePluginAPI = makePluginAPI;
+exports.makePresetAPI = makePresetAPI;
+
+function _semver() {
+ const data = require("semver");
+
+ _semver = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _ = require("../../");
+
+var _caching = require("../caching");
+
+var Context = require("../cache-contexts");
+
+function makeConfigAPI(cache) {
+ const env = value => cache.using(data => {
+ if (typeof value === "undefined") return data.envName;
+
+ if (typeof value === "function") {
+ return (0, _caching.assertSimpleType)(value(data.envName));
+ }
+
+ if (!Array.isArray(value)) value = [value];
+ return value.some(entry => {
+ if (typeof entry !== "string") {
+ throw new Error("Unexpected non-string value");
+ }
+
+ return entry === data.envName;
+ });
+ });
+
+ const caller = cb => cache.using(data => (0, _caching.assertSimpleType)(cb(data.caller)));
+
+ return {
+ version: _.version,
+ cache: cache.simple(),
+ env,
+ async: () => false,
+ caller,
+ assertVersion
+ };
+}
+
+function makePresetAPI(cache, externalDependencies) {
+ const targets = () => JSON.parse(cache.using(data => JSON.stringify(data.targets)));
+
+ const addExternalDependency = ref => {
+ externalDependencies.push(ref);
+ };
+
+ return Object.assign({}, makeConfigAPI(cache), {
+ targets,
+ addExternalDependency
+ });
+}
+
+function makePluginAPI(cache, externalDependencies) {
+ const assumption = name => cache.using(data => data.assumptions[name]);
+
+ return Object.assign({}, makePresetAPI(cache, externalDependencies), {
+ assumption
+ });
+}
+
+function assertVersion(range) {
+ if (typeof range === "number") {
+ if (!Number.isInteger(range)) {
+ throw new Error("Expected string or integer value.");
+ }
+
+ range = `^${range}.0.0-0`;
+ }
+
+ if (typeof range !== "string") {
+ throw new Error("Expected string or integer value.");
+ }
+
+ if (_semver().satisfies(_.version, range)) return;
+ const limit = Error.stackTraceLimit;
+
+ if (typeof limit === "number" && limit < 25) {
+ Error.stackTraceLimit = 25;
+ }
+
+ const err = new Error(`Requires Babel "${range}", but was loaded with "${_.version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`);
+
+ if (typeof limit === "number") {
+ Error.stackTraceLimit = limit;
+ }
+
+ throw Object.assign(err, {
+ code: "BABEL_VERSION_UNSUPPORTED",
+ version: _.version,
+ range
+ });
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/deep-array.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/deep-array.js
new file mode 100644
index 000000000..9455e32c3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/deep-array.js
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.finalize = finalize;
+exports.flattenToSet = flattenToSet;
+
+function finalize(deepArr) {
+ return Object.freeze(deepArr);
+}
+
+function flattenToSet(arr) {
+ const result = new Set();
+ const stack = [arr];
+
+ while (stack.length > 0) {
+ for (const el of stack.pop()) {
+ if (Array.isArray(el)) stack.push(el);else result.add(el);
+ }
+ }
+
+ return result;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/environment.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/environment.js
new file mode 100644
index 000000000..e4bfdbc7a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/helpers/environment.js
@@ -0,0 +1,10 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getEnv = getEnv;
+
+function getEnv(defaultValue = "development") {
+ return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/index.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/index.js
new file mode 100644
index 000000000..696850dba
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/index.js
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.createConfigItem = createConfigItem;
+exports.createConfigItemSync = exports.createConfigItemAsync = void 0;
+Object.defineProperty(exports, "default", {
+ enumerable: true,
+ get: function () {
+ return _full.default;
+ }
+});
+exports.loadPartialConfigSync = exports.loadPartialConfigAsync = exports.loadPartialConfig = exports.loadOptionsSync = exports.loadOptionsAsync = exports.loadOptions = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _full = require("./full");
+
+var _partial = require("./partial");
+
+var _item = require("./item");
+
+const loadOptionsRunner = _gensync()(function* (opts) {
+ var _config$options;
+
+ const config = yield* (0, _full.default)(opts);
+ return (_config$options = config == null ? void 0 : config.options) != null ? _config$options : null;
+});
+
+const createConfigItemRunner = _gensync()(_item.createConfigItem);
+
+const maybeErrback = runner => (opts, callback) => {
+ if (callback === undefined && typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ return callback ? runner.errback(opts, callback) : runner.sync(opts);
+};
+
+const loadPartialConfig = maybeErrback(_partial.loadPartialConfig);
+exports.loadPartialConfig = loadPartialConfig;
+const loadPartialConfigSync = _partial.loadPartialConfig.sync;
+exports.loadPartialConfigSync = loadPartialConfigSync;
+const loadPartialConfigAsync = _partial.loadPartialConfig.async;
+exports.loadPartialConfigAsync = loadPartialConfigAsync;
+const loadOptions = maybeErrback(loadOptionsRunner);
+exports.loadOptions = loadOptions;
+const loadOptionsSync = loadOptionsRunner.sync;
+exports.loadOptionsSync = loadOptionsSync;
+const loadOptionsAsync = loadOptionsRunner.async;
+exports.loadOptionsAsync = loadOptionsAsync;
+const createConfigItemSync = createConfigItemRunner.sync;
+exports.createConfigItemSync = createConfigItemSync;
+const createConfigItemAsync = createConfigItemRunner.async;
+exports.createConfigItemAsync = createConfigItemAsync;
+
+function createConfigItem(target, options, callback) {
+ if (callback !== undefined) {
+ return createConfigItemRunner.errback(target, options, callback);
+ } else if (typeof options === "function") {
+ return createConfigItemRunner.errback(target, undefined, callback);
+ } else {
+ return createConfigItemRunner.sync(target, options);
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/item.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/item.js
new file mode 100644
index 000000000..238035461
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/item.js
@@ -0,0 +1,76 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.createConfigItem = createConfigItem;
+exports.createItemFromDescriptor = createItemFromDescriptor;
+exports.getItemDescriptor = getItemDescriptor;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _configDescriptors = require("./config-descriptors");
+
+function createItemFromDescriptor(desc) {
+ return new ConfigItem(desc);
+}
+
+function* createConfigItem(value, {
+ dirname = ".",
+ type
+} = {}) {
+ const descriptor = yield* (0, _configDescriptors.createDescriptor)(value, _path().resolve(dirname), {
+ type,
+ alias: "programmatic item"
+ });
+ return createItemFromDescriptor(descriptor);
+}
+
+function getItemDescriptor(item) {
+ if (item != null && item[CONFIG_ITEM_BRAND]) {
+ return item._descriptor;
+ }
+
+ return undefined;
+}
+
+const CONFIG_ITEM_BRAND = Symbol.for("@babel/core@7 - ConfigItem");
+
+class ConfigItem {
+ constructor(descriptor) {
+ this._descriptor = void 0;
+ this[CONFIG_ITEM_BRAND] = true;
+ this.value = void 0;
+ this.options = void 0;
+ this.dirname = void 0;
+ this.name = void 0;
+ this.file = void 0;
+ this._descriptor = descriptor;
+ Object.defineProperty(this, "_descriptor", {
+ enumerable: false
+ });
+ Object.defineProperty(this, CONFIG_ITEM_BRAND, {
+ enumerable: false
+ });
+ this.value = this._descriptor.value;
+ this.options = this._descriptor.options;
+ this.dirname = this._descriptor.dirname;
+ this.name = this._descriptor.name;
+ this.file = this._descriptor.file ? {
+ request: this._descriptor.file.request,
+ resolved: this._descriptor.file.resolved
+ } : undefined;
+ Object.freeze(this);
+ }
+
+}
+
+Object.freeze(ConfigItem.prototype);
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/partial.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/partial.js
new file mode 100644
index 000000000..e8c52e103
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/partial.js
@@ -0,0 +1,197 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loadPrivatePartialConfig;
+exports.loadPartialConfig = void 0;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _plugin = require("./plugin");
+
+var _util = require("./util");
+
+var _item = require("./item");
+
+var _configChain = require("./config-chain");
+
+var _environment = require("./helpers/environment");
+
+var _options = require("./validation/options");
+
+var _files = require("./files");
+
+var _resolveTargets = require("./resolve-targets");
+
+const _excluded = ["showIgnoredFiles"];
+
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+
+function resolveRootMode(rootDir, rootMode) {
+ switch (rootMode) {
+ case "root":
+ return rootDir;
+
+ case "upward-optional":
+ {
+ const upwardRootDir = (0, _files.findConfigUpwards)(rootDir);
+ return upwardRootDir === null ? rootDir : upwardRootDir;
+ }
+
+ case "upward":
+ {
+ const upwardRootDir = (0, _files.findConfigUpwards)(rootDir);
+ if (upwardRootDir !== null) return upwardRootDir;
+ throw Object.assign(new Error(`Babel was run with rootMode:"upward" but a root could not ` + `be found when searching upward from "${rootDir}".\n` + `One of the following config files must be in the directory tree: ` + `"${_files.ROOT_CONFIG_FILENAMES.join(", ")}".`), {
+ code: "BABEL_ROOT_NOT_FOUND",
+ dirname: rootDir
+ });
+ }
+
+ default:
+ throw new Error(`Assertion failure - unknown rootMode value.`);
+ }
+}
+
+function* loadPrivatePartialConfig(inputOpts) {
+ if (inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts))) {
+ throw new Error("Babel options must be an object, null, or undefined");
+ }
+
+ const args = inputOpts ? (0, _options.validate)("arguments", inputOpts) : {};
+ const {
+ envName = (0, _environment.getEnv)(),
+ cwd = ".",
+ root: rootDir = ".",
+ rootMode = "root",
+ caller,
+ cloneInputAst = true
+ } = args;
+
+ const absoluteCwd = _path().resolve(cwd);
+
+ const absoluteRootDir = resolveRootMode(_path().resolve(absoluteCwd, rootDir), rootMode);
+ const filename = typeof args.filename === "string" ? _path().resolve(cwd, args.filename) : undefined;
+ const showConfigPath = yield* (0, _files.resolveShowConfigPath)(absoluteCwd);
+ const context = {
+ filename,
+ cwd: absoluteCwd,
+ root: absoluteRootDir,
+ envName,
+ caller,
+ showConfig: showConfigPath === filename
+ };
+ const configChain = yield* (0, _configChain.buildRootChain)(args, context);
+ if (!configChain) return null;
+ const merged = {
+ assumptions: {}
+ };
+ configChain.options.forEach(opts => {
+ (0, _util.mergeOptions)(merged, opts);
+ });
+ const options = Object.assign({}, merged, {
+ targets: (0, _resolveTargets.resolveTargets)(merged, absoluteRootDir),
+ cloneInputAst,
+ babelrc: false,
+ configFile: false,
+ browserslistConfigFile: false,
+ passPerPreset: false,
+ envName: context.envName,
+ cwd: context.cwd,
+ root: context.root,
+ rootMode: "root",
+ filename: typeof context.filename === "string" ? context.filename : undefined,
+ plugins: configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)),
+ presets: configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor))
+ });
+ return {
+ options,
+ context,
+ fileHandling: configChain.fileHandling,
+ ignore: configChain.ignore,
+ babelrc: configChain.babelrc,
+ config: configChain.config,
+ files: configChain.files
+ };
+}
+
+const loadPartialConfig = _gensync()(function* (opts) {
+ let showIgnoredFiles = false;
+
+ if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) {
+ var _opts = opts;
+ ({
+ showIgnoredFiles
+ } = _opts);
+ opts = _objectWithoutPropertiesLoose(_opts, _excluded);
+ _opts;
+ }
+
+ const result = yield* loadPrivatePartialConfig(opts);
+ if (!result) return null;
+ const {
+ options,
+ babelrc,
+ ignore,
+ config,
+ fileHandling,
+ files
+ } = result;
+
+ if (fileHandling === "ignored" && !showIgnoredFiles) {
+ return null;
+ }
+
+ (options.plugins || []).forEach(item => {
+ if (item.value instanceof _plugin.default) {
+ throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()");
+ }
+ });
+ return new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined, fileHandling, files);
+});
+
+exports.loadPartialConfig = loadPartialConfig;
+
+class PartialConfig {
+ constructor(options, babelrc, ignore, config, fileHandling, files) {
+ this.options = void 0;
+ this.babelrc = void 0;
+ this.babelignore = void 0;
+ this.config = void 0;
+ this.fileHandling = void 0;
+ this.files = void 0;
+ this.options = options;
+ this.babelignore = ignore;
+ this.babelrc = babelrc;
+ this.config = config;
+ this.fileHandling = fileHandling;
+ this.files = files;
+ Object.freeze(this);
+ }
+
+ hasFilesystemConfig() {
+ return this.babelrc !== undefined || this.config !== undefined;
+ }
+
+}
+
+Object.freeze(PartialConfig.prototype);
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/pattern-to-regex.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/pattern-to-regex.js
new file mode 100644
index 000000000..ec5db8fd5
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/pattern-to-regex.js
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = pathToPattern;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const sep = `\\${_path().sep}`;
+const endSep = `(?:${sep}|$)`;
+const substitution = `[^${sep}]+`;
+const starPat = `(?:${substitution}${sep})`;
+const starPatLast = `(?:${substitution}${endSep})`;
+const starStarPat = `${starPat}*?`;
+const starStarPatLast = `${starPat}*?${starPatLast}?`;
+
+function escapeRegExp(string) {
+ return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
+}
+
+function pathToPattern(pattern, dirname) {
+ const parts = _path().resolve(dirname, pattern).split(_path().sep);
+
+ return new RegExp(["^", ...parts.map((part, i) => {
+ const last = i === parts.length - 1;
+ if (part === "**") return last ? starStarPatLast : starStarPat;
+ if (part === "*") return last ? starPatLast : starPat;
+
+ if (part.indexOf("*.") === 0) {
+ return substitution + escapeRegExp(part.slice(1)) + (last ? endSep : sep);
+ }
+
+ return escapeRegExp(part) + (last ? endSep : sep);
+ })].join(""));
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/plugin.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/plugin.js
new file mode 100644
index 000000000..40e054019
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/plugin.js
@@ -0,0 +1,34 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _deepArray = require("./helpers/deep-array");
+
+class Plugin {
+ constructor(plugin, options, key, externalDependencies = (0, _deepArray.finalize)([])) {
+ this.key = void 0;
+ this.manipulateOptions = void 0;
+ this.post = void 0;
+ this.pre = void 0;
+ this.visitor = void 0;
+ this.parserOverride = void 0;
+ this.generatorOverride = void 0;
+ this.options = void 0;
+ this.externalDependencies = void 0;
+ this.key = plugin.name || key;
+ this.manipulateOptions = plugin.manipulateOptions;
+ this.post = plugin.post;
+ this.pre = plugin.pre;
+ this.visitor = plugin.visitor || {};
+ this.parserOverride = plugin.parserOverride;
+ this.generatorOverride = plugin.generatorOverride;
+ this.options = options;
+ this.externalDependencies = externalDependencies;
+ }
+
+}
+
+exports.default = Plugin;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/printer.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/printer.js
new file mode 100644
index 000000000..54911a349
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/printer.js
@@ -0,0 +1,139 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ConfigPrinter = exports.ChainFormatter = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const ChainFormatter = {
+ Programmatic: 0,
+ Config: 1
+};
+exports.ChainFormatter = ChainFormatter;
+const Formatter = {
+ title(type, callerName, filepath) {
+ let title = "";
+
+ if (type === ChainFormatter.Programmatic) {
+ title = "programmatic options";
+
+ if (callerName) {
+ title += " from " + callerName;
+ }
+ } else {
+ title = "config " + filepath;
+ }
+
+ return title;
+ },
+
+ loc(index, envName) {
+ let loc = "";
+
+ if (index != null) {
+ loc += `.overrides[${index}]`;
+ }
+
+ if (envName != null) {
+ loc += `.env["${envName}"]`;
+ }
+
+ return loc;
+ },
+
+ *optionsAndDescriptors(opt) {
+ const content = Object.assign({}, opt.options);
+ delete content.overrides;
+ delete content.env;
+ const pluginDescriptors = [...(yield* opt.plugins())];
+
+ if (pluginDescriptors.length) {
+ content.plugins = pluginDescriptors.map(d => descriptorToConfig(d));
+ }
+
+ const presetDescriptors = [...(yield* opt.presets())];
+
+ if (presetDescriptors.length) {
+ content.presets = [...presetDescriptors].map(d => descriptorToConfig(d));
+ }
+
+ return JSON.stringify(content, undefined, 2);
+ }
+
+};
+
+function descriptorToConfig(d) {
+ var _d$file;
+
+ let name = (_d$file = d.file) == null ? void 0 : _d$file.request;
+
+ if (name == null) {
+ if (typeof d.value === "object") {
+ name = d.value;
+ } else if (typeof d.value === "function") {
+ name = `[Function: ${d.value.toString().slice(0, 50)} ... ]`;
+ }
+ }
+
+ if (name == null) {
+ name = "[Unknown]";
+ }
+
+ if (d.options === undefined) {
+ return name;
+ } else if (d.name == null) {
+ return [name, d.options];
+ } else {
+ return [name, d.options, d.name];
+ }
+}
+
+class ConfigPrinter {
+ constructor() {
+ this._stack = [];
+ }
+
+ configure(enabled, type, {
+ callerName,
+ filepath
+ }) {
+ if (!enabled) return () => {};
+ return (content, index, envName) => {
+ this._stack.push({
+ type,
+ callerName,
+ filepath,
+ content,
+ index,
+ envName
+ });
+ };
+ }
+
+ static *format(config) {
+ let title = Formatter.title(config.type, config.callerName, config.filepath);
+ const loc = Formatter.loc(config.index, config.envName);
+ if (loc) title += ` ${loc}`;
+ const content = yield* Formatter.optionsAndDescriptors(config.content);
+ return `${title}\n${content}`;
+ }
+
+ *output() {
+ if (this._stack.length === 0) return "";
+ const configs = yield* _gensync().all(this._stack.map(s => ConfigPrinter.format(s)));
+ return configs.join("\n\n");
+ }
+
+}
+
+exports.ConfigPrinter = ConfigPrinter;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets-browser.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets-browser.js
new file mode 100644
index 000000000..cc4e51802
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets-browser.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.resolveBrowserslistConfigFile = resolveBrowserslistConfigFile;
+exports.resolveTargets = resolveTargets;
+
+function _helperCompilationTargets() {
+ const data = require("@babel/helper-compilation-targets");
+
+ _helperCompilationTargets = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function resolveBrowserslistConfigFile(browserslistConfigFile, configFilePath) {
+ return undefined;
+}
+
+function resolveTargets(options, root) {
+ let targets = options.targets;
+
+ if (typeof targets === "string" || Array.isArray(targets)) {
+ targets = {
+ browsers: targets
+ };
+ }
+
+ if (targets && targets.esmodules) {
+ targets = Object.assign({}, targets, {
+ esmodules: "intersect"
+ });
+ }
+
+ return (0, _helperCompilationTargets().default)(targets, {
+ ignoreBrowserslistConfig: true,
+ browserslistEnv: options.browserslistEnv
+ });
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets.js
new file mode 100644
index 000000000..973e3d576
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/resolve-targets.js
@@ -0,0 +1,68 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.resolveBrowserslistConfigFile = resolveBrowserslistConfigFile;
+exports.resolveTargets = resolveTargets;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _helperCompilationTargets() {
+ const data = require("@babel/helper-compilation-targets");
+
+ _helperCompilationTargets = function () {
+ return data;
+ };
+
+ return data;
+}
+
+({});
+
+function resolveBrowserslistConfigFile(browserslistConfigFile, configFileDir) {
+ return _path().resolve(configFileDir, browserslistConfigFile);
+}
+
+function resolveTargets(options, root) {
+ let targets = options.targets;
+
+ if (typeof targets === "string" || Array.isArray(targets)) {
+ targets = {
+ browsers: targets
+ };
+ }
+
+ if (targets && targets.esmodules) {
+ targets = Object.assign({}, targets, {
+ esmodules: "intersect"
+ });
+ }
+
+ const {
+ browserslistConfigFile
+ } = options;
+ let configFile;
+ let ignoreBrowserslistConfig = false;
+
+ if (typeof browserslistConfigFile === "string") {
+ configFile = browserslistConfigFile;
+ } else {
+ ignoreBrowserslistConfig = browserslistConfigFile === false;
+ }
+
+ return (0, _helperCompilationTargets().default)(targets, {
+ ignoreBrowserslistConfig,
+ configFile,
+ configPath: root,
+ browserslistEnv: options.browserslistEnv
+ });
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/util.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/util.js
new file mode 100644
index 000000000..1fc2d3d79
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/util.js
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIterableIterator = isIterableIterator;
+exports.mergeOptions = mergeOptions;
+
+function mergeOptions(target, source) {
+ for (const k of Object.keys(source)) {
+ if ((k === "parserOpts" || k === "generatorOpts" || k === "assumptions") && source[k]) {
+ const parserOpts = source[k];
+ const targetObj = target[k] || (target[k] = {});
+ mergeDefaultFields(targetObj, parserOpts);
+ } else {
+ const val = source[k];
+ if (val !== undefined) target[k] = val;
+ }
+ }
+}
+
+function mergeDefaultFields(target, source) {
+ for (const k of Object.keys(source)) {
+ const val = source[k];
+ if (val !== undefined) target[k] = val;
+ }
+}
+
+function isIterableIterator(value) {
+ return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function";
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/option-assertions.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/option-assertions.js
new file mode 100644
index 000000000..9a0b4a479
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/option-assertions.js
@@ -0,0 +1,352 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.access = access;
+exports.assertArray = assertArray;
+exports.assertAssumptions = assertAssumptions;
+exports.assertBabelrcSearch = assertBabelrcSearch;
+exports.assertBoolean = assertBoolean;
+exports.assertCallerMetadata = assertCallerMetadata;
+exports.assertCompact = assertCompact;
+exports.assertConfigApplicableTest = assertConfigApplicableTest;
+exports.assertConfigFileSearch = assertConfigFileSearch;
+exports.assertFunction = assertFunction;
+exports.assertIgnoreList = assertIgnoreList;
+exports.assertInputSourceMap = assertInputSourceMap;
+exports.assertObject = assertObject;
+exports.assertPluginList = assertPluginList;
+exports.assertRootMode = assertRootMode;
+exports.assertSourceMaps = assertSourceMaps;
+exports.assertSourceType = assertSourceType;
+exports.assertString = assertString;
+exports.assertTargets = assertTargets;
+exports.msg = msg;
+
+function _helperCompilationTargets() {
+ const data = require("@babel/helper-compilation-targets");
+
+ _helperCompilationTargets = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _options = require("./options");
+
+function msg(loc) {
+ switch (loc.type) {
+ case "root":
+ return ``;
+
+ case "env":
+ return `${msg(loc.parent)}.env["${loc.name}"]`;
+
+ case "overrides":
+ return `${msg(loc.parent)}.overrides[${loc.index}]`;
+
+ case "option":
+ return `${msg(loc.parent)}.${loc.name}`;
+
+ case "access":
+ return `${msg(loc.parent)}[${JSON.stringify(loc.name)}]`;
+
+ default:
+ throw new Error(`Assertion failure: Unknown type ${loc.type}`);
+ }
+}
+
+function access(loc, name) {
+ return {
+ type: "access",
+ name,
+ parent: loc
+ };
+}
+
+function assertRootMode(loc, value) {
+ if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") {
+ throw new Error(`${msg(loc)} must be a "root", "upward", "upward-optional" or undefined`);
+ }
+
+ return value;
+}
+
+function assertSourceMaps(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") {
+ throw new Error(`${msg(loc)} must be a boolean, "inline", "both", or undefined`);
+ }
+
+ return value;
+}
+
+function assertCompact(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && value !== "auto") {
+ throw new Error(`${msg(loc)} must be a boolean, "auto", or undefined`);
+ }
+
+ return value;
+}
+
+function assertSourceType(loc, value) {
+ if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") {
+ throw new Error(`${msg(loc)} must be "module", "script", "unambiguous", or undefined`);
+ }
+
+ return value;
+}
+
+function assertCallerMetadata(loc, value) {
+ const obj = assertObject(loc, value);
+
+ if (obj) {
+ if (typeof obj.name !== "string") {
+ throw new Error(`${msg(loc)} set but does not contain "name" property string`);
+ }
+
+ for (const prop of Object.keys(obj)) {
+ const propLoc = access(loc, prop);
+ const value = obj[prop];
+
+ if (value != null && typeof value !== "boolean" && typeof value !== "string" && typeof value !== "number") {
+ throw new Error(`${msg(propLoc)} must be null, undefined, a boolean, a string, or a number.`);
+ }
+ }
+ }
+
+ return value;
+}
+
+function assertInputSourceMap(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) {
+ throw new Error(`${msg(loc)} must be a boolean, object, or undefined`);
+ }
+
+ return value;
+}
+
+function assertString(loc, value) {
+ if (value !== undefined && typeof value !== "string") {
+ throw new Error(`${msg(loc)} must be a string, or undefined`);
+ }
+
+ return value;
+}
+
+function assertFunction(loc, value) {
+ if (value !== undefined && typeof value !== "function") {
+ throw new Error(`${msg(loc)} must be a function, or undefined`);
+ }
+
+ return value;
+}
+
+function assertBoolean(loc, value) {
+ if (value !== undefined && typeof value !== "boolean") {
+ throw new Error(`${msg(loc)} must be a boolean, or undefined`);
+ }
+
+ return value;
+}
+
+function assertObject(loc, value) {
+ if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) {
+ throw new Error(`${msg(loc)} must be an object, or undefined`);
+ }
+
+ return value;
+}
+
+function assertArray(loc, value) {
+ if (value != null && !Array.isArray(value)) {
+ throw new Error(`${msg(loc)} must be an array, or undefined`);
+ }
+
+ return value;
+}
+
+function assertIgnoreList(loc, value) {
+ const arr = assertArray(loc, value);
+
+ if (arr) {
+ arr.forEach((item, i) => assertIgnoreItem(access(loc, i), item));
+ }
+
+ return arr;
+}
+
+function assertIgnoreItem(loc, value) {
+ if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) {
+ throw new Error(`${msg(loc)} must be an array of string/Function/RegExp values, or undefined`);
+ }
+
+ return value;
+}
+
+function assertConfigApplicableTest(loc, value) {
+ if (value === undefined) return value;
+
+ if (Array.isArray(value)) {
+ value.forEach((item, i) => {
+ if (!checkValidTest(item)) {
+ throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`);
+ }
+ });
+ } else if (!checkValidTest(value)) {
+ throw new Error(`${msg(loc)} must be a string/Function/RegExp, or an array of those`);
+ }
+
+ return value;
+}
+
+function checkValidTest(value) {
+ return typeof value === "string" || typeof value === "function" || value instanceof RegExp;
+}
+
+function assertConfigFileSearch(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") {
+ throw new Error(`${msg(loc)} must be a undefined, a boolean, a string, ` + `got ${JSON.stringify(value)}`);
+ }
+
+ return value;
+}
+
+function assertBabelrcSearch(loc, value) {
+ if (value === undefined || typeof value === "boolean") return value;
+
+ if (Array.isArray(value)) {
+ value.forEach((item, i) => {
+ if (!checkValidTest(item)) {
+ throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`);
+ }
+ });
+ } else if (!checkValidTest(value)) {
+ throw new Error(`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` + `or an array of those, got ${JSON.stringify(value)}`);
+ }
+
+ return value;
+}
+
+function assertPluginList(loc, value) {
+ const arr = assertArray(loc, value);
+
+ if (arr) {
+ arr.forEach((item, i) => assertPluginItem(access(loc, i), item));
+ }
+
+ return arr;
+}
+
+function assertPluginItem(loc, value) {
+ if (Array.isArray(value)) {
+ if (value.length === 0) {
+ throw new Error(`${msg(loc)} must include an object`);
+ }
+
+ if (value.length > 3) {
+ throw new Error(`${msg(loc)} may only be a two-tuple or three-tuple`);
+ }
+
+ assertPluginTarget(access(loc, 0), value[0]);
+
+ if (value.length > 1) {
+ const opts = value[1];
+
+ if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts) || opts === null)) {
+ throw new Error(`${msg(access(loc, 1))} must be an object, false, or undefined`);
+ }
+ }
+
+ if (value.length === 3) {
+ const name = value[2];
+
+ if (name !== undefined && typeof name !== "string") {
+ throw new Error(`${msg(access(loc, 2))} must be a string, or undefined`);
+ }
+ }
+ } else {
+ assertPluginTarget(loc, value);
+ }
+
+ return value;
+}
+
+function assertPluginTarget(loc, value) {
+ if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") {
+ throw new Error(`${msg(loc)} must be a string, object, function`);
+ }
+
+ return value;
+}
+
+function assertTargets(loc, value) {
+ if ((0, _helperCompilationTargets().isBrowsersQueryValid)(value)) return value;
+
+ if (typeof value !== "object" || !value || Array.isArray(value)) {
+ throw new Error(`${msg(loc)} must be a string, an array of strings or an object`);
+ }
+
+ const browsersLoc = access(loc, "browsers");
+ const esmodulesLoc = access(loc, "esmodules");
+ assertBrowsersList(browsersLoc, value.browsers);
+ assertBoolean(esmodulesLoc, value.esmodules);
+
+ for (const key of Object.keys(value)) {
+ const val = value[key];
+ const subLoc = access(loc, key);
+ if (key === "esmodules") assertBoolean(subLoc, val);else if (key === "browsers") assertBrowsersList(subLoc, val);else if (!Object.hasOwnProperty.call(_helperCompilationTargets().TargetNames, key)) {
+ const validTargets = Object.keys(_helperCompilationTargets().TargetNames).join(", ");
+ throw new Error(`${msg(subLoc)} is not a valid target. Supported targets are ${validTargets}`);
+ } else assertBrowserVersion(subLoc, val);
+ }
+
+ return value;
+}
+
+function assertBrowsersList(loc, value) {
+ if (value !== undefined && !(0, _helperCompilationTargets().isBrowsersQueryValid)(value)) {
+ throw new Error(`${msg(loc)} must be undefined, a string or an array of strings`);
+ }
+}
+
+function assertBrowserVersion(loc, value) {
+ if (typeof value === "number" && Math.round(value) === value) return;
+ if (typeof value === "string") return;
+ throw new Error(`${msg(loc)} must be a string or an integer number`);
+}
+
+function assertAssumptions(loc, value) {
+ if (value === undefined) return;
+
+ if (typeof value !== "object" || value === null) {
+ throw new Error(`${msg(loc)} must be an object or undefined.`);
+ }
+
+ let root = loc;
+
+ do {
+ root = root.parent;
+ } while (root.type !== "root");
+
+ const inPreset = root.source === "preset";
+
+ for (const name of Object.keys(value)) {
+ const subLoc = access(loc, name);
+
+ if (!_options.assumptionsNames.has(name)) {
+ throw new Error(`${msg(subLoc)} is not a supported assumption.`);
+ }
+
+ if (typeof value[name] !== "boolean") {
+ throw new Error(`${msg(subLoc)} must be a boolean.`);
+ }
+
+ if (inPreset && value[name] === false) {
+ throw new Error(`${msg(subLoc)} cannot be set to 'false' inside presets.`);
+ }
+ }
+
+ return value;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/options.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/options.js
new file mode 100644
index 000000000..930278cfb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/options.js
@@ -0,0 +1,210 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.assumptionsNames = void 0;
+exports.checkNoUnwrappedItemOptionPairs = checkNoUnwrappedItemOptionPairs;
+exports.validate = validate;
+
+var _plugin = require("../plugin");
+
+var _removed = require("./removed");
+
+var _optionAssertions = require("./option-assertions");
+
+const ROOT_VALIDATORS = {
+ cwd: _optionAssertions.assertString,
+ root: _optionAssertions.assertString,
+ rootMode: _optionAssertions.assertRootMode,
+ configFile: _optionAssertions.assertConfigFileSearch,
+ caller: _optionAssertions.assertCallerMetadata,
+ filename: _optionAssertions.assertString,
+ filenameRelative: _optionAssertions.assertString,
+ code: _optionAssertions.assertBoolean,
+ ast: _optionAssertions.assertBoolean,
+ cloneInputAst: _optionAssertions.assertBoolean,
+ envName: _optionAssertions.assertString
+};
+const BABELRC_VALIDATORS = {
+ babelrc: _optionAssertions.assertBoolean,
+ babelrcRoots: _optionAssertions.assertBabelrcSearch
+};
+const NONPRESET_VALIDATORS = {
+ extends: _optionAssertions.assertString,
+ ignore: _optionAssertions.assertIgnoreList,
+ only: _optionAssertions.assertIgnoreList,
+ targets: _optionAssertions.assertTargets,
+ browserslistConfigFile: _optionAssertions.assertConfigFileSearch,
+ browserslistEnv: _optionAssertions.assertString
+};
+const COMMON_VALIDATORS = {
+ inputSourceMap: _optionAssertions.assertInputSourceMap,
+ presets: _optionAssertions.assertPluginList,
+ plugins: _optionAssertions.assertPluginList,
+ passPerPreset: _optionAssertions.assertBoolean,
+ assumptions: _optionAssertions.assertAssumptions,
+ env: assertEnvSet,
+ overrides: assertOverridesList,
+ test: _optionAssertions.assertConfigApplicableTest,
+ include: _optionAssertions.assertConfigApplicableTest,
+ exclude: _optionAssertions.assertConfigApplicableTest,
+ retainLines: _optionAssertions.assertBoolean,
+ comments: _optionAssertions.assertBoolean,
+ shouldPrintComment: _optionAssertions.assertFunction,
+ compact: _optionAssertions.assertCompact,
+ minified: _optionAssertions.assertBoolean,
+ auxiliaryCommentBefore: _optionAssertions.assertString,
+ auxiliaryCommentAfter: _optionAssertions.assertString,
+ sourceType: _optionAssertions.assertSourceType,
+ wrapPluginVisitorMethod: _optionAssertions.assertFunction,
+ highlightCode: _optionAssertions.assertBoolean,
+ sourceMaps: _optionAssertions.assertSourceMaps,
+ sourceMap: _optionAssertions.assertSourceMaps,
+ sourceFileName: _optionAssertions.assertString,
+ sourceRoot: _optionAssertions.assertString,
+ parserOpts: _optionAssertions.assertObject,
+ generatorOpts: _optionAssertions.assertObject
+};
+{
+ Object.assign(COMMON_VALIDATORS, {
+ getModuleId: _optionAssertions.assertFunction,
+ moduleRoot: _optionAssertions.assertString,
+ moduleIds: _optionAssertions.assertBoolean,
+ moduleId: _optionAssertions.assertString
+ });
+}
+const assumptionsNames = new Set(["arrayLikeIsIterable", "constantReexports", "constantSuper", "enumerableModuleMeta", "ignoreFunctionLength", "ignoreToPrimitiveHint", "iterableIsArray", "mutableTemplateObject", "noClassCalls", "noDocumentAll", "noIncompleteNsImportDetection", "noNewArrows", "objectRestNoSymbols", "privateFieldsAsProperties", "pureGetters", "setClassMethods", "setComputedProperties", "setPublicClassFields", "setSpreadProperties", "skipForOfIteratorClosing", "superIsCallableConstructor"]);
+exports.assumptionsNames = assumptionsNames;
+
+function getSource(loc) {
+ return loc.type === "root" ? loc.source : getSource(loc.parent);
+}
+
+function validate(type, opts) {
+ return validateNested({
+ type: "root",
+ source: type
+ }, opts);
+}
+
+function validateNested(loc, opts) {
+ const type = getSource(loc);
+ assertNoDuplicateSourcemap(opts);
+ Object.keys(opts).forEach(key => {
+ const optLoc = {
+ type: "option",
+ name: key,
+ parent: loc
+ };
+
+ if (type === "preset" && NONPRESET_VALIDATORS[key]) {
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in preset options`);
+ }
+
+ if (type !== "arguments" && ROOT_VALIDATORS[key]) {
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options`);
+ }
+
+ if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) {
+ if (type === "babelrcfile" || type === "extendsfile") {
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in .babelrc or "extends"ed files, only in root programmatic options, ` + `or babel.config.js/config file options`);
+ }
+
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options, or babel.config.js/config file options`);
+ }
+
+ const validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError;
+ validator(optLoc, opts[key]);
+ });
+ return opts;
+}
+
+function throwUnknownError(loc) {
+ const key = loc.name;
+
+ if (_removed.default[key]) {
+ const {
+ message,
+ version = 5
+ } = _removed.default[key];
+ throw new Error(`Using removed Babel ${version} option: ${(0, _optionAssertions.msg)(loc)} - ${message}`);
+ } else {
+ const unknownOptErr = new Error(`Unknown option: ${(0, _optionAssertions.msg)(loc)}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`);
+ unknownOptErr.code = "BABEL_UNKNOWN_OPTION";
+ throw unknownOptErr;
+ }
+}
+
+function has(obj, key) {
+ return Object.prototype.hasOwnProperty.call(obj, key);
+}
+
+function assertNoDuplicateSourcemap(opts) {
+ if (has(opts, "sourceMap") && has(opts, "sourceMaps")) {
+ throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both");
+ }
+}
+
+function assertEnvSet(loc, value) {
+ if (loc.parent.type === "env") {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside of another .env block`);
+ }
+
+ const parent = loc.parent;
+ const obj = (0, _optionAssertions.assertObject)(loc, value);
+
+ if (obj) {
+ for (const envName of Object.keys(obj)) {
+ const env = (0, _optionAssertions.assertObject)((0, _optionAssertions.access)(loc, envName), obj[envName]);
+ if (!env) continue;
+ const envLoc = {
+ type: "env",
+ name: envName,
+ parent
+ };
+ validateNested(envLoc, env);
+ }
+ }
+
+ return obj;
+}
+
+function assertOverridesList(loc, value) {
+ if (loc.parent.type === "env") {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .env block`);
+ }
+
+ if (loc.parent.type === "overrides") {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .overrides block`);
+ }
+
+ const parent = loc.parent;
+ const arr = (0, _optionAssertions.assertArray)(loc, value);
+
+ if (arr) {
+ for (const [index, item] of arr.entries()) {
+ const objLoc = (0, _optionAssertions.access)(loc, index);
+ const env = (0, _optionAssertions.assertObject)(objLoc, item);
+ if (!env) throw new Error(`${(0, _optionAssertions.msg)(objLoc)} must be an object`);
+ const overridesLoc = {
+ type: "overrides",
+ index,
+ parent
+ };
+ validateNested(overridesLoc, env);
+ }
+ }
+
+ return arr;
+}
+
+function checkNoUnwrappedItemOptionPairs(items, index, type, e) {
+ if (index === 0) return;
+ const lastItem = items[index - 1];
+ const thisItem = items[index];
+
+ if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") {
+ e.message += `\n- Maybe you meant to use\n` + `"${type}s": [\n ["${lastItem.file.request}", ${JSON.stringify(thisItem.value, undefined, 2)}]\n]\n` + `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`;
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/plugins.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/plugins.js
new file mode 100644
index 000000000..a70cc676f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/plugins.js
@@ -0,0 +1,71 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.validatePluginObject = validatePluginObject;
+
+var _optionAssertions = require("./option-assertions");
+
+const VALIDATORS = {
+ name: _optionAssertions.assertString,
+ manipulateOptions: _optionAssertions.assertFunction,
+ pre: _optionAssertions.assertFunction,
+ post: _optionAssertions.assertFunction,
+ inherits: _optionAssertions.assertFunction,
+ visitor: assertVisitorMap,
+ parserOverride: _optionAssertions.assertFunction,
+ generatorOverride: _optionAssertions.assertFunction
+};
+
+function assertVisitorMap(loc, value) {
+ const obj = (0, _optionAssertions.assertObject)(loc, value);
+
+ if (obj) {
+ Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop]));
+
+ if (obj.enter || obj.exit) {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} cannot contain catch-all "enter" or "exit" handlers. Please target individual nodes.`);
+ }
+ }
+
+ return obj;
+}
+
+function assertVisitorHandler(key, value) {
+ if (value && typeof value === "object") {
+ Object.keys(value).forEach(handler => {
+ if (handler !== "enter" && handler !== "exit") {
+ throw new Error(`.visitor["${key}"] may only have .enter and/or .exit handlers.`);
+ }
+ });
+ } else if (typeof value !== "function") {
+ throw new Error(`.visitor["${key}"] must be a function`);
+ }
+
+ return value;
+}
+
+function validatePluginObject(obj) {
+ const rootPath = {
+ type: "root",
+ source: "plugin"
+ };
+ Object.keys(obj).forEach(key => {
+ const validator = VALIDATORS[key];
+
+ if (validator) {
+ const optLoc = {
+ type: "option",
+ name: key,
+ parent: rootPath
+ };
+ validator(optLoc, obj[key]);
+ } else {
+ const invalidPluginPropertyError = new Error(`.${key} is not a valid Plugin property`);
+ invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY";
+ throw invalidPluginPropertyError;
+ }
+ });
+ return obj;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/removed.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/removed.js
new file mode 100644
index 000000000..f0fcd7de3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/config/validation/removed.js
@@ -0,0 +1,66 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _default = {
+ auxiliaryComment: {
+ message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"
+ },
+ blacklist: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ breakConfig: {
+ message: "This is not a necessary option in Babel 6"
+ },
+ experimental: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ externalHelpers: {
+ message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/"
+ },
+ extra: {
+ message: ""
+ },
+ jsxPragma: {
+ message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/"
+ },
+ loose: {
+ message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option."
+ },
+ metadataUsedHelpers: {
+ message: "Not required anymore as this is enabled by default"
+ },
+ modules: {
+ message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules"
+ },
+ nonStandard: {
+ message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"
+ },
+ optional: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ sourceMapName: {
+ message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves."
+ },
+ stage: {
+ message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"
+ },
+ whitelist: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ resolveModuleSource: {
+ version: 6,
+ message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options"
+ },
+ metadata: {
+ version: 6,
+ message: "Generated plugin metadata is always included in the output result"
+ },
+ sourceMapTarget: {
+ version: 6,
+ message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves."
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/async.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/async.js
new file mode 100644
index 000000000..7deb1863a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/async.js
@@ -0,0 +1,94 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.forwardAsync = forwardAsync;
+exports.isAsync = void 0;
+exports.isThenable = isThenable;
+exports.maybeAsync = maybeAsync;
+exports.waitFor = exports.onFirstPause = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const id = x => x;
+
+const runGenerator = _gensync()(function* (item) {
+ return yield* item;
+});
+
+const isAsync = _gensync()({
+ sync: () => false,
+ errback: cb => cb(null, true)
+});
+
+exports.isAsync = isAsync;
+
+function maybeAsync(fn, message) {
+ return _gensync()({
+ sync(...args) {
+ const result = fn.apply(this, args);
+ if (isThenable(result)) throw new Error(message);
+ return result;
+ },
+
+ async(...args) {
+ return Promise.resolve(fn.apply(this, args));
+ }
+
+ });
+}
+
+const withKind = _gensync()({
+ sync: cb => cb("sync"),
+ async: cb => cb("async")
+});
+
+function forwardAsync(action, cb) {
+ const g = _gensync()(action);
+
+ return withKind(kind => {
+ const adapted = g[kind];
+ return cb(adapted);
+ });
+}
+
+const onFirstPause = _gensync()({
+ name: "onFirstPause",
+ arity: 2,
+ sync: function (item) {
+ return runGenerator.sync(item);
+ },
+ errback: function (item, firstPause, cb) {
+ let completed = false;
+ runGenerator.errback(item, (err, value) => {
+ completed = true;
+ cb(err, value);
+ });
+
+ if (!completed) {
+ firstPause();
+ }
+ }
+});
+
+exports.onFirstPause = onFirstPause;
+
+const waitFor = _gensync()({
+ sync: id,
+ async: id
+});
+
+exports.waitFor = waitFor;
+
+function isThenable(val) {
+ return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/fs.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/fs.js
new file mode 100644
index 000000000..056ae34da
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/gensync-utils/fs.js
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.stat = exports.readFile = void 0;
+
+function _fs() {
+ const data = require("fs");
+
+ _fs = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const readFile = _gensync()({
+ sync: _fs().readFileSync,
+ errback: _fs().readFile
+});
+
+exports.readFile = readFile;
+
+const stat = _gensync()({
+ sync: _fs().statSync,
+ errback: _fs().stat
+});
+
+exports.stat = stat;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/index.js
new file mode 100644
index 000000000..175e9f9eb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/index.js
@@ -0,0 +1,266 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.DEFAULT_EXTENSIONS = void 0;
+Object.defineProperty(exports, "File", {
+ enumerable: true,
+ get: function () {
+ return _file.default;
+ }
+});
+exports.OptionManager = void 0;
+exports.Plugin = Plugin;
+Object.defineProperty(exports, "buildExternalHelpers", {
+ enumerable: true,
+ get: function () {
+ return _buildExternalHelpers.default;
+ }
+});
+Object.defineProperty(exports, "createConfigItem", {
+ enumerable: true,
+ get: function () {
+ return _config.createConfigItem;
+ }
+});
+Object.defineProperty(exports, "createConfigItemAsync", {
+ enumerable: true,
+ get: function () {
+ return _config.createConfigItemAsync;
+ }
+});
+Object.defineProperty(exports, "createConfigItemSync", {
+ enumerable: true,
+ get: function () {
+ return _config.createConfigItemSync;
+ }
+});
+Object.defineProperty(exports, "getEnv", {
+ enumerable: true,
+ get: function () {
+ return _environment.getEnv;
+ }
+});
+Object.defineProperty(exports, "loadOptions", {
+ enumerable: true,
+ get: function () {
+ return _config.loadOptions;
+ }
+});
+Object.defineProperty(exports, "loadOptionsAsync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadOptionsAsync;
+ }
+});
+Object.defineProperty(exports, "loadOptionsSync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadOptionsSync;
+ }
+});
+Object.defineProperty(exports, "loadPartialConfig", {
+ enumerable: true,
+ get: function () {
+ return _config.loadPartialConfig;
+ }
+});
+Object.defineProperty(exports, "loadPartialConfigAsync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadPartialConfigAsync;
+ }
+});
+Object.defineProperty(exports, "loadPartialConfigSync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadPartialConfigSync;
+ }
+});
+Object.defineProperty(exports, "parse", {
+ enumerable: true,
+ get: function () {
+ return _parse.parse;
+ }
+});
+Object.defineProperty(exports, "parseAsync", {
+ enumerable: true,
+ get: function () {
+ return _parse.parseAsync;
+ }
+});
+Object.defineProperty(exports, "parseSync", {
+ enumerable: true,
+ get: function () {
+ return _parse.parseSync;
+ }
+});
+Object.defineProperty(exports, "resolvePlugin", {
+ enumerable: true,
+ get: function () {
+ return _files.resolvePlugin;
+ }
+});
+Object.defineProperty(exports, "resolvePreset", {
+ enumerable: true,
+ get: function () {
+ return _files.resolvePreset;
+ }
+});
+Object.defineProperty(exports, "template", {
+ enumerable: true,
+ get: function () {
+ return _template().default;
+ }
+});
+Object.defineProperty(exports, "tokTypes", {
+ enumerable: true,
+ get: function () {
+ return _parser().tokTypes;
+ }
+});
+Object.defineProperty(exports, "transform", {
+ enumerable: true,
+ get: function () {
+ return _transform.transform;
+ }
+});
+Object.defineProperty(exports, "transformAsync", {
+ enumerable: true,
+ get: function () {
+ return _transform.transformAsync;
+ }
+});
+Object.defineProperty(exports, "transformFile", {
+ enumerable: true,
+ get: function () {
+ return _transformFile.transformFile;
+ }
+});
+Object.defineProperty(exports, "transformFileAsync", {
+ enumerable: true,
+ get: function () {
+ return _transformFile.transformFileAsync;
+ }
+});
+Object.defineProperty(exports, "transformFileSync", {
+ enumerable: true,
+ get: function () {
+ return _transformFile.transformFileSync;
+ }
+});
+Object.defineProperty(exports, "transformFromAst", {
+ enumerable: true,
+ get: function () {
+ return _transformAst.transformFromAst;
+ }
+});
+Object.defineProperty(exports, "transformFromAstAsync", {
+ enumerable: true,
+ get: function () {
+ return _transformAst.transformFromAstAsync;
+ }
+});
+Object.defineProperty(exports, "transformFromAstSync", {
+ enumerable: true,
+ get: function () {
+ return _transformAst.transformFromAstSync;
+ }
+});
+Object.defineProperty(exports, "transformSync", {
+ enumerable: true,
+ get: function () {
+ return _transform.transformSync;
+ }
+});
+Object.defineProperty(exports, "traverse", {
+ enumerable: true,
+ get: function () {
+ return _traverse().default;
+ }
+});
+exports.version = exports.types = void 0;
+
+var _file = require("./transformation/file/file");
+
+var _buildExternalHelpers = require("./tools/build-external-helpers");
+
+var _files = require("./config/files");
+
+var _environment = require("./config/helpers/environment");
+
+function _types() {
+ const data = require("@babel/types");
+
+ _types = function () {
+ return data;
+ };
+
+ return data;
+}
+
+Object.defineProperty(exports, "types", {
+ enumerable: true,
+ get: function () {
+ return _types();
+ }
+});
+
+function _parser() {
+ const data = require("@babel/parser");
+
+ _parser = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _template() {
+ const data = require("@babel/template");
+
+ _template = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transform = require("./transform");
+
+var _transformFile = require("./transform-file");
+
+var _transformAst = require("./transform-ast");
+
+var _parse = require("./parse");
+
+const version = "7.17.9";
+exports.version = version;
+const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs", ".cjs"]);
+exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS;
+
+class OptionManager {
+ init(opts) {
+ return (0, _config.loadOptions)(opts);
+ }
+
+}
+
+exports.OptionManager = OptionManager;
+
+function Plugin(alias) {
+ throw new Error(`The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parse.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parse.js
new file mode 100644
index 000000000..783032ab9
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parse.js
@@ -0,0 +1,48 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.parseSync = exports.parseAsync = exports.parse = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _parser = require("./parser");
+
+var _normalizeOpts = require("./transformation/normalize-opts");
+
+const parseRunner = _gensync()(function* parse(code, opts) {
+ const config = yield* (0, _config.default)(opts);
+
+ if (config === null) {
+ return null;
+ }
+
+ return yield* (0, _parser.default)(config.passes, (0, _normalizeOpts.default)(config), code);
+});
+
+const parse = function parse(code, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ if (callback === undefined) return parseRunner.sync(code, opts);
+ parseRunner.errback(code, opts, callback);
+};
+
+exports.parse = parse;
+const parseSync = parseRunner.sync;
+exports.parseSync = parseSync;
+const parseAsync = parseRunner.async;
+exports.parseAsync = parseAsync;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/index.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/index.js
new file mode 100644
index 000000000..254122a14
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/index.js
@@ -0,0 +1,95 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = parser;
+
+function _parser() {
+ const data = require("@babel/parser");
+
+ _parser = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _codeFrame() {
+ const data = require("@babel/code-frame");
+
+ _codeFrame = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _missingPluginHelper = require("./util/missing-plugin-helper");
+
+function* parser(pluginPasses, {
+ parserOpts,
+ highlightCode = true,
+ filename = "unknown"
+}, code) {
+ try {
+ const results = [];
+
+ for (const plugins of pluginPasses) {
+ for (const plugin of plugins) {
+ const {
+ parserOverride
+ } = plugin;
+
+ if (parserOverride) {
+ const ast = parserOverride(code, parserOpts, _parser().parse);
+ if (ast !== undefined) results.push(ast);
+ }
+ }
+ }
+
+ if (results.length === 0) {
+ return (0, _parser().parse)(code, parserOpts);
+ } else if (results.length === 1) {
+ yield* [];
+
+ if (typeof results[0].then === "function") {
+ throw new Error(`You appear to be using an async parser plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);
+ }
+
+ return results[0];
+ }
+
+ throw new Error("More than one plugin attempted to override parsing.");
+ } catch (err) {
+ if (err.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") {
+ err.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file.";
+ }
+
+ const {
+ loc,
+ missingPlugin
+ } = err;
+
+ if (loc) {
+ const codeFrame = (0, _codeFrame().codeFrameColumns)(code, {
+ start: {
+ line: loc.line,
+ column: loc.column + 1
+ }
+ }, {
+ highlightCode
+ });
+
+ if (missingPlugin) {
+ err.message = `${filename}: ` + (0, _missingPluginHelper.default)(missingPlugin[0], loc, codeFrame);
+ } else {
+ err.message = `${filename}: ${err.message}\n\n` + codeFrame;
+ }
+
+ err.code = "BABEL_PARSE_ERROR";
+ }
+
+ throw err;
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js
new file mode 100644
index 000000000..aa6ae3f36
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js
@@ -0,0 +1,323 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = generateMissingPluginMessage;
+const pluginNameMap = {
+ asyncDoExpressions: {
+ syntax: {
+ name: "@babel/plugin-syntax-async-do-expressions",
+ url: "https://git.io/JYer8"
+ }
+ },
+ classProperties: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-properties",
+ url: "https://git.io/vb4yQ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-class-properties",
+ url: "https://git.io/vb4SL"
+ }
+ },
+ classPrivateProperties: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-properties",
+ url: "https://git.io/vb4yQ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-class-properties",
+ url: "https://git.io/vb4SL"
+ }
+ },
+ classPrivateMethods: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-properties",
+ url: "https://git.io/vb4yQ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-private-methods",
+ url: "https://git.io/JvpRG"
+ }
+ },
+ classStaticBlock: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-static-block",
+ url: "https://git.io/JTLB6"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-class-static-block",
+ url: "https://git.io/JTLBP"
+ }
+ },
+ decimal: {
+ syntax: {
+ name: "@babel/plugin-syntax-decimal",
+ url: "https://git.io/JfKOH"
+ }
+ },
+ decorators: {
+ syntax: {
+ name: "@babel/plugin-syntax-decorators",
+ url: "https://git.io/vb4y9"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-decorators",
+ url: "https://git.io/vb4ST"
+ }
+ },
+ doExpressions: {
+ syntax: {
+ name: "@babel/plugin-syntax-do-expressions",
+ url: "https://git.io/vb4yh"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-do-expressions",
+ url: "https://git.io/vb4S3"
+ }
+ },
+ dynamicImport: {
+ syntax: {
+ name: "@babel/plugin-syntax-dynamic-import",
+ url: "https://git.io/vb4Sv"
+ }
+ },
+ exportDefaultFrom: {
+ syntax: {
+ name: "@babel/plugin-syntax-export-default-from",
+ url: "https://git.io/vb4SO"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-export-default-from",
+ url: "https://git.io/vb4yH"
+ }
+ },
+ exportNamespaceFrom: {
+ syntax: {
+ name: "@babel/plugin-syntax-export-namespace-from",
+ url: "https://git.io/vb4Sf"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-export-namespace-from",
+ url: "https://git.io/vb4SG"
+ }
+ },
+ flow: {
+ syntax: {
+ name: "@babel/plugin-syntax-flow",
+ url: "https://git.io/vb4yb"
+ },
+ transform: {
+ name: "@babel/preset-flow",
+ url: "https://git.io/JfeDn"
+ }
+ },
+ functionBind: {
+ syntax: {
+ name: "@babel/plugin-syntax-function-bind",
+ url: "https://git.io/vb4y7"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-function-bind",
+ url: "https://git.io/vb4St"
+ }
+ },
+ functionSent: {
+ syntax: {
+ name: "@babel/plugin-syntax-function-sent",
+ url: "https://git.io/vb4yN"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-function-sent",
+ url: "https://git.io/vb4SZ"
+ }
+ },
+ importMeta: {
+ syntax: {
+ name: "@babel/plugin-syntax-import-meta",
+ url: "https://git.io/vbKK6"
+ }
+ },
+ jsx: {
+ syntax: {
+ name: "@babel/plugin-syntax-jsx",
+ url: "https://git.io/vb4yA"
+ },
+ transform: {
+ name: "@babel/preset-react",
+ url: "https://git.io/JfeDR"
+ }
+ },
+ importAssertions: {
+ syntax: {
+ name: "@babel/plugin-syntax-import-assertions",
+ url: "https://git.io/JUbkv"
+ }
+ },
+ moduleStringNames: {
+ syntax: {
+ name: "@babel/plugin-syntax-module-string-names",
+ url: "https://git.io/JTL8G"
+ }
+ },
+ numericSeparator: {
+ syntax: {
+ name: "@babel/plugin-syntax-numeric-separator",
+ url: "https://git.io/vb4Sq"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-numeric-separator",
+ url: "https://git.io/vb4yS"
+ }
+ },
+ optionalChaining: {
+ syntax: {
+ name: "@babel/plugin-syntax-optional-chaining",
+ url: "https://git.io/vb4Sc"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-optional-chaining",
+ url: "https://git.io/vb4Sk"
+ }
+ },
+ pipelineOperator: {
+ syntax: {
+ name: "@babel/plugin-syntax-pipeline-operator",
+ url: "https://git.io/vb4yj"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-pipeline-operator",
+ url: "https://git.io/vb4SU"
+ }
+ },
+ privateIn: {
+ syntax: {
+ name: "@babel/plugin-syntax-private-property-in-object",
+ url: "https://git.io/JfK3q"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-private-property-in-object",
+ url: "https://git.io/JfK3O"
+ }
+ },
+ recordAndTuple: {
+ syntax: {
+ name: "@babel/plugin-syntax-record-and-tuple",
+ url: "https://git.io/JvKp3"
+ }
+ },
+ regexpUnicodeSets: {
+ syntax: {
+ name: "@babel/plugin-syntax-unicode-sets-regex",
+ url: "https://git.io/J9GTd"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-unicode-sets-regex",
+ url: "https://git.io/J9GTQ"
+ }
+ },
+ throwExpressions: {
+ syntax: {
+ name: "@babel/plugin-syntax-throw-expressions",
+ url: "https://git.io/vb4SJ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-throw-expressions",
+ url: "https://git.io/vb4yF"
+ }
+ },
+ typescript: {
+ syntax: {
+ name: "@babel/plugin-syntax-typescript",
+ url: "https://git.io/vb4SC"
+ },
+ transform: {
+ name: "@babel/preset-typescript",
+ url: "https://git.io/JfeDz"
+ }
+ },
+ asyncGenerators: {
+ syntax: {
+ name: "@babel/plugin-syntax-async-generators",
+ url: "https://git.io/vb4SY"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-async-generator-functions",
+ url: "https://git.io/vb4yp"
+ }
+ },
+ logicalAssignment: {
+ syntax: {
+ name: "@babel/plugin-syntax-logical-assignment-operators",
+ url: "https://git.io/vAlBp"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-logical-assignment-operators",
+ url: "https://git.io/vAlRe"
+ }
+ },
+ nullishCoalescingOperator: {
+ syntax: {
+ name: "@babel/plugin-syntax-nullish-coalescing-operator",
+ url: "https://git.io/vb4yx"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-nullish-coalescing-operator",
+ url: "https://git.io/vb4Se"
+ }
+ },
+ objectRestSpread: {
+ syntax: {
+ name: "@babel/plugin-syntax-object-rest-spread",
+ url: "https://git.io/vb4y5"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-object-rest-spread",
+ url: "https://git.io/vb4Ss"
+ }
+ },
+ optionalCatchBinding: {
+ syntax: {
+ name: "@babel/plugin-syntax-optional-catch-binding",
+ url: "https://git.io/vb4Sn"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-optional-catch-binding",
+ url: "https://git.io/vb4SI"
+ }
+ }
+};
+pluginNameMap.privateIn.syntax = pluginNameMap.privateIn.transform;
+
+const getNameURLCombination = ({
+ name,
+ url
+}) => `${name} (${url})`;
+
+function generateMissingPluginMessage(missingPluginName, loc, codeFrame) {
+ let helpMessage = `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` + `(${loc.line}:${loc.column + 1}):\n\n` + codeFrame;
+ const pluginInfo = pluginNameMap[missingPluginName];
+
+ if (pluginInfo) {
+ const {
+ syntax: syntaxPlugin,
+ transform: transformPlugin
+ } = pluginInfo;
+
+ if (syntaxPlugin) {
+ const syntaxPluginInfo = getNameURLCombination(syntaxPlugin);
+
+ if (transformPlugin) {
+ const transformPluginInfo = getNameURLCombination(transformPlugin);
+ const sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets";
+ helpMessage += `\n\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation.
+If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`;
+ } else {
+ helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`;
+ }
+ }
+ }
+
+ return helpMessage;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/tools/build-external-helpers.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/tools/build-external-helpers.js
new file mode 100644
index 000000000..94d85e7e6
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/tools/build-external-helpers.js
@@ -0,0 +1,164 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+function helpers() {
+ const data = require("@babel/helpers");
+
+ helpers = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _generator() {
+ const data = require("@babel/generator");
+
+ _generator = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _template() {
+ const data = require("@babel/template");
+
+ _template = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _t() {
+ const data = require("@babel/types");
+
+ _t = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _file = require("../transformation/file/file");
+
+const {
+ arrayExpression,
+ assignmentExpression,
+ binaryExpression,
+ blockStatement,
+ callExpression,
+ cloneNode,
+ conditionalExpression,
+ exportNamedDeclaration,
+ exportSpecifier,
+ expressionStatement,
+ functionExpression,
+ identifier,
+ memberExpression,
+ objectExpression,
+ program,
+ stringLiteral,
+ unaryExpression,
+ variableDeclaration,
+ variableDeclarator
+} = _t();
+
+const buildUmdWrapper = replacements => _template().default.statement`
+ (function (root, factory) {
+ if (typeof define === "function" && define.amd) {
+ define(AMD_ARGUMENTS, factory);
+ } else if (typeof exports === "object") {
+ factory(COMMON_ARGUMENTS);
+ } else {
+ factory(BROWSER_ARGUMENTS);
+ }
+ })(UMD_ROOT, function (FACTORY_PARAMETERS) {
+ FACTORY_BODY
+ });
+ `(replacements);
+
+function buildGlobal(allowlist) {
+ const namespace = identifier("babelHelpers");
+ const body = [];
+ const container = functionExpression(null, [identifier("global")], blockStatement(body));
+ const tree = program([expressionStatement(callExpression(container, [conditionalExpression(binaryExpression("===", unaryExpression("typeof", identifier("global")), stringLiteral("undefined")), identifier("self"), identifier("global"))]))]);
+ body.push(variableDeclaration("var", [variableDeclarator(namespace, assignmentExpression("=", memberExpression(identifier("global"), namespace), objectExpression([])))]));
+ buildHelpers(body, namespace, allowlist);
+ return tree;
+}
+
+function buildModule(allowlist) {
+ const body = [];
+ const refs = buildHelpers(body, null, allowlist);
+ body.unshift(exportNamedDeclaration(null, Object.keys(refs).map(name => {
+ return exportSpecifier(cloneNode(refs[name]), identifier(name));
+ })));
+ return program(body, [], "module");
+}
+
+function buildUmd(allowlist) {
+ const namespace = identifier("babelHelpers");
+ const body = [];
+ body.push(variableDeclaration("var", [variableDeclarator(namespace, identifier("global"))]));
+ buildHelpers(body, namespace, allowlist);
+ return program([buildUmdWrapper({
+ FACTORY_PARAMETERS: identifier("global"),
+ BROWSER_ARGUMENTS: assignmentExpression("=", memberExpression(identifier("root"), namespace), objectExpression([])),
+ COMMON_ARGUMENTS: identifier("exports"),
+ AMD_ARGUMENTS: arrayExpression([stringLiteral("exports")]),
+ FACTORY_BODY: body,
+ UMD_ROOT: identifier("this")
+ })]);
+}
+
+function buildVar(allowlist) {
+ const namespace = identifier("babelHelpers");
+ const body = [];
+ body.push(variableDeclaration("var", [variableDeclarator(namespace, objectExpression([]))]));
+ const tree = program(body);
+ buildHelpers(body, namespace, allowlist);
+ body.push(expressionStatement(namespace));
+ return tree;
+}
+
+function buildHelpers(body, namespace, allowlist) {
+ const getHelperReference = name => {
+ return namespace ? memberExpression(namespace, identifier(name)) : identifier(`_${name}`);
+ };
+
+ const refs = {};
+ helpers().list.forEach(function (name) {
+ if (allowlist && allowlist.indexOf(name) < 0) return;
+ const ref = refs[name] = getHelperReference(name);
+ helpers().ensure(name, _file.default);
+ const {
+ nodes
+ } = helpers().get(name, getHelperReference, ref);
+ body.push(...nodes);
+ });
+ return refs;
+}
+
+function _default(allowlist, outputType = "global") {
+ let tree;
+ const build = {
+ global: buildGlobal,
+ module: buildModule,
+ umd: buildUmd,
+ var: buildVar
+ }[outputType];
+
+ if (build) {
+ tree = build(allowlist);
+ } else {
+ throw new Error(`Unsupported output type ${outputType}`);
+ }
+
+ return (0, _generator().default)(tree).code;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-ast.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-ast.js
new file mode 100644
index 000000000..61fb2224a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-ast.js
@@ -0,0 +1,46 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformFromAstSync = exports.transformFromAstAsync = exports.transformFromAst = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transformation = require("./transformation");
+
+const transformFromAstRunner = _gensync()(function* (ast, code, opts) {
+ const config = yield* (0, _config.default)(opts);
+ if (config === null) return null;
+ if (!ast) throw new Error("No AST given");
+ return yield* (0, _transformation.run)(config, code, ast);
+});
+
+const transformFromAst = function transformFromAst(ast, code, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ if (callback === undefined) {
+ return transformFromAstRunner.sync(ast, code, opts);
+ }
+
+ transformFromAstRunner.errback(ast, code, opts, callback);
+};
+
+exports.transformFromAst = transformFromAst;
+const transformFromAstSync = transformFromAstRunner.sync;
+exports.transformFromAstSync = transformFromAstSync;
+const transformFromAstAsync = transformFromAstRunner.async;
+exports.transformFromAstAsync = transformFromAstAsync;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file-browser.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file-browser.js
new file mode 100644
index 000000000..3371a1e79
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file-browser.js
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformFile = void 0;
+exports.transformFileAsync = transformFileAsync;
+exports.transformFileSync = transformFileSync;
+
+const transformFile = function transformFile(filename, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ }
+
+ callback(new Error("Transforming files is not supported in browsers"), null);
+};
+
+exports.transformFile = transformFile;
+
+function transformFileSync() {
+ throw new Error("Transforming files is not supported in browsers");
+}
+
+function transformFileAsync() {
+ return Promise.reject(new Error("Transforming files is not supported in browsers"));
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file.js
new file mode 100644
index 000000000..18075fffa
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform-file.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformFileSync = exports.transformFileAsync = exports.transformFile = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transformation = require("./transformation");
+
+var fs = require("./gensync-utils/fs");
+
+({});
+
+const transformFileRunner = _gensync()(function* (filename, opts) {
+ const options = Object.assign({}, opts, {
+ filename
+ });
+ const config = yield* (0, _config.default)(options);
+ if (config === null) return null;
+ const code = yield* fs.readFile(filename, "utf8");
+ return yield* (0, _transformation.run)(config, code);
+});
+
+const transformFile = transformFileRunner.errback;
+exports.transformFile = transformFile;
+const transformFileSync = transformFileRunner.sync;
+exports.transformFileSync = transformFileSync;
+const transformFileAsync = transformFileRunner.async;
+exports.transformFileAsync = transformFileAsync;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform.js
new file mode 100644
index 000000000..538c3edfe
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transform.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformSync = exports.transformAsync = exports.transform = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transformation = require("./transformation");
+
+const transformRunner = _gensync()(function* transform(code, opts) {
+ const config = yield* (0, _config.default)(opts);
+ if (config === null) return null;
+ return yield* (0, _transformation.run)(config, code);
+});
+
+const transform = function transform(code, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ if (callback === undefined) return transformRunner.sync(code, opts);
+ transformRunner.errback(code, opts, callback);
+};
+
+exports.transform = transform;
+const transformSync = transformRunner.sync;
+exports.transformSync = transformSync;
+const transformAsync = transformRunner.async;
+exports.transformAsync = transformAsync;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js
new file mode 100644
index 000000000..a3b0b411a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js
@@ -0,0 +1,94 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loadBlockHoistPlugin;
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _plugin = require("../config/plugin");
+
+let LOADED_PLUGIN;
+
+function loadBlockHoistPlugin() {
+ if (!LOADED_PLUGIN) {
+ LOADED_PLUGIN = new _plugin.default(Object.assign({}, blockHoistPlugin, {
+ visitor: _traverse().default.explode(blockHoistPlugin.visitor)
+ }), {});
+ }
+
+ return LOADED_PLUGIN;
+}
+
+function priority(bodyNode) {
+ const priority = bodyNode == null ? void 0 : bodyNode._blockHoist;
+ if (priority == null) return 1;
+ if (priority === true) return 2;
+ return priority;
+}
+
+function stableSort(body) {
+ const buckets = Object.create(null);
+
+ for (let i = 0; i < body.length; i++) {
+ const n = body[i];
+ const p = priority(n);
+ const bucket = buckets[p] || (buckets[p] = []);
+ bucket.push(n);
+ }
+
+ const keys = Object.keys(buckets).map(k => +k).sort((a, b) => b - a);
+ let index = 0;
+
+ for (const key of keys) {
+ const bucket = buckets[key];
+
+ for (const n of bucket) {
+ body[index++] = n;
+ }
+ }
+
+ return body;
+}
+
+const blockHoistPlugin = {
+ name: "internal.blockHoist",
+ visitor: {
+ Block: {
+ exit({
+ node
+ }) {
+ const {
+ body
+ } = node;
+ let max = Math.pow(2, 30) - 1;
+ let hasChange = false;
+
+ for (let i = 0; i < body.length; i++) {
+ const n = body[i];
+ const p = priority(n);
+
+ if (p > max) {
+ hasChange = true;
+ break;
+ }
+
+ max = p;
+ }
+
+ if (!hasChange) return;
+ node.body = stableSort(body.slice());
+ }
+
+ }
+ }
+};
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/file.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/file.js
new file mode 100644
index 000000000..3728ec56c
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/file.js
@@ -0,0 +1,254 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+function helpers() {
+ const data = require("@babel/helpers");
+
+ helpers = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _codeFrame() {
+ const data = require("@babel/code-frame");
+
+ _codeFrame = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _t() {
+ const data = require("@babel/types");
+
+ _t = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _helperModuleTransforms() {
+ const data = require("@babel/helper-module-transforms");
+
+ _helperModuleTransforms = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _semver() {
+ const data = require("semver");
+
+ _semver = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const {
+ cloneNode,
+ interpreterDirective
+} = _t();
+
+const errorVisitor = {
+ enter(path, state) {
+ const loc = path.node.loc;
+
+ if (loc) {
+ state.loc = loc;
+ path.stop();
+ }
+ }
+
+};
+
+class File {
+ constructor(options, {
+ code,
+ ast,
+ inputMap
+ }) {
+ this._map = new Map();
+ this.opts = void 0;
+ this.declarations = {};
+ this.path = null;
+ this.ast = {};
+ this.scope = void 0;
+ this.metadata = {};
+ this.code = "";
+ this.inputMap = null;
+ this.hub = {
+ file: this,
+ getCode: () => this.code,
+ getScope: () => this.scope,
+ addHelper: this.addHelper.bind(this),
+ buildError: this.buildCodeFrameError.bind(this)
+ };
+ this.opts = options;
+ this.code = code;
+ this.ast = ast;
+ this.inputMap = inputMap;
+ this.path = _traverse().NodePath.get({
+ hub: this.hub,
+ parentPath: null,
+ parent: this.ast,
+ container: this.ast,
+ key: "program"
+ }).setContext();
+ this.scope = this.path.scope;
+ }
+
+ get shebang() {
+ const {
+ interpreter
+ } = this.path.node;
+ return interpreter ? interpreter.value : "";
+ }
+
+ set shebang(value) {
+ if (value) {
+ this.path.get("interpreter").replaceWith(interpreterDirective(value));
+ } else {
+ this.path.get("interpreter").remove();
+ }
+ }
+
+ set(key, val) {
+ if (key === "helpersNamespace") {
+ throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'.");
+ }
+
+ this._map.set(key, val);
+ }
+
+ get(key) {
+ return this._map.get(key);
+ }
+
+ has(key) {
+ return this._map.has(key);
+ }
+
+ getModuleName() {
+ return (0, _helperModuleTransforms().getModuleName)(this.opts, this.opts);
+ }
+
+ addImport() {
+ throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'.");
+ }
+
+ availableHelper(name, versionRange) {
+ let minVersion;
+
+ try {
+ minVersion = helpers().minVersion(name);
+ } catch (err) {
+ if (err.code !== "BABEL_HELPER_UNKNOWN") throw err;
+ return false;
+ }
+
+ if (typeof versionRange !== "string") return true;
+ if (_semver().valid(versionRange)) versionRange = `^${versionRange}`;
+ return !_semver().intersects(`<${minVersion}`, versionRange) && !_semver().intersects(`>=8.0.0`, versionRange);
+ }
+
+ addHelper(name) {
+ const declar = this.declarations[name];
+ if (declar) return cloneNode(declar);
+ const generator = this.get("helperGenerator");
+
+ if (generator) {
+ const res = generator(name);
+ if (res) return res;
+ }
+
+ helpers().ensure(name, File);
+ const uid = this.declarations[name] = this.scope.generateUidIdentifier(name);
+ const dependencies = {};
+
+ for (const dep of helpers().getDependencies(name)) {
+ dependencies[dep] = this.addHelper(dep);
+ }
+
+ const {
+ nodes,
+ globals
+ } = helpers().get(name, dep => dependencies[dep], uid, Object.keys(this.scope.getAllBindings()));
+ globals.forEach(name => {
+ if (this.path.scope.hasBinding(name, true)) {
+ this.path.scope.rename(name);
+ }
+ });
+ nodes.forEach(node => {
+ node._compact = true;
+ });
+ this.path.unshiftContainer("body", nodes);
+ this.path.get("body").forEach(path => {
+ if (nodes.indexOf(path.node) === -1) return;
+ if (path.isVariableDeclaration()) this.scope.registerDeclaration(path);
+ });
+ return uid;
+ }
+
+ addTemplateObject() {
+ throw new Error("This function has been moved into the template literal transform itself.");
+ }
+
+ buildCodeFrameError(node, msg, _Error = SyntaxError) {
+ let loc = node && (node.loc || node._loc);
+
+ if (!loc && node) {
+ const state = {
+ loc: null
+ };
+ (0, _traverse().default)(node, errorVisitor, this.scope, state);
+ loc = state.loc;
+ let txt = "This is an error on an internal node. Probably an internal error.";
+ if (loc) txt += " Location has been estimated.";
+ msg += ` (${txt})`;
+ }
+
+ if (loc) {
+ const {
+ highlightCode = true
+ } = this.opts;
+ msg += "\n" + (0, _codeFrame().codeFrameColumns)(this.code, {
+ start: {
+ line: loc.start.line,
+ column: loc.start.column + 1
+ },
+ end: loc.end && loc.start.line === loc.end.line ? {
+ line: loc.end.line,
+ column: loc.end.column + 1
+ } : undefined
+ }, {
+ highlightCode
+ });
+ }
+
+ return new _Error(msg);
+ }
+
+}
+
+exports.default = File;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/generate.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/generate.js
new file mode 100644
index 000000000..def05ca4d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/generate.js
@@ -0,0 +1,90 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = generateCode;
+
+function _convertSourceMap() {
+ const data = require("convert-source-map");
+
+ _convertSourceMap = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _generator() {
+ const data = require("@babel/generator");
+
+ _generator = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _mergeMap = require("./merge-map");
+
+function generateCode(pluginPasses, file) {
+ const {
+ opts,
+ ast,
+ code,
+ inputMap
+ } = file;
+ const {
+ generatorOpts
+ } = opts;
+ const results = [];
+
+ for (const plugins of pluginPasses) {
+ for (const plugin of plugins) {
+ const {
+ generatorOverride
+ } = plugin;
+
+ if (generatorOverride) {
+ const result = generatorOverride(ast, generatorOpts, code, _generator().default);
+ if (result !== undefined) results.push(result);
+ }
+ }
+ }
+
+ let result;
+
+ if (results.length === 0) {
+ result = (0, _generator().default)(ast, generatorOpts, code);
+ } else if (results.length === 1) {
+ result = results[0];
+
+ if (typeof result.then === "function") {
+ throw new Error(`You appear to be using an async codegen plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`);
+ }
+ } else {
+ throw new Error("More than one plugin attempted to override codegen.");
+ }
+
+ let {
+ code: outputCode,
+ map: outputMap
+ } = result;
+
+ if (outputMap && inputMap) {
+ outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap, generatorOpts.sourceFileName);
+ }
+
+ if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") {
+ outputCode += "\n" + _convertSourceMap().fromObject(outputMap).toComment();
+ }
+
+ if (opts.sourceMaps === "inline") {
+ outputMap = null;
+ }
+
+ return {
+ outputCode,
+ outputMap
+ };
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/merge-map.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/merge-map.js
new file mode 100644
index 000000000..af1da8902
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/file/merge-map.js
@@ -0,0 +1,43 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = mergeSourceMap;
+
+function _remapping() {
+ const data = require("@ampproject/remapping");
+
+ _remapping = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function mergeSourceMap(inputMap, map, sourceFileName) {
+ const source = sourceFileName.replace(/\\/g, "/");
+ let found = false;
+
+ const result = _remapping()(rootless(map), (s, ctx) => {
+ if (s === source && !found) {
+ found = true;
+ ctx.source = "";
+ return rootless(inputMap);
+ }
+
+ return null;
+ });
+
+ if (typeof inputMap.sourceRoot === "string") {
+ result.sourceRoot = inputMap.sourceRoot;
+ }
+
+ return Object.assign({}, result);
+}
+
+function rootless(map) {
+ return Object.assign({}, map, {
+ sourceRoot: null
+ });
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/index.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/index.js
new file mode 100644
index 000000000..1f8422e2d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/index.js
@@ -0,0 +1,127 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.run = run;
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _pluginPass = require("./plugin-pass");
+
+var _blockHoistPlugin = require("./block-hoist-plugin");
+
+var _normalizeOpts = require("./normalize-opts");
+
+var _normalizeFile = require("./normalize-file");
+
+var _generate = require("./file/generate");
+
+var _deepArray = require("../config/helpers/deep-array");
+
+function* run(config, code, ast) {
+ const file = yield* (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code, ast);
+ const opts = file.opts;
+
+ try {
+ yield* transformFile(file, config.passes);
+ } catch (e) {
+ var _opts$filename;
+
+ e.message = `${(_opts$filename = opts.filename) != null ? _opts$filename : "unknown"}: ${e.message}`;
+
+ if (!e.code) {
+ e.code = "BABEL_TRANSFORM_ERROR";
+ }
+
+ throw e;
+ }
+
+ let outputCode, outputMap;
+
+ try {
+ if (opts.code !== false) {
+ ({
+ outputCode,
+ outputMap
+ } = (0, _generate.default)(config.passes, file));
+ }
+ } catch (e) {
+ var _opts$filename2;
+
+ e.message = `${(_opts$filename2 = opts.filename) != null ? _opts$filename2 : "unknown"}: ${e.message}`;
+
+ if (!e.code) {
+ e.code = "BABEL_GENERATE_ERROR";
+ }
+
+ throw e;
+ }
+
+ return {
+ metadata: file.metadata,
+ options: opts,
+ ast: opts.ast === true ? file.ast : null,
+ code: outputCode === undefined ? null : outputCode,
+ map: outputMap === undefined ? null : outputMap,
+ sourceType: file.ast.program.sourceType,
+ externalDependencies: (0, _deepArray.flattenToSet)(config.externalDependencies)
+ };
+}
+
+function* transformFile(file, pluginPasses) {
+ for (const pluginPairs of pluginPasses) {
+ const passPairs = [];
+ const passes = [];
+ const visitors = [];
+
+ for (const plugin of pluginPairs.concat([(0, _blockHoistPlugin.default)()])) {
+ const pass = new _pluginPass.default(file, plugin.key, plugin.options);
+ passPairs.push([plugin, pass]);
+ passes.push(pass);
+ visitors.push(plugin.visitor);
+ }
+
+ for (const [plugin, pass] of passPairs) {
+ const fn = plugin.pre;
+
+ if (fn) {
+ const result = fn.call(pass, file);
+ yield* [];
+
+ if (isThenable(result)) {
+ throw new Error(`You appear to be using an plugin with an async .pre, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);
+ }
+ }
+ }
+
+ const visitor = _traverse().default.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod);
+
+ (0, _traverse().default)(file.ast, visitor, file.scope);
+
+ for (const [plugin, pass] of passPairs) {
+ const fn = plugin.post;
+
+ if (fn) {
+ const result = fn.call(pass, file);
+ yield* [];
+
+ if (isThenable(result)) {
+ throw new Error(`You appear to be using an plugin with an async .post, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);
+ }
+ }
+ }
+ }
+}
+
+function isThenable(val) {
+ return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-file.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-file.js
new file mode 100644
index 000000000..dc434ed8c
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-file.js
@@ -0,0 +1,167 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = normalizeFile;
+
+function _fs() {
+ const data = require("fs");
+
+ _fs = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _t() {
+ const data = require("@babel/types");
+
+ _t = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _convertSourceMap() {
+ const data = require("convert-source-map");
+
+ _convertSourceMap = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _file = require("./file/file");
+
+var _parser = require("../parser");
+
+var _cloneDeep = require("./util/clone-deep");
+
+const {
+ file,
+ traverseFast
+} = _t();
+
+const debug = _debug()("babel:transform:file");
+
+const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1000000;
+
+function* normalizeFile(pluginPasses, options, code, ast) {
+ code = `${code || ""}`;
+
+ if (ast) {
+ if (ast.type === "Program") {
+ ast = file(ast, [], []);
+ } else if (ast.type !== "File") {
+ throw new Error("AST root must be a Program or File node");
+ }
+
+ if (options.cloneInputAst) {
+ ast = (0, _cloneDeep.default)(ast);
+ }
+ } else {
+ ast = yield* (0, _parser.default)(pluginPasses, options, code);
+ }
+
+ let inputMap = null;
+
+ if (options.inputSourceMap !== false) {
+ if (typeof options.inputSourceMap === "object") {
+ inputMap = _convertSourceMap().fromObject(options.inputSourceMap);
+ }
+
+ if (!inputMap) {
+ const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast);
+
+ if (lastComment) {
+ try {
+ inputMap = _convertSourceMap().fromComment(lastComment);
+ } catch (err) {
+ debug("discarding unknown inline input sourcemap", err);
+ }
+ }
+ }
+
+ if (!inputMap) {
+ const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast);
+
+ if (typeof options.filename === "string" && lastComment) {
+ try {
+ const match = EXTERNAL_SOURCEMAP_REGEX.exec(lastComment);
+
+ const inputMapContent = _fs().readFileSync(_path().resolve(_path().dirname(options.filename), match[1]));
+
+ if (inputMapContent.length > LARGE_INPUT_SOURCEMAP_THRESHOLD) {
+ debug("skip merging input map > 1 MB");
+ } else {
+ inputMap = _convertSourceMap().fromJSON(inputMapContent);
+ }
+ } catch (err) {
+ debug("discarding unknown file input sourcemap", err);
+ }
+ } else if (lastComment) {
+ debug("discarding un-loadable file input sourcemap");
+ }
+ }
+ }
+
+ return new _file.default(options, {
+ code,
+ ast,
+ inputMap
+ });
+}
+
+const INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/;
+const EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=([^\s'"`]+)[ \t]*$/;
+
+function extractCommentsFromList(regex, comments, lastComment) {
+ if (comments) {
+ comments = comments.filter(({
+ value
+ }) => {
+ if (regex.test(value)) {
+ lastComment = value;
+ return false;
+ }
+
+ return true;
+ });
+ }
+
+ return [comments, lastComment];
+}
+
+function extractComments(regex, ast) {
+ let lastComment = null;
+ traverseFast(ast, node => {
+ [node.leadingComments, lastComment] = extractCommentsFromList(regex, node.leadingComments, lastComment);
+ [node.innerComments, lastComment] = extractCommentsFromList(regex, node.innerComments, lastComment);
+ [node.trailingComments, lastComment] = extractCommentsFromList(regex, node.trailingComments, lastComment);
+ });
+ return lastComment;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-opts.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-opts.js
new file mode 100644
index 000000000..6e2cb000c
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/normalize-opts.js
@@ -0,0 +1,62 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = normalizeOptions;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function normalizeOptions(config) {
+ const {
+ filename,
+ cwd,
+ filenameRelative = typeof filename === "string" ? _path().relative(cwd, filename) : "unknown",
+ sourceType = "module",
+ inputSourceMap,
+ sourceMaps = !!inputSourceMap,
+ sourceRoot = config.options.moduleRoot,
+ sourceFileName = _path().basename(filenameRelative),
+ comments = true,
+ compact = "auto"
+ } = config.options;
+ const opts = config.options;
+ const options = Object.assign({}, opts, {
+ parserOpts: Object.assign({
+ sourceType: _path().extname(filenameRelative) === ".mjs" ? "module" : sourceType,
+ sourceFileName: filename,
+ plugins: []
+ }, opts.parserOpts),
+ generatorOpts: Object.assign({
+ filename,
+ auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
+ auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
+ retainLines: opts.retainLines,
+ comments,
+ shouldPrintComment: opts.shouldPrintComment,
+ compact,
+ minified: opts.minified,
+ sourceMaps,
+ sourceRoot,
+ sourceFileName
+ }, opts.generatorOpts)
+ });
+
+ for (const plugins of config.passes) {
+ for (const plugin of plugins) {
+ if (plugin.manipulateOptions) {
+ plugin.manipulateOptions(options, options.parserOpts);
+ }
+ }
+ }
+
+ return options;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/plugin-pass.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/plugin-pass.js
new file mode 100644
index 000000000..920558a05
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/plugin-pass.js
@@ -0,0 +1,54 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+class PluginPass {
+ constructor(file, key, options) {
+ this._map = new Map();
+ this.key = void 0;
+ this.file = void 0;
+ this.opts = void 0;
+ this.cwd = void 0;
+ this.filename = void 0;
+ this.key = key;
+ this.file = file;
+ this.opts = options || {};
+ this.cwd = file.opts.cwd;
+ this.filename = file.opts.filename;
+ }
+
+ set(key, val) {
+ this._map.set(key, val);
+ }
+
+ get(key) {
+ return this._map.get(key);
+ }
+
+ availableHelper(name, versionRange) {
+ return this.file.availableHelper(name, versionRange);
+ }
+
+ addHelper(name) {
+ return this.file.addHelper(name);
+ }
+
+ addImport() {
+ return this.file.addImport();
+ }
+
+ buildCodeFrameError(node, msg, _Error) {
+ return this.file.buildCodeFrameError(node, msg, _Error);
+ }
+
+}
+
+exports.default = PluginPass;
+{
+ PluginPass.prototype.getModuleName = function getModuleName() {
+ return this.file.getModuleName();
+ };
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js
new file mode 100644
index 000000000..a42de824d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+const serialized = "$$ babel internal serialized type" + Math.random();
+
+function serialize(key, value) {
+ if (typeof value !== "bigint") return value;
+ return {
+ [serialized]: "BigInt",
+ value: value.toString()
+ };
+}
+
+function revive(key, value) {
+ if (!value || typeof value !== "object") return value;
+ if (value[serialized] !== "BigInt") return value;
+ return BigInt(value.value);
+}
+
+function _default(value) {
+ return JSON.parse(JSON.stringify(value, serialize), revive);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep.js
new file mode 100644
index 000000000..35fbd093e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/transformation/util/clone-deep.js
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+function _v() {
+ const data = require("v8");
+
+ _v = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _cloneDeepBrowser = require("./clone-deep-browser");
+
+function _default(value) {
+ if (_v().deserialize && _v().serialize) {
+ return _v().deserialize(_v().serialize(value));
+ }
+
+ return (0, _cloneDeepBrowser.default)(value);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/lib/vendor/import-meta-resolve.js b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/vendor/import-meta-resolve.js
new file mode 100644
index 000000000..ce8d403f2
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/lib/vendor/import-meta-resolve.js
@@ -0,0 +1,3312 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.moduleResolve = moduleResolve;
+exports.resolve = resolve;
+
+function _url() {
+ const data = require("url");
+
+ _url = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _fs() {
+ const data = _interopRequireWildcard(require("fs"), true);
+
+ _fs = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _assert() {
+ const data = require("assert");
+
+ _assert = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _util() {
+ const data = require("util");
+
+ _util = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
+
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
+
+function createCommonjsModule(fn) {
+ var module = {
+ exports: {}
+ };
+ return fn(module, module.exports), module.exports;
+}
+
+const SEMVER_SPEC_VERSION = '2.0.0';
+const MAX_LENGTH$2 = 256;
+const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || 9007199254740991;
+const MAX_SAFE_COMPONENT_LENGTH = 16;
+var constants = {
+ SEMVER_SPEC_VERSION,
+ MAX_LENGTH: MAX_LENGTH$2,
+ MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
+ MAX_SAFE_COMPONENT_LENGTH
+};
+const debug = typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error('SEMVER', ...args) : () => {};
+var debug_1 = debug;
+var re_1 = createCommonjsModule(function (module, exports) {
+ const {
+ MAX_SAFE_COMPONENT_LENGTH
+ } = constants;
+ exports = module.exports = {};
+ const re = exports.re = [];
+ const src = exports.src = [];
+ const t = exports.t = {};
+ let R = 0;
+
+ const createToken = (name, value, isGlobal) => {
+ const index = R++;
+ debug_1(index, value);
+ t[name] = index;
+ src[index] = value;
+ re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
+ };
+
+ createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*');
+ createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+');
+ createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*');
+ createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + `(${src[t.NUMERICIDENTIFIER]})\\.` + `(${src[t.NUMERICIDENTIFIER]})`);
+ createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + `(${src[t.NUMERICIDENTIFIERLOOSE]})`);
+ createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`);
+ createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`);
+ createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
+ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
+ createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+');
+ createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);
+ createToken('FULLPLAIN', `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);
+ createToken('FULL', `^${src[t.FULLPLAIN]}$`);
+ createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);
+ createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`);
+ createToken('GTLT', '((?:<|>)?=?)');
+ createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
+ createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);
+ createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + `(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?` + `)?)?`);
+ createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + `(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?` + `)?)?`);
+ createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
+ createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
+ createToken('COERCE', `${'(^|[^\\d])' + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + `(?:$|[^\\d])`);
+ createToken('COERCERTL', src[t.COERCE], true);
+ createToken('LONETILDE', '(?:~>?)');
+ createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true);
+ exports.tildeTrimReplace = '$1~';
+ createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
+ createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
+ createToken('LONECARET', '(?:\\^)');
+ createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true);
+ exports.caretTrimReplace = '$1^';
+ createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
+ createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
+ createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
+ createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
+ createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
+ exports.comparatorTrimReplace = '$1$2$3';
+ createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAIN]})` + `\\s*$`);
+ createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAINLOOSE]})` + `\\s*$`);
+ createToken('STAR', '(<|>)?=?\\s*\\*');
+ createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$');
+ createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$');
+});
+const opts = ['includePrerelease', 'loose', 'rtl'];
+
+const parseOptions = options => !options ? {} : typeof options !== 'object' ? {
+ loose: true
+} : opts.filter(k => options[k]).reduce((options, k) => {
+ options[k] = true;
+ return options;
+}, {});
+
+var parseOptions_1 = parseOptions;
+const numeric = /^[0-9]+$/;
+
+const compareIdentifiers$1 = (a, b) => {
+ const anum = numeric.test(a);
+ const bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
+};
+
+const rcompareIdentifiers = (a, b) => compareIdentifiers$1(b, a);
+
+var identifiers = {
+ compareIdentifiers: compareIdentifiers$1,
+ rcompareIdentifiers
+};
+const {
+ MAX_LENGTH: MAX_LENGTH$1,
+ MAX_SAFE_INTEGER
+} = constants;
+const {
+ re: re$4,
+ t: t$4
+} = re_1;
+const {
+ compareIdentifiers
+} = identifiers;
+
+class SemVer {
+ constructor(version, options) {
+ options = parseOptions_1(options);
+
+ if (version instanceof SemVer) {
+ if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {
+ return version;
+ } else {
+ version = version.version;
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError(`Invalid Version: ${version}`);
+ }
+
+ if (version.length > MAX_LENGTH$1) {
+ throw new TypeError(`version is longer than ${MAX_LENGTH$1} characters`);
+ }
+
+ debug_1('SemVer', version, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease;
+ const m = version.trim().match(options.loose ? re$4[t$4.LOOSE] : re$4[t$4.FULL]);
+
+ if (!m) {
+ throw new TypeError(`Invalid Version: ${version}`);
+ }
+
+ this.raw = version;
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version');
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version');
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version');
+ }
+
+ if (!m[4]) {
+ this.prerelease = [];
+ } else {
+ this.prerelease = m[4].split('.').map(id => {
+ if (/^[0-9]+$/.test(id)) {
+ const num = +id;
+
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num;
+ }
+ }
+
+ return id;
+ });
+ }
+
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+ }
+
+ format() {
+ this.version = `${this.major}.${this.minor}.${this.patch}`;
+
+ if (this.prerelease.length) {
+ this.version += `-${this.prerelease.join('.')}`;
+ }
+
+ return this.version;
+ }
+
+ toString() {
+ return this.version;
+ }
+
+ compare(other) {
+ debug_1('SemVer.compare', this.version, this.options, other);
+
+ if (!(other instanceof SemVer)) {
+ if (typeof other === 'string' && other === this.version) {
+ return 0;
+ }
+
+ other = new SemVer(other, this.options);
+ }
+
+ if (other.version === this.version) {
+ return 0;
+ }
+
+ return this.compareMain(other) || this.comparePre(other);
+ }
+
+ compareMain(other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
+ }
+
+ comparePre(other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1;
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1;
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0;
+ }
+
+ let i = 0;
+
+ do {
+ const a = this.prerelease[i];
+ const b = other.prerelease[i];
+ debug_1('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ }
+
+ compareBuild(other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ let i = 0;
+
+ do {
+ const a = this.build[i];
+ const b = other.build[i];
+ debug_1('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ }
+
+ inc(release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'prepatch':
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier);
+ }
+
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
+ this.major++;
+ }
+
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'minor':
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++;
+ }
+
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'patch':
+ if (this.prerelease.length === 0) {
+ this.patch++;
+ }
+
+ this.prerelease = [];
+ break;
+
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0];
+ } else {
+ let i = this.prerelease.length;
+
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+
+ if (i === -1) {
+ this.prerelease.push(0);
+ }
+ }
+
+ if (identifier) {
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0];
+ }
+ } else {
+ this.prerelease = [identifier, 0];
+ }
+ }
+
+ break;
+
+ default:
+ throw new Error(`invalid increment argument: ${release}`);
+ }
+
+ this.format();
+ this.raw = this.version;
+ return this;
+ }
+
+}
+
+var semver$1 = SemVer;
+const {
+ MAX_LENGTH
+} = constants;
+const {
+ re: re$3,
+ t: t$3
+} = re_1;
+
+const parse = (version, options) => {
+ options = parseOptions_1(options);
+
+ if (version instanceof semver$1) {
+ return version;
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null;
+ }
+
+ const r = options.loose ? re$3[t$3.LOOSE] : re$3[t$3.FULL];
+
+ if (!r.test(version)) {
+ return null;
+ }
+
+ try {
+ return new semver$1(version, options);
+ } catch (er) {
+ return null;
+ }
+};
+
+var parse_1 = parse;
+
+const valid$1 = (version, options) => {
+ const v = parse_1(version, options);
+ return v ? v.version : null;
+};
+
+var valid_1 = valid$1;
+
+const clean = (version, options) => {
+ const s = parse_1(version.trim().replace(/^[=v]+/, ''), options);
+ return s ? s.version : null;
+};
+
+var clean_1 = clean;
+
+const inc = (version, release, options, identifier) => {
+ if (typeof options === 'string') {
+ identifier = options;
+ options = undefined;
+ }
+
+ try {
+ return new semver$1(version, options).inc(release, identifier).version;
+ } catch (er) {
+ return null;
+ }
+};
+
+var inc_1 = inc;
+
+const compare = (a, b, loose) => new semver$1(a, loose).compare(new semver$1(b, loose));
+
+var compare_1 = compare;
+
+const eq = (a, b, loose) => compare_1(a, b, loose) === 0;
+
+var eq_1 = eq;
+
+const diff = (version1, version2) => {
+ if (eq_1(version1, version2)) {
+ return null;
+ } else {
+ const v1 = parse_1(version1);
+ const v2 = parse_1(version2);
+ const hasPre = v1.prerelease.length || v2.prerelease.length;
+ const prefix = hasPre ? 'pre' : '';
+ const defaultResult = hasPre ? 'prerelease' : '';
+
+ for (const key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key;
+ }
+ }
+ }
+
+ return defaultResult;
+ }
+};
+
+var diff_1 = diff;
+
+const major = (a, loose) => new semver$1(a, loose).major;
+
+var major_1 = major;
+
+const minor = (a, loose) => new semver$1(a, loose).minor;
+
+var minor_1 = minor;
+
+const patch = (a, loose) => new semver$1(a, loose).patch;
+
+var patch_1 = patch;
+
+const prerelease = (version, options) => {
+ const parsed = parse_1(version, options);
+ return parsed && parsed.prerelease.length ? parsed.prerelease : null;
+};
+
+var prerelease_1 = prerelease;
+
+const rcompare = (a, b, loose) => compare_1(b, a, loose);
+
+var rcompare_1 = rcompare;
+
+const compareLoose = (a, b) => compare_1(a, b, true);
+
+var compareLoose_1 = compareLoose;
+
+const compareBuild = (a, b, loose) => {
+ const versionA = new semver$1(a, loose);
+ const versionB = new semver$1(b, loose);
+ return versionA.compare(versionB) || versionA.compareBuild(versionB);
+};
+
+var compareBuild_1 = compareBuild;
+
+const sort = (list, loose) => list.sort((a, b) => compareBuild_1(a, b, loose));
+
+var sort_1 = sort;
+
+const rsort = (list, loose) => list.sort((a, b) => compareBuild_1(b, a, loose));
+
+var rsort_1 = rsort;
+
+const gt = (a, b, loose) => compare_1(a, b, loose) > 0;
+
+var gt_1 = gt;
+
+const lt = (a, b, loose) => compare_1(a, b, loose) < 0;
+
+var lt_1 = lt;
+
+const neq = (a, b, loose) => compare_1(a, b, loose) !== 0;
+
+var neq_1 = neq;
+
+const gte = (a, b, loose) => compare_1(a, b, loose) >= 0;
+
+var gte_1 = gte;
+
+const lte = (a, b, loose) => compare_1(a, b, loose) <= 0;
+
+var lte_1 = lte;
+
+const cmp = (a, op, b, loose) => {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ return a === b;
+
+ case '!==':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ return a !== b;
+
+ case '':
+ case '=':
+ case '==':
+ return eq_1(a, b, loose);
+
+ case '!=':
+ return neq_1(a, b, loose);
+
+ case '>':
+ return gt_1(a, b, loose);
+
+ case '>=':
+ return gte_1(a, b, loose);
+
+ case '<':
+ return lt_1(a, b, loose);
+
+ case '<=':
+ return lte_1(a, b, loose);
+
+ default:
+ throw new TypeError(`Invalid operator: ${op}`);
+ }
+};
+
+var cmp_1 = cmp;
+const {
+ re: re$2,
+ t: t$2
+} = re_1;
+
+const coerce = (version, options) => {
+ if (version instanceof semver$1) {
+ return version;
+ }
+
+ if (typeof version === 'number') {
+ version = String(version);
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ options = options || {};
+ let match = null;
+
+ if (!options.rtl) {
+ match = version.match(re$2[t$2.COERCE]);
+ } else {
+ let next;
+
+ while ((next = re$2[t$2.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
+ if (!match || next.index + next[0].length !== match.index + match[0].length) {
+ match = next;
+ }
+
+ re$2[t$2.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
+ }
+
+ re$2[t$2.COERCERTL].lastIndex = -1;
+ }
+
+ if (match === null) return null;
+ return parse_1(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options);
+};
+
+var coerce_1 = coerce;
+
+var iterator = function (Yallist) {
+ Yallist.prototype[Symbol.iterator] = function* () {
+ for (let walker = this.head; walker; walker = walker.next) {
+ yield walker.value;
+ }
+ };
+};
+
+var yallist = Yallist;
+Yallist.Node = Node;
+Yallist.create = Yallist;
+
+function Yallist(list) {
+ var self = this;
+
+ if (!(self instanceof Yallist)) {
+ self = new Yallist();
+ }
+
+ self.tail = null;
+ self.head = null;
+ self.length = 0;
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item);
+ });
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i]);
+ }
+ }
+
+ return self;
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list');
+ }
+
+ var next = node.next;
+ var prev = node.prev;
+
+ if (next) {
+ next.prev = prev;
+ }
+
+ if (prev) {
+ prev.next = next;
+ }
+
+ if (node === this.head) {
+ this.head = next;
+ }
+
+ if (node === this.tail) {
+ this.tail = prev;
+ }
+
+ node.list.length--;
+ node.next = null;
+ node.prev = null;
+ node.list = null;
+ return next;
+};
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return;
+ }
+
+ if (node.list) {
+ node.list.removeNode(node);
+ }
+
+ var head = this.head;
+ node.list = this;
+ node.next = head;
+
+ if (head) {
+ head.prev = node;
+ }
+
+ this.head = node;
+
+ if (!this.tail) {
+ this.tail = node;
+ }
+
+ this.length++;
+};
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return;
+ }
+
+ if (node.list) {
+ node.list.removeNode(node);
+ }
+
+ var tail = this.tail;
+ node.list = this;
+ node.prev = tail;
+
+ if (tail) {
+ tail.next = node;
+ }
+
+ this.tail = node;
+
+ if (!this.head) {
+ this.head = node;
+ }
+
+ this.length++;
+};
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i]);
+ }
+
+ return this.length;
+};
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i]);
+ }
+
+ return this.length;
+};
+
+Yallist.prototype.pop = function () {
+ if (!this.tail) {
+ return undefined;
+ }
+
+ var res = this.tail.value;
+ this.tail = this.tail.prev;
+
+ if (this.tail) {
+ this.tail.next = null;
+ } else {
+ this.head = null;
+ }
+
+ this.length--;
+ return res;
+};
+
+Yallist.prototype.shift = function () {
+ if (!this.head) {
+ return undefined;
+ }
+
+ var res = this.head.value;
+ this.head = this.head.next;
+
+ if (this.head) {
+ this.head.prev = null;
+ } else {
+ this.tail = null;
+ }
+
+ this.length--;
+ return res;
+};
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this);
+ walker = walker.next;
+ }
+};
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this);
+ walker = walker.prev;
+ }
+};
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ walker = walker.next;
+ }
+
+ if (i === n && walker !== null) {
+ return walker.value;
+ }
+};
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ walker = walker.prev;
+ }
+
+ if (i === n && walker !== null) {
+ return walker.value;
+ }
+};
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this;
+ var res = new Yallist();
+
+ for (var walker = this.head; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this));
+ walker = walker.next;
+ }
+
+ return res;
+};
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this;
+ var res = new Yallist();
+
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this));
+ walker = walker.prev;
+ }
+
+ return res;
+};
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc;
+ var walker = this.head;
+
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.head) {
+ walker = this.head.next;
+ acc = this.head.value;
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value');
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i);
+ walker = walker.next;
+ }
+
+ return acc;
+};
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc;
+ var walker = this.tail;
+
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.tail) {
+ walker = this.tail.prev;
+ acc = this.tail.value;
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value');
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i);
+ walker = walker.prev;
+ }
+
+ return acc;
+};
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length);
+
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value;
+ walker = walker.next;
+ }
+
+ return arr;
+};
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length);
+
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value;
+ walker = walker.prev;
+ }
+
+ return arr;
+};
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length;
+
+ if (to < 0) {
+ to += this.length;
+ }
+
+ from = from || 0;
+
+ if (from < 0) {
+ from += this.length;
+ }
+
+ var ret = new Yallist();
+
+ if (to < from || to < 0) {
+ return ret;
+ }
+
+ if (from < 0) {
+ from = 0;
+ }
+
+ if (to > this.length) {
+ to = this.length;
+ }
+
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next;
+ }
+
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value);
+ }
+
+ return ret;
+};
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length;
+
+ if (to < 0) {
+ to += this.length;
+ }
+
+ from = from || 0;
+
+ if (from < 0) {
+ from += this.length;
+ }
+
+ var ret = new Yallist();
+
+ if (to < from || to < 0) {
+ return ret;
+ }
+
+ if (from < 0) {
+ from = 0;
+ }
+
+ if (to > this.length) {
+ to = this.length;
+ }
+
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev;
+ }
+
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value);
+ }
+
+ return ret;
+};
+
+Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
+ if (start > this.length) {
+ start = this.length - 1;
+ }
+
+ if (start < 0) {
+ start = this.length + start;
+ }
+
+ for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
+ walker = walker.next;
+ }
+
+ var ret = [];
+
+ for (var i = 0; walker && i < deleteCount; i++) {
+ ret.push(walker.value);
+ walker = this.removeNode(walker);
+ }
+
+ if (walker === null) {
+ walker = this.tail;
+ }
+
+ if (walker !== this.head && walker !== this.tail) {
+ walker = walker.prev;
+ }
+
+ for (var i = 0; i < nodes.length; i++) {
+ walker = insert(this, walker, nodes[i]);
+ }
+
+ return ret;
+};
+
+Yallist.prototype.reverse = function () {
+ var head = this.head;
+ var tail = this.tail;
+
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev;
+ walker.prev = walker.next;
+ walker.next = p;
+ }
+
+ this.head = tail;
+ this.tail = head;
+ return this;
+};
+
+function insert(self, node, value) {
+ var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);
+
+ if (inserted.next === null) {
+ self.tail = inserted;
+ }
+
+ if (inserted.prev === null) {
+ self.head = inserted;
+ }
+
+ self.length++;
+ return inserted;
+}
+
+function push(self, item) {
+ self.tail = new Node(item, self.tail, null, self);
+
+ if (!self.head) {
+ self.head = self.tail;
+ }
+
+ self.length++;
+}
+
+function unshift(self, item) {
+ self.head = new Node(item, null, self.head, self);
+
+ if (!self.tail) {
+ self.tail = self.head;
+ }
+
+ self.length++;
+}
+
+function Node(value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list);
+ }
+
+ this.list = list;
+ this.value = value;
+
+ if (prev) {
+ prev.next = this;
+ this.prev = prev;
+ } else {
+ this.prev = null;
+ }
+
+ if (next) {
+ next.prev = this;
+ this.next = next;
+ } else {
+ this.next = null;
+ }
+}
+
+try {
+ iterator(Yallist);
+} catch (er) {}
+
+const MAX = Symbol('max');
+const LENGTH = Symbol('length');
+const LENGTH_CALCULATOR = Symbol('lengthCalculator');
+const ALLOW_STALE = Symbol('allowStale');
+const MAX_AGE = Symbol('maxAge');
+const DISPOSE = Symbol('dispose');
+const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
+const LRU_LIST = Symbol('lruList');
+const CACHE = Symbol('cache');
+const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
+
+const naiveLength = () => 1;
+
+class LRUCache {
+ constructor(options) {
+ if (typeof options === 'number') options = {
+ max: options
+ };
+ if (!options) options = {};
+ if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');
+ this[MAX] = options.max || Infinity;
+ const lc = options.length || naiveLength;
+ this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;
+ this[ALLOW_STALE] = options.stale || false;
+ if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');
+ this[MAX_AGE] = options.maxAge || 0;
+ this[DISPOSE] = options.dispose;
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
+ this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
+ this.reset();
+ }
+
+ set max(mL) {
+ if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');
+ this[MAX] = mL || Infinity;
+ trim(this);
+ }
+
+ get max() {
+ return this[MAX];
+ }
+
+ set allowStale(allowStale) {
+ this[ALLOW_STALE] = !!allowStale;
+ }
+
+ get allowStale() {
+ return this[ALLOW_STALE];
+ }
+
+ set maxAge(mA) {
+ if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');
+ this[MAX_AGE] = mA;
+ trim(this);
+ }
+
+ get maxAge() {
+ return this[MAX_AGE];
+ }
+
+ set lengthCalculator(lC) {
+ if (typeof lC !== 'function') lC = naiveLength;
+
+ if (lC !== this[LENGTH_CALCULATOR]) {
+ this[LENGTH_CALCULATOR] = lC;
+ this[LENGTH] = 0;
+ this[LRU_LIST].forEach(hit => {
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
+ this[LENGTH] += hit.length;
+ });
+ }
+
+ trim(this);
+ }
+
+ get lengthCalculator() {
+ return this[LENGTH_CALCULATOR];
+ }
+
+ get length() {
+ return this[LENGTH];
+ }
+
+ get itemCount() {
+ return this[LRU_LIST].length;
+ }
+
+ rforEach(fn, thisp) {
+ thisp = thisp || this;
+
+ for (let walker = this[LRU_LIST].tail; walker !== null;) {
+ const prev = walker.prev;
+ forEachStep(this, fn, walker, thisp);
+ walker = prev;
+ }
+ }
+
+ forEach(fn, thisp) {
+ thisp = thisp || this;
+
+ for (let walker = this[LRU_LIST].head; walker !== null;) {
+ const next = walker.next;
+ forEachStep(this, fn, walker, thisp);
+ walker = next;
+ }
+ }
+
+ keys() {
+ return this[LRU_LIST].toArray().map(k => k.key);
+ }
+
+ values() {
+ return this[LRU_LIST].toArray().map(k => k.value);
+ }
+
+ reset() {
+ if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
+ this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value));
+ }
+
+ this[CACHE] = new Map();
+ this[LRU_LIST] = new yallist();
+ this[LENGTH] = 0;
+ }
+
+ dump() {
+ return this[LRU_LIST].map(hit => isStale(this, hit) ? false : {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ }).toArray().filter(h => h);
+ }
+
+ dumpLru() {
+ return this[LRU_LIST];
+ }
+
+ set(key, value, maxAge) {
+ maxAge = maxAge || this[MAX_AGE];
+ if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');
+ const now = maxAge ? Date.now() : 0;
+ const len = this[LENGTH_CALCULATOR](value, key);
+
+ if (this[CACHE].has(key)) {
+ if (len > this[MAX]) {
+ del(this, this[CACHE].get(key));
+ return false;
+ }
+
+ const node = this[CACHE].get(key);
+ const item = node.value;
+
+ if (this[DISPOSE]) {
+ if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);
+ }
+
+ item.now = now;
+ item.maxAge = maxAge;
+ item.value = value;
+ this[LENGTH] += len - item.length;
+ item.length = len;
+ this.get(key);
+ trim(this);
+ return true;
+ }
+
+ const hit = new Entry(key, value, len, now, maxAge);
+
+ if (hit.length > this[MAX]) {
+ if (this[DISPOSE]) this[DISPOSE](key, value);
+ return false;
+ }
+
+ this[LENGTH] += hit.length;
+ this[LRU_LIST].unshift(hit);
+ this[CACHE].set(key, this[LRU_LIST].head);
+ trim(this);
+ return true;
+ }
+
+ has(key) {
+ if (!this[CACHE].has(key)) return false;
+ const hit = this[CACHE].get(key).value;
+ return !isStale(this, hit);
+ }
+
+ get(key) {
+ return get(this, key, true);
+ }
+
+ peek(key) {
+ return get(this, key, false);
+ }
+
+ pop() {
+ const node = this[LRU_LIST].tail;
+ if (!node) return null;
+ del(this, node);
+ return node.value;
+ }
+
+ del(key) {
+ del(this, this[CACHE].get(key));
+ }
+
+ load(arr) {
+ this.reset();
+ const now = Date.now();
+
+ for (let l = arr.length - 1; l >= 0; l--) {
+ const hit = arr[l];
+ const expiresAt = hit.e || 0;
+ if (expiresAt === 0) this.set(hit.k, hit.v);else {
+ const maxAge = expiresAt - now;
+
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge);
+ }
+ }
+ }
+ }
+
+ prune() {
+ this[CACHE].forEach((value, key) => get(this, key, false));
+ }
+
+}
+
+const get = (self, key, doUse) => {
+ const node = self[CACHE].get(key);
+
+ if (node) {
+ const hit = node.value;
+
+ if (isStale(self, hit)) {
+ del(self, node);
+ if (!self[ALLOW_STALE]) return undefined;
+ } else {
+ if (doUse) {
+ if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();
+ self[LRU_LIST].unshiftNode(node);
+ }
+ }
+
+ return hit.value;
+ }
+};
+
+const isStale = (self, hit) => {
+ if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;
+ const diff = Date.now() - hit.now;
+ return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];
+};
+
+const trim = self => {
+ if (self[LENGTH] > self[MAX]) {
+ for (let walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
+ const prev = walker.prev;
+ del(self, walker);
+ walker = prev;
+ }
+ }
+};
+
+const del = (self, node) => {
+ if (node) {
+ const hit = node.value;
+ if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);
+ self[LENGTH] -= hit.length;
+ self[CACHE].delete(hit.key);
+ self[LRU_LIST].removeNode(node);
+ }
+};
+
+class Entry {
+ constructor(key, value, length, now, maxAge) {
+ this.key = key;
+ this.value = value;
+ this.length = length;
+ this.now = now;
+ this.maxAge = maxAge || 0;
+ }
+
+}
+
+const forEachStep = (self, fn, node, thisp) => {
+ let hit = node.value;
+
+ if (isStale(self, hit)) {
+ del(self, node);
+ if (!self[ALLOW_STALE]) hit = undefined;
+ }
+
+ if (hit) fn.call(thisp, hit.value, hit.key, self);
+};
+
+var lruCache = LRUCache;
+
+class Range {
+ constructor(range, options) {
+ options = parseOptions_1(options);
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+ return range;
+ } else {
+ return new Range(range.raw, options);
+ }
+ }
+
+ if (range instanceof comparator) {
+ this.raw = range.value;
+ this.set = [[range]];
+ this.format();
+ return this;
+ }
+
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease;
+ this.raw = range;
+ this.set = range.split(/\s*\|\|\s*/).map(range => this.parseRange(range.trim())).filter(c => c.length);
+
+ if (!this.set.length) {
+ throw new TypeError(`Invalid SemVer Range: ${range}`);
+ }
+
+ if (this.set.length > 1) {
+ const first = this.set[0];
+ this.set = this.set.filter(c => !isNullSet(c[0]));
+ if (this.set.length === 0) this.set = [first];else if (this.set.length > 1) {
+ for (const c of this.set) {
+ if (c.length === 1 && isAny(c[0])) {
+ this.set = [c];
+ break;
+ }
+ }
+ }
+ }
+
+ this.format();
+ }
+
+ format() {
+ this.range = this.set.map(comps => {
+ return comps.join(' ').trim();
+ }).join('||').trim();
+ return this.range;
+ }
+
+ toString() {
+ return this.range;
+ }
+
+ parseRange(range) {
+ range = range.trim();
+ const memoOpts = Object.keys(this.options).join(',');
+ const memoKey = `parseRange:${memoOpts}:${range}`;
+ const cached = cache.get(memoKey);
+ if (cached) return cached;
+ const loose = this.options.loose;
+ const hr = loose ? re$1[t$1.HYPHENRANGELOOSE] : re$1[t$1.HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
+ debug_1('hyphen replace', range);
+ range = range.replace(re$1[t$1.COMPARATORTRIM], comparatorTrimReplace);
+ debug_1('comparator trim', range, re$1[t$1.COMPARATORTRIM]);
+ range = range.replace(re$1[t$1.TILDETRIM], tildeTrimReplace);
+ range = range.replace(re$1[t$1.CARETTRIM], caretTrimReplace);
+ range = range.split(/\s+/).join(' ');
+ const compRe = loose ? re$1[t$1.COMPARATORLOOSE] : re$1[t$1.COMPARATOR];
+ const rangeList = range.split(' ').map(comp => parseComparator(comp, this.options)).join(' ').split(/\s+/).map(comp => replaceGTE0(comp, this.options)).filter(this.options.loose ? comp => !!comp.match(compRe) : () => true).map(comp => new comparator(comp, this.options));
+ rangeList.length;
+ const rangeMap = new Map();
+
+ for (const comp of rangeList) {
+ if (isNullSet(comp)) return [comp];
+ rangeMap.set(comp.value, comp);
+ }
+
+ if (rangeMap.size > 1 && rangeMap.has('')) rangeMap.delete('');
+ const result = [...rangeMap.values()];
+ cache.set(memoKey, result);
+ return result;
+ }
+
+ intersects(range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required');
+ }
+
+ return this.set.some(thisComparators => {
+ return isSatisfiable(thisComparators, options) && range.set.some(rangeComparators => {
+ return isSatisfiable(rangeComparators, options) && thisComparators.every(thisComparator => {
+ return rangeComparators.every(rangeComparator => {
+ return thisComparator.intersects(rangeComparator, options);
+ });
+ });
+ });
+ });
+ }
+
+ test(version) {
+ if (!version) {
+ return false;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new semver$1(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ for (let i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+}
+
+var range = Range;
+const cache = new lruCache({
+ max: 1000
+});
+const {
+ re: re$1,
+ t: t$1,
+ comparatorTrimReplace,
+ tildeTrimReplace,
+ caretTrimReplace
+} = re_1;
+
+const isNullSet = c => c.value === '<0.0.0-0';
+
+const isAny = c => c.value === '';
+
+const isSatisfiable = (comparators, options) => {
+ let result = true;
+ const remainingComparators = comparators.slice();
+ let testComparator = remainingComparators.pop();
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(otherComparator => {
+ return testComparator.intersects(otherComparator, options);
+ });
+ testComparator = remainingComparators.pop();
+ }
+
+ return result;
+};
+
+const parseComparator = (comp, options) => {
+ debug_1('comp', comp, options);
+ comp = replaceCarets(comp, options);
+ debug_1('caret', comp);
+ comp = replaceTildes(comp, options);
+ debug_1('tildes', comp);
+ comp = replaceXRanges(comp, options);
+ debug_1('xrange', comp);
+ comp = replaceStars(comp, options);
+ debug_1('stars', comp);
+ return comp;
+};
+
+const isX = id => !id || id.toLowerCase() === 'x' || id === '*';
+
+const replaceTildes = (comp, options) => comp.trim().split(/\s+/).map(comp => {
+ return replaceTilde(comp, options);
+}).join(' ');
+
+const replaceTilde = (comp, options) => {
+ const r = options.loose ? re$1[t$1.TILDELOOSE] : re$1[t$1.TILDE];
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug_1('tilde', comp, _, M, m, p, pr);
+ let ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
+ } else if (isX(p)) {
+ ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
+ } else if (pr) {
+ debug_1('replaceTilde pr', pr);
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
+ } else {
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
+ }
+
+ debug_1('tilde return', ret);
+ return ret;
+ });
+};
+
+const replaceCarets = (comp, options) => comp.trim().split(/\s+/).map(comp => {
+ return replaceCaret(comp, options);
+}).join(' ');
+
+const replaceCaret = (comp, options) => {
+ debug_1('caret', comp, options);
+ const r = options.loose ? re$1[t$1.CARETLOOSE] : re$1[t$1.CARET];
+ const z = options.includePrerelease ? '-0' : '';
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug_1('caret', comp, _, M, m, p, pr);
+ let ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
+ } else {
+ ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
+ }
+ } else if (pr) {
+ debug_1('replaceCaret pr', pr);
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
+ }
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
+ }
+ } else {
+ debug_1('no pr');
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
+ } else {
+ ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
+ }
+ } else {
+ ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
+ }
+ }
+
+ debug_1('caret return', ret);
+ return ret;
+ });
+};
+
+const replaceXRanges = (comp, options) => {
+ debug_1('replaceXRanges', comp, options);
+ return comp.split(/\s+/).map(comp => {
+ return replaceXRange(comp, options);
+ }).join(' ');
+};
+
+const replaceXRange = (comp, options) => {
+ comp = comp.trim();
+ const r = options.loose ? re$1[t$1.XRANGELOOSE] : re$1[t$1.XRANGE];
+ return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
+ debug_1('xRange', comp, ret, gtlt, M, m, p, pr);
+ const xM = isX(M);
+ const xm = xM || isX(m);
+ const xp = xm || isX(p);
+ const anyX = xp;
+
+ if (gtlt === '=' && anyX) {
+ gtlt = '';
+ }
+
+ pr = options.includePrerelease ? '-0' : '';
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ ret = '<0.0.0-0';
+ } else {
+ ret = '*';
+ }
+ } else if (gtlt && anyX) {
+ if (xm) {
+ m = 0;
+ }
+
+ p = 0;
+
+ if (gtlt === '>') {
+ gtlt = '>=';
+
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === '<=') {
+ gtlt = '<';
+
+ if (xm) {
+ M = +M + 1;
+ } else {
+ m = +m + 1;
+ }
+ }
+
+ if (gtlt === '<') pr = '-0';
+ ret = `${gtlt + M}.${m}.${p}${pr}`;
+ } else if (xm) {
+ ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
+ } else if (xp) {
+ ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
+ }
+
+ debug_1('xRange return', ret);
+ return ret;
+ });
+};
+
+const replaceStars = (comp, options) => {
+ debug_1('replaceStars', comp, options);
+ return comp.trim().replace(re$1[t$1.STAR], '');
+};
+
+const replaceGTE0 = (comp, options) => {
+ debug_1('replaceGTE0', comp, options);
+ return comp.trim().replace(re$1[options.includePrerelease ? t$1.GTE0PRE : t$1.GTE0], '');
+};
+
+const hyphenReplace = incPr => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => {
+ if (isX(fM)) {
+ from = '';
+ } else if (isX(fm)) {
+ from = `>=${fM}.0.0${incPr ? '-0' : ''}`;
+ } else if (isX(fp)) {
+ from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`;
+ } else if (fpr) {
+ from = `>=${from}`;
+ } else {
+ from = `>=${from}${incPr ? '-0' : ''}`;
+ }
+
+ if (isX(tM)) {
+ to = '';
+ } else if (isX(tm)) {
+ to = `<${+tM + 1}.0.0-0`;
+ } else if (isX(tp)) {
+ to = `<${tM}.${+tm + 1}.0-0`;
+ } else if (tpr) {
+ to = `<=${tM}.${tm}.${tp}-${tpr}`;
+ } else if (incPr) {
+ to = `<${tM}.${tm}.${+tp + 1}-0`;
+ } else {
+ to = `<=${to}`;
+ }
+
+ return `${from} ${to}`.trim();
+};
+
+const testSet = (set, version, options) => {
+ for (let i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false;
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ for (let i = 0; i < set.length; i++) {
+ debug_1(set[i].semver);
+
+ if (set[i].semver === comparator.ANY) {
+ continue;
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ const allowed = set[i].semver;
+
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ return true;
+};
+
+const ANY$2 = Symbol('SemVer ANY');
+
+class Comparator {
+ static get ANY() {
+ return ANY$2;
+ }
+
+ constructor(comp, options) {
+ options = parseOptions_1(options);
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp;
+ } else {
+ comp = comp.value;
+ }
+ }
+
+ debug_1('comparator', comp, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.parse(comp);
+
+ if (this.semver === ANY$2) {
+ this.value = '';
+ } else {
+ this.value = this.operator + this.semver.version;
+ }
+
+ debug_1('comp', this);
+ }
+
+ parse(comp) {
+ const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ const m = comp.match(r);
+
+ if (!m) {
+ throw new TypeError(`Invalid comparator: ${comp}`);
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : '';
+
+ if (this.operator === '=') {
+ this.operator = '';
+ }
+
+ if (!m[2]) {
+ this.semver = ANY$2;
+ } else {
+ this.semver = new semver$1(m[2], this.options.loose);
+ }
+ }
+
+ toString() {
+ return this.value;
+ }
+
+ test(version) {
+ debug_1('Comparator.test', version, this.options.loose);
+
+ if (this.semver === ANY$2 || version === ANY$2) {
+ return true;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new semver$1(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ return cmp_1(version, this.operator, this.semver, this.options);
+ }
+
+ intersects(comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required');
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true;
+ }
+
+ return new range(comp.value, options).test(this.value);
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true;
+ }
+
+ return new range(this.value, options).test(comp.semver);
+ }
+
+ const sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
+ const sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
+ const sameSemVer = this.semver.version === comp.semver.version;
+ const differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
+ const oppositeDirectionsLessThan = cmp_1(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
+ const oppositeDirectionsGreaterThan = cmp_1(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
+ return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
+ }
+
+}
+
+var comparator = Comparator;
+const {
+ re,
+ t
+} = re_1;
+
+const satisfies = (version, range$1, options) => {
+ try {
+ range$1 = new range(range$1, options);
+ } catch (er) {
+ return false;
+ }
+
+ return range$1.test(version);
+};
+
+var satisfies_1 = satisfies;
+
+const toComparators = (range$1, options) => new range(range$1, options).set.map(comp => comp.map(c => c.value).join(' ').trim().split(' '));
+
+var toComparators_1 = toComparators;
+
+const maxSatisfying = (versions, range$1, options) => {
+ let max = null;
+ let maxSV = null;
+ let rangeObj = null;
+
+ try {
+ rangeObj = new range(range$1, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(v => {
+ if (rangeObj.test(v)) {
+ if (!max || maxSV.compare(v) === -1) {
+ max = v;
+ maxSV = new semver$1(max, options);
+ }
+ }
+ });
+ return max;
+};
+
+var maxSatisfying_1 = maxSatisfying;
+
+const minSatisfying = (versions, range$1, options) => {
+ let min = null;
+ let minSV = null;
+ let rangeObj = null;
+
+ try {
+ rangeObj = new range(range$1, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(v => {
+ if (rangeObj.test(v)) {
+ if (!min || minSV.compare(v) === 1) {
+ min = v;
+ minSV = new semver$1(min, options);
+ }
+ }
+ });
+ return min;
+};
+
+var minSatisfying_1 = minSatisfying;
+
+const minVersion = (range$1, loose) => {
+ range$1 = new range(range$1, loose);
+ let minver = new semver$1('0.0.0');
+
+ if (range$1.test(minver)) {
+ return minver;
+ }
+
+ minver = new semver$1('0.0.0-0');
+
+ if (range$1.test(minver)) {
+ return minver;
+ }
+
+ minver = null;
+
+ for (let i = 0; i < range$1.set.length; ++i) {
+ const comparators = range$1.set[i];
+ let setMin = null;
+ comparators.forEach(comparator => {
+ const compver = new semver$1(comparator.semver.version);
+
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++;
+ } else {
+ compver.prerelease.push(0);
+ }
+
+ compver.raw = compver.format();
+
+ case '':
+ case '>=':
+ if (!setMin || gt_1(compver, setMin)) {
+ setMin = compver;
+ }
+
+ break;
+
+ case '<':
+ case '<=':
+ break;
+
+ default:
+ throw new Error(`Unexpected operation: ${comparator.operator}`);
+ }
+ });
+ if (setMin && (!minver || gt_1(minver, setMin))) minver = setMin;
+ }
+
+ if (minver && range$1.test(minver)) {
+ return minver;
+ }
+
+ return null;
+};
+
+var minVersion_1 = minVersion;
+
+const validRange = (range$1, options) => {
+ try {
+ return new range(range$1, options).range || '*';
+ } catch (er) {
+ return null;
+ }
+};
+
+var valid = validRange;
+const {
+ ANY: ANY$1
+} = comparator;
+
+const outside = (version, range$1, hilo, options) => {
+ version = new semver$1(version, options);
+ range$1 = new range(range$1, options);
+ let gtfn, ltefn, ltfn, comp, ecomp;
+
+ switch (hilo) {
+ case '>':
+ gtfn = gt_1;
+ ltefn = lte_1;
+ ltfn = lt_1;
+ comp = '>';
+ ecomp = '>=';
+ break;
+
+ case '<':
+ gtfn = lt_1;
+ ltefn = gte_1;
+ ltfn = gt_1;
+ comp = '<';
+ ecomp = '<=';
+ break;
+
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
+ }
+
+ if (satisfies_1(version, range$1, options)) {
+ return false;
+ }
+
+ for (let i = 0; i < range$1.set.length; ++i) {
+ const comparators = range$1.set[i];
+ let high = null;
+ let low = null;
+ comparators.forEach(comparator$1 => {
+ if (comparator$1.semver === ANY$1) {
+ comparator$1 = new comparator('>=0.0.0');
+ }
+
+ high = high || comparator$1;
+ low = low || comparator$1;
+
+ if (gtfn(comparator$1.semver, high.semver, options)) {
+ high = comparator$1;
+ } else if (ltfn(comparator$1.semver, low.semver, options)) {
+ low = comparator$1;
+ }
+ });
+
+ if (high.operator === comp || high.operator === ecomp) {
+ return false;
+ }
+
+ if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
+ return false;
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false;
+ }
+ }
+
+ return true;
+};
+
+var outside_1 = outside;
+
+const gtr = (version, range, options) => outside_1(version, range, '>', options);
+
+var gtr_1 = gtr;
+
+const ltr = (version, range, options) => outside_1(version, range, '<', options);
+
+var ltr_1 = ltr;
+
+const intersects = (r1, r2, options) => {
+ r1 = new range(r1, options);
+ r2 = new range(r2, options);
+ return r1.intersects(r2);
+};
+
+var intersects_1 = intersects;
+
+var simplify = (versions, range, options) => {
+ const set = [];
+ let min = null;
+ let prev = null;
+ const v = versions.sort((a, b) => compare_1(a, b, options));
+
+ for (const version of v) {
+ const included = satisfies_1(version, range, options);
+
+ if (included) {
+ prev = version;
+ if (!min) min = version;
+ } else {
+ if (prev) {
+ set.push([min, prev]);
+ }
+
+ prev = null;
+ min = null;
+ }
+ }
+
+ if (min) set.push([min, null]);
+ const ranges = [];
+
+ for (const [min, max] of set) {
+ if (min === max) ranges.push(min);else if (!max && min === v[0]) ranges.push('*');else if (!max) ranges.push(`>=${min}`);else if (min === v[0]) ranges.push(`<=${max}`);else ranges.push(`${min} - ${max}`);
+ }
+
+ const simplified = ranges.join(' || ');
+ const original = typeof range.raw === 'string' ? range.raw : String(range);
+ return simplified.length < original.length ? simplified : range;
+};
+
+const {
+ ANY
+} = comparator;
+
+const subset = (sub, dom, options = {}) => {
+ if (sub === dom) return true;
+ sub = new range(sub, options);
+ dom = new range(dom, options);
+ let sawNonNull = false;
+
+ OUTER: for (const simpleSub of sub.set) {
+ for (const simpleDom of dom.set) {
+ const isSub = simpleSubset(simpleSub, simpleDom, options);
+ sawNonNull = sawNonNull || isSub !== null;
+ if (isSub) continue OUTER;
+ }
+
+ if (sawNonNull) return false;
+ }
+
+ return true;
+};
+
+const simpleSubset = (sub, dom, options) => {
+ if (sub === dom) return true;
+
+ if (sub.length === 1 && sub[0].semver === ANY) {
+ if (dom.length === 1 && dom[0].semver === ANY) return true;else if (options.includePrerelease) sub = [new comparator('>=0.0.0-0')];else sub = [new comparator('>=0.0.0')];
+ }
+
+ if (dom.length === 1 && dom[0].semver === ANY) {
+ if (options.includePrerelease) return true;else dom = [new comparator('>=0.0.0')];
+ }
+
+ const eqSet = new Set();
+ let gt, lt;
+
+ for (const c of sub) {
+ if (c.operator === '>' || c.operator === '>=') gt = higherGT(gt, c, options);else if (c.operator === '<' || c.operator === '<=') lt = lowerLT(lt, c, options);else eqSet.add(c.semver);
+ }
+
+ if (eqSet.size > 1) return null;
+ let gtltComp;
+
+ if (gt && lt) {
+ gtltComp = compare_1(gt.semver, lt.semver, options);
+ if (gtltComp > 0) return null;else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) return null;
+ }
+
+ for (const eq of eqSet) {
+ if (gt && !satisfies_1(eq, String(gt), options)) return null;
+ if (lt && !satisfies_1(eq, String(lt), options)) return null;
+
+ for (const c of dom) {
+ if (!satisfies_1(eq, String(c), options)) return false;
+ }
+
+ return true;
+ }
+
+ let higher, lower;
+ let hasDomLT, hasDomGT;
+ let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
+ let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
+
+ if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {
+ needDomLTPre = false;
+ }
+
+ for (const c of dom) {
+ hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=';
+ hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=';
+
+ if (gt) {
+ if (needDomGTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) {
+ needDomGTPre = false;
+ }
+ }
+
+ if (c.operator === '>' || c.operator === '>=') {
+ higher = higherGT(gt, c, options);
+ if (higher === c && higher !== gt) return false;
+ } else if (gt.operator === '>=' && !satisfies_1(gt.semver, String(c), options)) return false;
+ }
+
+ if (lt) {
+ if (needDomLTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
+ needDomLTPre = false;
+ }
+ }
+
+ if (c.operator === '<' || c.operator === '<=') {
+ lower = lowerLT(lt, c, options);
+ if (lower === c && lower !== lt) return false;
+ } else if (lt.operator === '<=' && !satisfies_1(lt.semver, String(c), options)) return false;
+ }
+
+ if (!c.operator && (lt || gt) && gtltComp !== 0) return false;
+ }
+
+ if (gt && hasDomLT && !lt && gtltComp !== 0) return false;
+ if (lt && hasDomGT && !gt && gtltComp !== 0) return false;
+ if (needDomGTPre || needDomLTPre) return false;
+ return true;
+};
+
+const higherGT = (a, b, options) => {
+ if (!a) return b;
+ const comp = compare_1(a.semver, b.semver, options);
+ return comp > 0 ? a : comp < 0 ? b : b.operator === '>' && a.operator === '>=' ? b : a;
+};
+
+const lowerLT = (a, b, options) => {
+ if (!a) return b;
+ const comp = compare_1(a.semver, b.semver, options);
+ return comp < 0 ? a : comp > 0 ? b : b.operator === '<' && a.operator === '<=' ? b : a;
+};
+
+var subset_1 = subset;
+var semver = {
+ re: re_1.re,
+ src: re_1.src,
+ tokens: re_1.t,
+ SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
+ SemVer: semver$1,
+ compareIdentifiers: identifiers.compareIdentifiers,
+ rcompareIdentifiers: identifiers.rcompareIdentifiers,
+ parse: parse_1,
+ valid: valid_1,
+ clean: clean_1,
+ inc: inc_1,
+ diff: diff_1,
+ major: major_1,
+ minor: minor_1,
+ patch: patch_1,
+ prerelease: prerelease_1,
+ compare: compare_1,
+ rcompare: rcompare_1,
+ compareLoose: compareLoose_1,
+ compareBuild: compareBuild_1,
+ sort: sort_1,
+ rsort: rsort_1,
+ gt: gt_1,
+ lt: lt_1,
+ eq: eq_1,
+ neq: neq_1,
+ gte: gte_1,
+ lte: lte_1,
+ cmp: cmp_1,
+ coerce: coerce_1,
+ Comparator: comparator,
+ Range: range,
+ satisfies: satisfies_1,
+ toComparators: toComparators_1,
+ maxSatisfying: maxSatisfying_1,
+ minSatisfying: minSatisfying_1,
+ minVersion: minVersion_1,
+ validRange: valid,
+ outside: outside_1,
+ gtr: gtr_1,
+ ltr: ltr_1,
+ intersects: intersects_1,
+ simplifyRange: simplify,
+ subset: subset_1
+};
+
+var builtins = function ({
+ version = process.version,
+ experimental = false
+} = {}) {
+ var coreModules = ['assert', 'buffer', 'child_process', 'cluster', 'console', 'constants', 'crypto', 'dgram', 'dns', 'domain', 'events', 'fs', 'http', 'https', 'module', 'net', 'os', 'path', 'punycode', 'querystring', 'readline', 'repl', 'stream', 'string_decoder', 'sys', 'timers', 'tls', 'tty', 'url', 'util', 'vm', 'zlib'];
+ if (semver.lt(version, '6.0.0')) coreModules.push('freelist');
+ if (semver.gte(version, '1.0.0')) coreModules.push('v8');
+ if (semver.gte(version, '1.1.0')) coreModules.push('process');
+ if (semver.gte(version, '8.0.0')) coreModules.push('inspector');
+ if (semver.gte(version, '8.1.0')) coreModules.push('async_hooks');
+ if (semver.gte(version, '8.4.0')) coreModules.push('http2');
+ if (semver.gte(version, '8.5.0')) coreModules.push('perf_hooks');
+ if (semver.gte(version, '10.0.0')) coreModules.push('trace_events');
+
+ if (semver.gte(version, '10.5.0') && (experimental || semver.gte(version, '12.0.0'))) {
+ coreModules.push('worker_threads');
+ }
+
+ if (semver.gte(version, '12.16.0') && experimental) {
+ coreModules.push('wasi');
+ }
+
+ return coreModules;
+};
+
+const reader = {
+ read
+};
+
+function read(jsonPath) {
+ return find(_path().dirname(jsonPath));
+}
+
+function find(dir) {
+ try {
+ const string = _fs().default.readFileSync(_path().toNamespacedPath(_path().join(dir, 'package.json')), 'utf8');
+
+ return {
+ string
+ };
+ } catch (error) {
+ if (error.code === 'ENOENT') {
+ const parent = _path().dirname(dir);
+
+ if (dir !== parent) return find(parent);
+ return {
+ string: undefined
+ };
+ }
+
+ throw error;
+ }
+}
+
+const isWindows = process.platform === 'win32';
+const own$1 = {}.hasOwnProperty;
+const codes = {};
+const messages = new Map();
+const nodeInternalPrefix = '__node_internal_';
+let userStackTraceLimit;
+codes.ERR_INVALID_MODULE_SPECIFIER = createError('ERR_INVALID_MODULE_SPECIFIER', (request, reason, base = undefined) => {
+ return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ''}`;
+}, TypeError);
+codes.ERR_INVALID_PACKAGE_CONFIG = createError('ERR_INVALID_PACKAGE_CONFIG', (path, base, message) => {
+ return `Invalid package config ${path}${base ? ` while importing ${base}` : ''}${message ? `. ${message}` : ''}`;
+}, Error);
+codes.ERR_INVALID_PACKAGE_TARGET = createError('ERR_INVALID_PACKAGE_TARGET', (pkgPath, key, target, isImport = false, base = undefined) => {
+ const relError = typeof target === 'string' && !isImport && target.length > 0 && !target.startsWith('./');
+
+ if (key === '.') {
+ _assert()(isImport === false);
+
+ return `Invalid "exports" main target ${JSON.stringify(target)} defined ` + `in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ''}${relError ? '; targets must start with "./"' : ''}`;
+ }
+
+ return `Invalid "${isImport ? 'imports' : 'exports'}" target ${JSON.stringify(target)} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ''}${relError ? '; targets must start with "./"' : ''}`;
+}, Error);
+codes.ERR_MODULE_NOT_FOUND = createError('ERR_MODULE_NOT_FOUND', (path, base, type = 'package') => {
+ return `Cannot find ${type} '${path}' imported from ${base}`;
+}, Error);
+codes.ERR_PACKAGE_IMPORT_NOT_DEFINED = createError('ERR_PACKAGE_IMPORT_NOT_DEFINED', (specifier, packagePath, base) => {
+ return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ''} imported from ${base}`;
+}, TypeError);
+codes.ERR_PACKAGE_PATH_NOT_EXPORTED = createError('ERR_PACKAGE_PATH_NOT_EXPORTED', (pkgPath, subpath, base = undefined) => {
+ if (subpath === '.') return `No "exports" main defined in ${pkgPath}package.json${base ? ` imported from ${base}` : ''}`;
+ return `Package subpath '${subpath}' is not defined by "exports" in ${pkgPath}package.json${base ? ` imported from ${base}` : ''}`;
+}, Error);
+codes.ERR_UNSUPPORTED_DIR_IMPORT = createError('ERR_UNSUPPORTED_DIR_IMPORT', "Directory import '%s' is not supported " + 'resolving ES modules imported from %s', Error);
+codes.ERR_UNKNOWN_FILE_EXTENSION = createError('ERR_UNKNOWN_FILE_EXTENSION', 'Unknown file extension "%s" for %s', TypeError);
+codes.ERR_INVALID_ARG_VALUE = createError('ERR_INVALID_ARG_VALUE', (name, value, reason = 'is invalid') => {
+ let inspected = (0, _util().inspect)(value);
+
+ if (inspected.length > 128) {
+ inspected = `${inspected.slice(0, 128)}...`;
+ }
+
+ const type = name.includes('.') ? 'property' : 'argument';
+ return `The ${type} '${name}' ${reason}. Received ${inspected}`;
+}, TypeError);
+codes.ERR_UNSUPPORTED_ESM_URL_SCHEME = createError('ERR_UNSUPPORTED_ESM_URL_SCHEME', url => {
+ let message = 'Only file and data URLs are supported by the default ESM loader';
+
+ if (isWindows && url.protocol.length === 2) {
+ message += '. On Windows, absolute paths must be valid file:// URLs';
+ }
+
+ message += `. Received protocol '${url.protocol}'`;
+ return message;
+}, Error);
+
+function createError(sym, value, def) {
+ messages.set(sym, value);
+ return makeNodeErrorWithCode(def, sym);
+}
+
+function makeNodeErrorWithCode(Base, key) {
+ return NodeError;
+
+ function NodeError(...args) {
+ const limit = Error.stackTraceLimit;
+ if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = 0;
+ const error = new Base();
+ if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = limit;
+ const message = getMessage(key, args, error);
+ Object.defineProperty(error, 'message', {
+ value: message,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ });
+ Object.defineProperty(error, 'toString', {
+ value() {
+ return `${this.name} [${key}]: ${this.message}`;
+ },
+
+ enumerable: false,
+ writable: true,
+ configurable: true
+ });
+ addCodeToName(error, Base.name, key);
+ error.code = key;
+ return error;
+ }
+}
+
+const addCodeToName = hideStackFrames(function (error, name, code) {
+ error = captureLargerStackTrace(error);
+ error.name = `${name} [${code}]`;
+ error.stack;
+
+ if (name === 'SystemError') {
+ Object.defineProperty(error, 'name', {
+ value: name,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ });
+ } else {
+ delete error.name;
+ }
+});
+
+function isErrorStackTraceLimitWritable() {
+ const desc = Object.getOwnPropertyDescriptor(Error, 'stackTraceLimit');
+
+ if (desc === undefined) {
+ return Object.isExtensible(Error);
+ }
+
+ return own$1.call(desc, 'writable') ? desc.writable : desc.set !== undefined;
+}
+
+function hideStackFrames(fn) {
+ const hidden = nodeInternalPrefix + fn.name;
+ Object.defineProperty(fn, 'name', {
+ value: hidden
+ });
+ return fn;
+}
+
+const captureLargerStackTrace = hideStackFrames(function (error) {
+ const stackTraceLimitIsWritable = isErrorStackTraceLimitWritable();
+
+ if (stackTraceLimitIsWritable) {
+ userStackTraceLimit = Error.stackTraceLimit;
+ Error.stackTraceLimit = Number.POSITIVE_INFINITY;
+ }
+
+ Error.captureStackTrace(error);
+ if (stackTraceLimitIsWritable) Error.stackTraceLimit = userStackTraceLimit;
+ return error;
+});
+
+function getMessage(key, args, self) {
+ const message = messages.get(key);
+
+ if (typeof message === 'function') {
+ _assert()(message.length <= args.length, `Code: ${key}; The provided arguments length (${args.length}) does not ` + `match the required ones (${message.length}).`);
+
+ return Reflect.apply(message, self, args);
+ }
+
+ const expectedLength = (message.match(/%[dfijoOs]/g) || []).length;
+
+ _assert()(expectedLength === args.length, `Code: ${key}; The provided arguments length (${args.length}) does not ` + `match the required ones (${expectedLength}).`);
+
+ if (args.length === 0) return message;
+ args.unshift(message);
+ return Reflect.apply(_util().format, null, args);
+}
+
+const {
+ ERR_UNKNOWN_FILE_EXTENSION
+} = codes;
+const extensionFormatMap = {
+ __proto__: null,
+ '.cjs': 'commonjs',
+ '.js': 'module',
+ '.mjs': 'module'
+};
+
+function defaultGetFormat(url) {
+ if (url.startsWith('node:')) {
+ return {
+ format: 'builtin'
+ };
+ }
+
+ const parsed = new (_url().URL)(url);
+
+ if (parsed.protocol === 'data:') {
+ const {
+ 1: mime
+ } = /^([^/]+\/[^;,]+)[^,]*?(;base64)?,/.exec(parsed.pathname) || [null, null];
+ const format = mime === 'text/javascript' ? 'module' : null;
+ return {
+ format
+ };
+ }
+
+ if (parsed.protocol === 'file:') {
+ const ext = _path().extname(parsed.pathname);
+
+ let format;
+
+ if (ext === '.js') {
+ format = getPackageType(parsed.href) === 'module' ? 'module' : 'commonjs';
+ } else {
+ format = extensionFormatMap[ext];
+ }
+
+ if (!format) {
+ throw new ERR_UNKNOWN_FILE_EXTENSION(ext, (0, _url().fileURLToPath)(url));
+ }
+
+ return {
+ format: format || null
+ };
+ }
+
+ return {
+ format: null
+ };
+}
+
+const listOfBuiltins = builtins();
+const {
+ ERR_INVALID_MODULE_SPECIFIER,
+ ERR_INVALID_PACKAGE_CONFIG,
+ ERR_INVALID_PACKAGE_TARGET,
+ ERR_MODULE_NOT_FOUND,
+ ERR_PACKAGE_IMPORT_NOT_DEFINED,
+ ERR_PACKAGE_PATH_NOT_EXPORTED,
+ ERR_UNSUPPORTED_DIR_IMPORT,
+ ERR_UNSUPPORTED_ESM_URL_SCHEME,
+ ERR_INVALID_ARG_VALUE
+} = codes;
+const own = {}.hasOwnProperty;
+const DEFAULT_CONDITIONS = Object.freeze(['node', 'import']);
+const DEFAULT_CONDITIONS_SET = new Set(DEFAULT_CONDITIONS);
+const invalidSegmentRegEx = /(^|\\|\/)(\.\.?|node_modules)(\\|\/|$)/;
+const patternRegEx = /\*/g;
+const encodedSepRegEx = /%2f|%2c/i;
+const emittedPackageWarnings = new Set();
+const packageJsonCache = new Map();
+
+function emitFolderMapDeprecation(match, pjsonUrl, isExports, base) {
+ const pjsonPath = (0, _url().fileURLToPath)(pjsonUrl);
+ if (emittedPackageWarnings.has(pjsonPath + '|' + match)) return;
+ emittedPackageWarnings.add(pjsonPath + '|' + match);
+ process.emitWarning(`Use of deprecated folder mapping "${match}" in the ${isExports ? '"exports"' : '"imports"'} field module resolution of the package at ${pjsonPath}${base ? ` imported from ${(0, _url().fileURLToPath)(base)}` : ''}.\n` + `Update this package.json to use a subpath pattern like "${match}*".`, 'DeprecationWarning', 'DEP0148');
+}
+
+function emitLegacyIndexDeprecation(url, packageJsonUrl, base, main) {
+ const {
+ format
+ } = defaultGetFormat(url.href);
+ if (format !== 'module') return;
+ const path = (0, _url().fileURLToPath)(url.href);
+ const pkgPath = (0, _url().fileURLToPath)(new (_url().URL)('.', packageJsonUrl));
+ const basePath = (0, _url().fileURLToPath)(base);
+ if (main) process.emitWarning(`Package ${pkgPath} has a "main" field set to ${JSON.stringify(main)}, ` + `excluding the full filename and extension to the resolved file at "${path.slice(pkgPath.length)}", imported from ${basePath}.\n Automatic extension resolution of the "main" field is` + 'deprecated for ES modules.', 'DeprecationWarning', 'DEP0151');else process.emitWarning(`No "main" or "exports" field defined in the package.json for ${pkgPath} resolving the main entry point "${path.slice(pkgPath.length)}", imported from ${basePath}.\nDefault "index" lookups for the main are deprecated for ES modules.`, 'DeprecationWarning', 'DEP0151');
+}
+
+function getConditionsSet(conditions) {
+ if (conditions !== undefined && conditions !== DEFAULT_CONDITIONS) {
+ if (!Array.isArray(conditions)) {
+ throw new ERR_INVALID_ARG_VALUE('conditions', conditions, 'expected an array');
+ }
+
+ return new Set(conditions);
+ }
+
+ return DEFAULT_CONDITIONS_SET;
+}
+
+function tryStatSync(path) {
+ try {
+ return (0, _fs().statSync)(path);
+ } catch (_unused) {
+ return new (_fs().Stats)();
+ }
+}
+
+function getPackageConfig(path, specifier, base) {
+ const existing = packageJsonCache.get(path);
+
+ if (existing !== undefined) {
+ return existing;
+ }
+
+ const source = reader.read(path).string;
+
+ if (source === undefined) {
+ const packageConfig = {
+ pjsonPath: path,
+ exists: false,
+ main: undefined,
+ name: undefined,
+ type: 'none',
+ exports: undefined,
+ imports: undefined
+ };
+ packageJsonCache.set(path, packageConfig);
+ return packageConfig;
+ }
+
+ let packageJson;
+
+ try {
+ packageJson = JSON.parse(source);
+ } catch (error) {
+ throw new ERR_INVALID_PACKAGE_CONFIG(path, (base ? `"${specifier}" from ` : '') + (0, _url().fileURLToPath)(base || specifier), error.message);
+ }
+
+ const {
+ exports,
+ imports,
+ main,
+ name,
+ type
+ } = packageJson;
+ const packageConfig = {
+ pjsonPath: path,
+ exists: true,
+ main: typeof main === 'string' ? main : undefined,
+ name: typeof name === 'string' ? name : undefined,
+ type: type === 'module' || type === 'commonjs' ? type : 'none',
+ exports,
+ imports: imports && typeof imports === 'object' ? imports : undefined
+ };
+ packageJsonCache.set(path, packageConfig);
+ return packageConfig;
+}
+
+function getPackageScopeConfig(resolved) {
+ let packageJsonUrl = new (_url().URL)('./package.json', resolved);
+
+ while (true) {
+ const packageJsonPath = packageJsonUrl.pathname;
+ if (packageJsonPath.endsWith('node_modules/package.json')) break;
+ const packageConfig = getPackageConfig((0, _url().fileURLToPath)(packageJsonUrl), resolved);
+ if (packageConfig.exists) return packageConfig;
+ const lastPackageJsonUrl = packageJsonUrl;
+ packageJsonUrl = new (_url().URL)('../package.json', packageJsonUrl);
+ if (packageJsonUrl.pathname === lastPackageJsonUrl.pathname) break;
+ }
+
+ const packageJsonPath = (0, _url().fileURLToPath)(packageJsonUrl);
+ const packageConfig = {
+ pjsonPath: packageJsonPath,
+ exists: false,
+ main: undefined,
+ name: undefined,
+ type: 'none',
+ exports: undefined,
+ imports: undefined
+ };
+ packageJsonCache.set(packageJsonPath, packageConfig);
+ return packageConfig;
+}
+
+function fileExists(url) {
+ return tryStatSync((0, _url().fileURLToPath)(url)).isFile();
+}
+
+function legacyMainResolve(packageJsonUrl, packageConfig, base) {
+ let guess;
+
+ if (packageConfig.main !== undefined) {
+ guess = new (_url().URL)(`./${packageConfig.main}`, packageJsonUrl);
+ if (fileExists(guess)) return guess;
+ const tries = [`./${packageConfig.main}.js`, `./${packageConfig.main}.json`, `./${packageConfig.main}.node`, `./${packageConfig.main}/index.js`, `./${packageConfig.main}/index.json`, `./${packageConfig.main}/index.node`];
+ let i = -1;
+
+ while (++i < tries.length) {
+ guess = new (_url().URL)(tries[i], packageJsonUrl);
+ if (fileExists(guess)) break;
+ guess = undefined;
+ }
+
+ if (guess) {
+ emitLegacyIndexDeprecation(guess, packageJsonUrl, base, packageConfig.main);
+ return guess;
+ }
+ }
+
+ const tries = ['./index.js', './index.json', './index.node'];
+ let i = -1;
+
+ while (++i < tries.length) {
+ guess = new (_url().URL)(tries[i], packageJsonUrl);
+ if (fileExists(guess)) break;
+ guess = undefined;
+ }
+
+ if (guess) {
+ emitLegacyIndexDeprecation(guess, packageJsonUrl, base, packageConfig.main);
+ return guess;
+ }
+
+ throw new ERR_MODULE_NOT_FOUND((0, _url().fileURLToPath)(new (_url().URL)('.', packageJsonUrl)), (0, _url().fileURLToPath)(base));
+}
+
+function finalizeResolution(resolved, base) {
+ if (encodedSepRegEx.test(resolved.pathname)) throw new ERR_INVALID_MODULE_SPECIFIER(resolved.pathname, 'must not include encoded "/" or "\\" characters', (0, _url().fileURLToPath)(base));
+ const path = (0, _url().fileURLToPath)(resolved);
+ const stats = tryStatSync(path.endsWith('/') ? path.slice(-1) : path);
+
+ if (stats.isDirectory()) {
+ const error = new ERR_UNSUPPORTED_DIR_IMPORT(path, (0, _url().fileURLToPath)(base));
+ error.url = String(resolved);
+ throw error;
+ }
+
+ if (!stats.isFile()) {
+ throw new ERR_MODULE_NOT_FOUND(path || resolved.pathname, base && (0, _url().fileURLToPath)(base), 'module');
+ }
+
+ return resolved;
+}
+
+function throwImportNotDefined(specifier, packageJsonUrl, base) {
+ throw new ERR_PACKAGE_IMPORT_NOT_DEFINED(specifier, packageJsonUrl && (0, _url().fileURLToPath)(new (_url().URL)('.', packageJsonUrl)), (0, _url().fileURLToPath)(base));
+}
+
+function throwExportsNotFound(subpath, packageJsonUrl, base) {
+ throw new ERR_PACKAGE_PATH_NOT_EXPORTED((0, _url().fileURLToPath)(new (_url().URL)('.', packageJsonUrl)), subpath, base && (0, _url().fileURLToPath)(base));
+}
+
+function throwInvalidSubpath(subpath, packageJsonUrl, internal, base) {
+ const reason = `request is not a valid subpath for the "${internal ? 'imports' : 'exports'}" resolution of ${(0, _url().fileURLToPath)(packageJsonUrl)}`;
+ throw new ERR_INVALID_MODULE_SPECIFIER(subpath, reason, base && (0, _url().fileURLToPath)(base));
+}
+
+function throwInvalidPackageTarget(subpath, target, packageJsonUrl, internal, base) {
+ target = typeof target === 'object' && target !== null ? JSON.stringify(target, null, '') : `${target}`;
+ throw new ERR_INVALID_PACKAGE_TARGET((0, _url().fileURLToPath)(new (_url().URL)('.', packageJsonUrl)), subpath, target, internal, base && (0, _url().fileURLToPath)(base));
+}
+
+function resolvePackageTargetString(target, subpath, match, packageJsonUrl, base, pattern, internal, conditions) {
+ if (subpath !== '' && !pattern && target[target.length - 1] !== '/') throwInvalidPackageTarget(match, target, packageJsonUrl, internal, base);
+
+ if (!target.startsWith('./')) {
+ if (internal && !target.startsWith('../') && !target.startsWith('/')) {
+ let isURL = false;
+
+ try {
+ new (_url().URL)(target);
+ isURL = true;
+ } catch (_unused2) {}
+
+ if (!isURL) {
+ const exportTarget = pattern ? target.replace(patternRegEx, subpath) : target + subpath;
+ return packageResolve(exportTarget, packageJsonUrl, conditions);
+ }
+ }
+
+ throwInvalidPackageTarget(match, target, packageJsonUrl, internal, base);
+ }
+
+ if (invalidSegmentRegEx.test(target.slice(2))) throwInvalidPackageTarget(match, target, packageJsonUrl, internal, base);
+ const resolved = new (_url().URL)(target, packageJsonUrl);
+ const resolvedPath = resolved.pathname;
+ const packagePath = new (_url().URL)('.', packageJsonUrl).pathname;
+ if (!resolvedPath.startsWith(packagePath)) throwInvalidPackageTarget(match, target, packageJsonUrl, internal, base);
+ if (subpath === '') return resolved;
+ if (invalidSegmentRegEx.test(subpath)) throwInvalidSubpath(match + subpath, packageJsonUrl, internal, base);
+ if (pattern) return new (_url().URL)(resolved.href.replace(patternRegEx, subpath));
+ return new (_url().URL)(subpath, resolved);
+}
+
+function isArrayIndex(key) {
+ const keyNumber = Number(key);
+ if (`${keyNumber}` !== key) return false;
+ return keyNumber >= 0 && keyNumber < 0xffffffff;
+}
+
+function resolvePackageTarget(packageJsonUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) {
+ if (typeof target === 'string') {
+ return resolvePackageTargetString(target, subpath, packageSubpath, packageJsonUrl, base, pattern, internal, conditions);
+ }
+
+ if (Array.isArray(target)) {
+ const targetList = target;
+ if (targetList.length === 0) return null;
+ let lastException;
+ let i = -1;
+
+ while (++i < targetList.length) {
+ const targetItem = targetList[i];
+ let resolved;
+
+ try {
+ resolved = resolvePackageTarget(packageJsonUrl, targetItem, subpath, packageSubpath, base, pattern, internal, conditions);
+ } catch (error) {
+ lastException = error;
+ if (error.code === 'ERR_INVALID_PACKAGE_TARGET') continue;
+ throw error;
+ }
+
+ if (resolved === undefined) continue;
+
+ if (resolved === null) {
+ lastException = null;
+ continue;
+ }
+
+ return resolved;
+ }
+
+ if (lastException === undefined || lastException === null) {
+ return lastException;
+ }
+
+ throw lastException;
+ }
+
+ if (typeof target === 'object' && target !== null) {
+ const keys = Object.getOwnPropertyNames(target);
+ let i = -1;
+
+ while (++i < keys.length) {
+ const key = keys[i];
+
+ if (isArrayIndex(key)) {
+ throw new ERR_INVALID_PACKAGE_CONFIG((0, _url().fileURLToPath)(packageJsonUrl), base, '"exports" cannot contain numeric property keys.');
+ }
+ }
+
+ i = -1;
+
+ while (++i < keys.length) {
+ const key = keys[i];
+
+ if (key === 'default' || conditions && conditions.has(key)) {
+ const conditionalTarget = target[key];
+ const resolved = resolvePackageTarget(packageJsonUrl, conditionalTarget, subpath, packageSubpath, base, pattern, internal, conditions);
+ if (resolved === undefined) continue;
+ return resolved;
+ }
+ }
+
+ return undefined;
+ }
+
+ if (target === null) {
+ return null;
+ }
+
+ throwInvalidPackageTarget(packageSubpath, target, packageJsonUrl, internal, base);
+}
+
+function isConditionalExportsMainSugar(exports, packageJsonUrl, base) {
+ if (typeof exports === 'string' || Array.isArray(exports)) return true;
+ if (typeof exports !== 'object' || exports === null) return false;
+ const keys = Object.getOwnPropertyNames(exports);
+ let isConditionalSugar = false;
+ let i = 0;
+ let j = -1;
+
+ while (++j < keys.length) {
+ const key = keys[j];
+ const curIsConditionalSugar = key === '' || key[0] !== '.';
+
+ if (i++ === 0) {
+ isConditionalSugar = curIsConditionalSugar;
+ } else if (isConditionalSugar !== curIsConditionalSugar) {
+ throw new ERR_INVALID_PACKAGE_CONFIG((0, _url().fileURLToPath)(packageJsonUrl), base, '"exports" cannot contain some keys starting with \'.\' and some not.' + ' The exports object must either be an object of package subpath keys' + ' or an object of main entry condition name keys only.');
+ }
+ }
+
+ return isConditionalSugar;
+}
+
+function packageExportsResolve(packageJsonUrl, packageSubpath, packageConfig, base, conditions) {
+ let exports = packageConfig.exports;
+ if (isConditionalExportsMainSugar(exports, packageJsonUrl, base)) exports = {
+ '.': exports
+ };
+
+ if (own.call(exports, packageSubpath)) {
+ const target = exports[packageSubpath];
+ const resolved = resolvePackageTarget(packageJsonUrl, target, '', packageSubpath, base, false, false, conditions);
+ if (resolved === null || resolved === undefined) throwExportsNotFound(packageSubpath, packageJsonUrl, base);
+ return {
+ resolved,
+ exact: true
+ };
+ }
+
+ let bestMatch = '';
+ const keys = Object.getOwnPropertyNames(exports);
+ let i = -1;
+
+ while (++i < keys.length) {
+ const key = keys[i];
+
+ if (key[key.length - 1] === '*' && packageSubpath.startsWith(key.slice(0, -1)) && packageSubpath.length >= key.length && key.length > bestMatch.length) {
+ bestMatch = key;
+ } else if (key[key.length - 1] === '/' && packageSubpath.startsWith(key) && key.length > bestMatch.length) {
+ bestMatch = key;
+ }
+ }
+
+ if (bestMatch) {
+ const target = exports[bestMatch];
+ const pattern = bestMatch[bestMatch.length - 1] === '*';
+ const subpath = packageSubpath.slice(bestMatch.length - (pattern ? 1 : 0));
+ const resolved = resolvePackageTarget(packageJsonUrl, target, subpath, bestMatch, base, pattern, false, conditions);
+ if (resolved === null || resolved === undefined) throwExportsNotFound(packageSubpath, packageJsonUrl, base);
+ if (!pattern) emitFolderMapDeprecation(bestMatch, packageJsonUrl, true, base);
+ return {
+ resolved,
+ exact: pattern
+ };
+ }
+
+ throwExportsNotFound(packageSubpath, packageJsonUrl, base);
+}
+
+function packageImportsResolve(name, base, conditions) {
+ if (name === '#' || name.startsWith('#/')) {
+ const reason = 'is not a valid internal imports specifier name';
+ throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, (0, _url().fileURLToPath)(base));
+ }
+
+ let packageJsonUrl;
+ const packageConfig = getPackageScopeConfig(base);
+
+ if (packageConfig.exists) {
+ packageJsonUrl = (0, _url().pathToFileURL)(packageConfig.pjsonPath);
+ const imports = packageConfig.imports;
+
+ if (imports) {
+ if (own.call(imports, name)) {
+ const resolved = resolvePackageTarget(packageJsonUrl, imports[name], '', name, base, false, true, conditions);
+ if (resolved !== null) return {
+ resolved,
+ exact: true
+ };
+ } else {
+ let bestMatch = '';
+ const keys = Object.getOwnPropertyNames(imports);
+ let i = -1;
+
+ while (++i < keys.length) {
+ const key = keys[i];
+
+ if (key[key.length - 1] === '*' && name.startsWith(key.slice(0, -1)) && name.length >= key.length && key.length > bestMatch.length) {
+ bestMatch = key;
+ } else if (key[key.length - 1] === '/' && name.startsWith(key) && key.length > bestMatch.length) {
+ bestMatch = key;
+ }
+ }
+
+ if (bestMatch) {
+ const target = imports[bestMatch];
+ const pattern = bestMatch[bestMatch.length - 1] === '*';
+ const subpath = name.slice(bestMatch.length - (pattern ? 1 : 0));
+ const resolved = resolvePackageTarget(packageJsonUrl, target, subpath, bestMatch, base, pattern, true, conditions);
+
+ if (resolved !== null) {
+ if (!pattern) emitFolderMapDeprecation(bestMatch, packageJsonUrl, false, base);
+ return {
+ resolved,
+ exact: pattern
+ };
+ }
+ }
+ }
+ }
+ }
+
+ throwImportNotDefined(name, packageJsonUrl, base);
+}
+
+function getPackageType(url) {
+ const packageConfig = getPackageScopeConfig(url);
+ return packageConfig.type;
+}
+
+function parsePackageName(specifier, base) {
+ let separatorIndex = specifier.indexOf('/');
+ let validPackageName = true;
+ let isScoped = false;
+
+ if (specifier[0] === '@') {
+ isScoped = true;
+
+ if (separatorIndex === -1 || specifier.length === 0) {
+ validPackageName = false;
+ } else {
+ separatorIndex = specifier.indexOf('/', separatorIndex + 1);
+ }
+ }
+
+ const packageName = separatorIndex === -1 ? specifier : specifier.slice(0, separatorIndex);
+ let i = -1;
+
+ while (++i < packageName.length) {
+ if (packageName[i] === '%' || packageName[i] === '\\') {
+ validPackageName = false;
+ break;
+ }
+ }
+
+ if (!validPackageName) {
+ throw new ERR_INVALID_MODULE_SPECIFIER(specifier, 'is not a valid package name', (0, _url().fileURLToPath)(base));
+ }
+
+ const packageSubpath = '.' + (separatorIndex === -1 ? '' : specifier.slice(separatorIndex));
+ return {
+ packageName,
+ packageSubpath,
+ isScoped
+ };
+}
+
+function packageResolve(specifier, base, conditions) {
+ const {
+ packageName,
+ packageSubpath,
+ isScoped
+ } = parsePackageName(specifier, base);
+ const packageConfig = getPackageScopeConfig(base);
+
+ if (packageConfig.exists) {
+ const packageJsonUrl = (0, _url().pathToFileURL)(packageConfig.pjsonPath);
+
+ if (packageConfig.name === packageName && packageConfig.exports !== undefined && packageConfig.exports !== null) {
+ return packageExportsResolve(packageJsonUrl, packageSubpath, packageConfig, base, conditions).resolved;
+ }
+ }
+
+ let packageJsonUrl = new (_url().URL)('./node_modules/' + packageName + '/package.json', base);
+ let packageJsonPath = (0, _url().fileURLToPath)(packageJsonUrl);
+ let lastPath;
+
+ do {
+ const stat = tryStatSync(packageJsonPath.slice(0, -13));
+
+ if (!stat.isDirectory()) {
+ lastPath = packageJsonPath;
+ packageJsonUrl = new (_url().URL)((isScoped ? '../../../../node_modules/' : '../../../node_modules/') + packageName + '/package.json', packageJsonUrl);
+ packageJsonPath = (0, _url().fileURLToPath)(packageJsonUrl);
+ continue;
+ }
+
+ const packageConfig = getPackageConfig(packageJsonPath, specifier, base);
+ if (packageConfig.exports !== undefined && packageConfig.exports !== null) return packageExportsResolve(packageJsonUrl, packageSubpath, packageConfig, base, conditions).resolved;
+ if (packageSubpath === '.') return legacyMainResolve(packageJsonUrl, packageConfig, base);
+ return new (_url().URL)(packageSubpath, packageJsonUrl);
+ } while (packageJsonPath.length !== lastPath.length);
+
+ throw new ERR_MODULE_NOT_FOUND(packageName, (0, _url().fileURLToPath)(base));
+}
+
+function isRelativeSpecifier(specifier) {
+ if (specifier[0] === '.') {
+ if (specifier.length === 1 || specifier[1] === '/') return true;
+
+ if (specifier[1] === '.' && (specifier.length === 2 || specifier[2] === '/')) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function shouldBeTreatedAsRelativeOrAbsolutePath(specifier) {
+ if (specifier === '') return false;
+ if (specifier[0] === '/') return true;
+ return isRelativeSpecifier(specifier);
+}
+
+function moduleResolve(specifier, base, conditions) {
+ let resolved;
+
+ if (shouldBeTreatedAsRelativeOrAbsolutePath(specifier)) {
+ resolved = new (_url().URL)(specifier, base);
+ } else if (specifier[0] === '#') {
+ ({
+ resolved
+ } = packageImportsResolve(specifier, base, conditions));
+ } else {
+ try {
+ resolved = new (_url().URL)(specifier);
+ } catch (_unused3) {
+ resolved = packageResolve(specifier, base, conditions);
+ }
+ }
+
+ return finalizeResolution(resolved, base);
+}
+
+function defaultResolve(specifier, context = {}) {
+ const {
+ parentURL
+ } = context;
+ let parsed;
+
+ try {
+ parsed = new (_url().URL)(specifier);
+
+ if (parsed.protocol === 'data:') {
+ return {
+ url: specifier
+ };
+ }
+ } catch (_unused4) {}
+
+ if (parsed && parsed.protocol === 'node:') return {
+ url: specifier
+ };
+ if (parsed && parsed.protocol !== 'file:' && parsed.protocol !== 'data:') throw new ERR_UNSUPPORTED_ESM_URL_SCHEME(parsed);
+
+ if (listOfBuiltins.includes(specifier)) {
+ return {
+ url: 'node:' + specifier
+ };
+ }
+
+ if (parentURL.startsWith('data:')) {
+ new (_url().URL)(specifier, parentURL);
+ }
+
+ const conditions = getConditionsSet(context.conditions);
+ let url = moduleResolve(specifier, new (_url().URL)(parentURL), conditions);
+ const urlPath = (0, _url().fileURLToPath)(url);
+ const real = (0, _fs().realpathSync)(urlPath);
+ const old = url;
+ url = (0, _url().pathToFileURL)(real + (urlPath.endsWith(_path().sep) ? '/' : ''));
+ url.search = old.search;
+ url.hash = old.hash;
+ return {
+ url: `${url}`
+ };
+}
+
+function resolve(_x, _x2) {
+ return _resolve.apply(this, arguments);
+}
+
+function _resolve() {
+ _resolve = _asyncToGenerator(function* (specifier, parent) {
+ if (!parent) {
+ throw new Error('Please pass `parent`: `import-meta-resolve` cannot ponyfill that');
+ }
+
+ try {
+ return defaultResolve(specifier, {
+ parentURL: parent
+ }).url;
+ } catch (error) {
+ return error.code === 'ERR_UNSUPPORTED_DIR_IMPORT' ? error.url : Promise.reject(error);
+ }
+ });
+ return _resolve.apply(this, arguments);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/package.json b/weekly_mission_2/examples_4/node_modules/@babel/core/package.json
new file mode 100644
index 000000000..542f4bada
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "@babel/core",
+ "version": "7.17.9",
+ "description": "Babel compiler core.",
+ "main": "./lib/index.js",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-core"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-core",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen",
+ "keywords": [
+ "6to5",
+ "babel",
+ "classes",
+ "const",
+ "es6",
+ "harmony",
+ "let",
+ "modules",
+ "transpile",
+ "transpiler",
+ "var",
+ "babel-core",
+ "compiler"
+ ],
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ },
+ "browser": {
+ "./lib/config/files/index.js": "./lib/config/files/index-browser.js",
+ "./lib/config/resolve-targets.js": "./lib/config/resolve-targets-browser.js",
+ "./lib/transform-file.js": "./lib/transform-file-browser.js",
+ "./lib/transformation/util/clone-deep.js": "./lib/transformation/util/clone-deep-browser.js",
+ "./src/config/files/index.ts": "./src/config/files/index-browser.ts",
+ "./src/config/resolve-targets.ts": "./src/config/resolve-targets-browser.ts",
+ "./src/transform-file.ts": "./src/transform-file-browser.ts",
+ "./src/transformation/util/clone-deep.ts": "./src/transformation/util/clone-deep-browser.ts"
+ },
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.17.9",
+ "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/helper-module-transforms": "^7.17.7",
+ "@babel/helpers": "^7.17.9",
+ "@babel/parser": "^7.17.9",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.9",
+ "@babel/types": "^7.17.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.1",
+ "semver": "^6.3.0"
+ },
+ "devDependencies": {
+ "@babel/helper-transform-fixture-test-runner": "^7.17.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.17.9",
+ "@jridgewell/trace-mapping": "^0.3.4",
+ "@types/convert-source-map": "^1.5.1",
+ "@types/debug": "^4.1.0",
+ "@types/resolve": "^1.3.2",
+ "@types/semver": "^5.4.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index-browser.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index-browser.ts
new file mode 100644
index 000000000..ac615d9a1
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index-browser.ts
@@ -0,0 +1,109 @@
+import type { Handler } from "gensync";
+
+import type {
+ ConfigFile,
+ IgnoreFile,
+ RelativeConfig,
+ FilePackageData,
+} from "./types";
+
+import type { CallerMetadata } from "../validation/options";
+
+export type { ConfigFile, IgnoreFile, RelativeConfig, FilePackageData };
+
+export function findConfigUpwards(
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ rootDir: string,
+): string | null {
+ return null;
+}
+
+// eslint-disable-next-line require-yield
+export function* findPackageData(filepath: string): Handler {
+ return {
+ filepath,
+ directories: [],
+ pkg: null,
+ isPackage: false,
+ };
+}
+
+// eslint-disable-next-line require-yield
+export function* findRelativeConfig(
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ pkgData: FilePackageData,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ envName: string,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ caller: CallerMetadata | void,
+): Handler {
+ return { config: null, ignore: null };
+}
+
+// eslint-disable-next-line require-yield
+export function* findRootConfig(
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ dirname: string,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ envName: string,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ caller: CallerMetadata | void,
+): Handler {
+ return null;
+}
+
+// eslint-disable-next-line require-yield
+export function* loadConfig(
+ name: string,
+ dirname: string,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ envName: string,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ caller: CallerMetadata | void,
+): Handler {
+ throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);
+}
+
+// eslint-disable-next-line require-yield
+export function* resolveShowConfigPath(
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ dirname: string,
+): Handler {
+ return null;
+}
+
+export const ROOT_CONFIG_FILENAMES = [];
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+export function resolvePlugin(name: string, dirname: string): string | null {
+ return null;
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+export function resolvePreset(name: string, dirname: string): string | null {
+ return null;
+}
+
+export function loadPlugin(
+ name: string,
+ dirname: string,
+): Handler<{
+ filepath: string;
+ value: unknown;
+}> {
+ throw new Error(
+ `Cannot load plugin ${name} relative to ${dirname} in a browser`,
+ );
+}
+
+export function loadPreset(
+ name: string,
+ dirname: string,
+): Handler<{
+ filepath: string;
+ value: unknown;
+}> {
+ throw new Error(
+ `Cannot load preset ${name} relative to ${dirname} in a browser`,
+ );
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index.ts
new file mode 100644
index 000000000..31e856027
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/files/index.ts
@@ -0,0 +1,30 @@
+type indexBrowserType = typeof import("./index-browser");
+type indexType = typeof import("./index");
+
+// Kind of gross, but essentially asserting that the exports of this module are the same as the
+// exports of index-browser, since this file may be replaced at bundle time with index-browser.
+({} as any as indexBrowserType as indexType);
+
+export { findPackageData } from "./package";
+
+export {
+ findConfigUpwards,
+ findRelativeConfig,
+ findRootConfig,
+ loadConfig,
+ resolveShowConfigPath,
+ ROOT_CONFIG_FILENAMES,
+} from "./configuration";
+export type {
+ ConfigFile,
+ IgnoreFile,
+ RelativeConfig,
+ FilePackageData,
+} from "./types";
+export { loadPlugin, loadPreset } from "./plugins";
+
+import gensync from "gensync";
+import * as plugins from "./plugins";
+
+export const resolvePlugin = gensync(plugins.resolvePlugin).sync;
+export const resolvePreset = gensync(plugins.resolvePreset).sync;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets-browser.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets-browser.ts
new file mode 100644
index 000000000..2d91c9216
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets-browser.ts
@@ -0,0 +1,33 @@
+import type { ValidatedOptions } from "./validation/options";
+import getTargets from "@babel/helper-compilation-targets";
+
+import type { Targets } from "@babel/helper-compilation-targets";
+
+export function resolveBrowserslistConfigFile(
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ browserslistConfigFile: string,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ configFilePath: string,
+): string | void {
+ return undefined;
+}
+
+export function resolveTargets(
+ options: ValidatedOptions,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ root: string,
+): Targets {
+ // todo(flow->ts) remove any and refactor to not assign different types into same variable
+ let targets: any = options.targets;
+ if (typeof targets === "string" || Array.isArray(targets)) {
+ targets = { browsers: targets };
+ }
+ if (targets && targets.esmodules) {
+ targets = { ...targets, esmodules: "intersect" };
+ }
+
+ return getTargets(targets, {
+ ignoreBrowserslistConfig: true,
+ browserslistEnv: options.browserslistEnv,
+ });
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets.ts
new file mode 100644
index 000000000..90a443ed3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/config/resolve-targets.ts
@@ -0,0 +1,49 @@
+type browserType = typeof import("./resolve-targets-browser");
+type nodeType = typeof import("./resolve-targets");
+
+// Kind of gross, but essentially asserting that the exports of this module are the same as the
+// exports of index-browser, since this file may be replaced at bundle time with index-browser.
+({} as any as browserType as nodeType);
+
+import type { ValidatedOptions } from "./validation/options";
+import path from "path";
+import getTargets from "@babel/helper-compilation-targets";
+
+import type { Targets } from "@babel/helper-compilation-targets";
+
+export function resolveBrowserslistConfigFile(
+ browserslistConfigFile: string,
+ configFileDir: string,
+): string | undefined {
+ return path.resolve(configFileDir, browserslistConfigFile);
+}
+
+export function resolveTargets(
+ options: ValidatedOptions,
+ root: string,
+): Targets {
+ // todo(flow->ts) remove any and refactor to not assign different types into same variable
+ let targets: any = options.targets;
+ if (typeof targets === "string" || Array.isArray(targets)) {
+ targets = { browsers: targets };
+ }
+ if (targets && targets.esmodules) {
+ targets = { ...targets, esmodules: "intersect" };
+ }
+
+ const { browserslistConfigFile } = options;
+ let configFile;
+ let ignoreBrowserslistConfig = false;
+ if (typeof browserslistConfigFile === "string") {
+ configFile = browserslistConfigFile;
+ } else {
+ ignoreBrowserslistConfig = browserslistConfigFile === false;
+ }
+
+ return getTargets(targets, {
+ ignoreBrowserslistConfig,
+ configFile,
+ configPath: root,
+ browserslistEnv: options.browserslistEnv,
+ });
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file-browser.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file-browser.ts
new file mode 100644
index 000000000..1adbcd649
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file-browser.ts
@@ -0,0 +1,27 @@
+// duplicated from transform-file so we do not have to import anything here
+type TransformFile = {
+ (filename: string, callback: Function): void;
+ (filename: string, opts: any, callback: Function): void;
+};
+
+export const transformFile: TransformFile = function transformFile(
+ filename,
+ opts,
+ callback?,
+) {
+ if (typeof opts === "function") {
+ callback = opts;
+ }
+
+ callback(new Error("Transforming files is not supported in browsers"), null);
+};
+
+export function transformFileSync(): never {
+ throw new Error("Transforming files is not supported in browsers");
+}
+
+export function transformFileAsync() {
+ return Promise.reject(
+ new Error("Transforming files is not supported in browsers"),
+ );
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file.ts
new file mode 100644
index 000000000..4be0e16ac
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transform-file.ts
@@ -0,0 +1,40 @@
+import gensync from "gensync";
+
+import loadConfig from "./config";
+import type { InputOptions, ResolvedConfig } from "./config";
+import { run } from "./transformation";
+import type { FileResult, FileResultCallback } from "./transformation";
+import * as fs from "./gensync-utils/fs";
+
+type transformFileBrowserType = typeof import("./transform-file-browser");
+type transformFileType = typeof import("./transform-file");
+
+// Kind of gross, but essentially asserting that the exports of this module are the same as the
+// exports of transform-file-browser, since this file may be replaced at bundle time with
+// transform-file-browser.
+({} as any as transformFileBrowserType as transformFileType);
+
+type TransformFile = {
+ (filename: string, callback: FileResultCallback): void;
+ (
+ filename: string,
+ opts: InputOptions | undefined | null,
+ callback: FileResultCallback,
+ ): void;
+};
+
+const transformFileRunner = gensync<
+ (filename: string, opts?: InputOptions) => FileResult | null
+>(function* (filename, opts: InputOptions) {
+ const options = { ...opts, filename };
+
+ const config: ResolvedConfig | null = yield* loadConfig(options);
+ if (config === null) return null;
+
+ const code = yield* fs.readFile(filename, "utf8");
+ return yield* run(config, code);
+});
+
+export const transformFile = transformFileRunner.errback as TransformFile;
+export const transformFileSync = transformFileRunner.sync;
+export const transformFileAsync = transformFileRunner.async;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep-browser.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep-browser.ts
new file mode 100644
index 000000000..78ae53ebf
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep-browser.ts
@@ -0,0 +1,19 @@
+const serialized = "$$ babel internal serialized type" + Math.random();
+
+function serialize(key, value) {
+ if (typeof value !== "bigint") return value;
+ return {
+ [serialized]: "BigInt",
+ value: value.toString(),
+ };
+}
+
+function revive(key, value) {
+ if (!value || typeof value !== "object") return value;
+ if (value[serialized] !== "BigInt") return value;
+ return BigInt(value.value);
+}
+
+export default function (value) {
+ return JSON.parse(JSON.stringify(value, serialize), revive);
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep.ts b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep.ts
new file mode 100644
index 000000000..cc077ce93
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/core/src/transformation/util/clone-deep.ts
@@ -0,0 +1,9 @@
+import v8 from "v8";
+import cloneDeep from "./clone-deep-browser";
+
+export default function (value) {
+ if (v8.deserialize && v8.serialize) {
+ return v8.deserialize(v8.serialize(value));
+ }
+ return cloneDeep(value);
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/generator/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/README.md b/weekly_mission_2/examples_4/node_modules/@babel/generator/README.md
new file mode 100644
index 000000000..b760238eb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/README.md
@@ -0,0 +1,19 @@
+# @babel/generator
+
+> Turns an AST into code.
+
+See our website [@babel/generator](https://babeljs.io/docs/en/babel-generator) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/generator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/generator --dev
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/buffer.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/buffer.js
new file mode 100644
index 000000000..144581396
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/buffer.js
@@ -0,0 +1,265 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+const SPACES_RE = /^[ \t]+$/;
+
+class Buffer {
+ constructor(map) {
+ this._map = null;
+ this._buf = "";
+ this._last = 0;
+ this._queue = [];
+ this._position = {
+ line: 1,
+ column: 0
+ };
+ this._sourcePosition = {
+ identifierName: null,
+ line: null,
+ column: null,
+ filename: null
+ };
+ this._disallowedPop = null;
+ this._map = map;
+ }
+
+ get() {
+ this._flush();
+
+ const map = this._map;
+ const result = {
+ code: this._buf.trimRight(),
+ map: null,
+ rawMappings: map == null ? void 0 : map.getRawMappings()
+ };
+
+ if (map) {
+ Object.defineProperty(result, "map", {
+ configurable: true,
+ enumerable: true,
+
+ get() {
+ return this.map = map.get();
+ },
+
+ set(value) {
+ Object.defineProperty(this, "map", {
+ value,
+ writable: true
+ });
+ }
+
+ });
+ }
+
+ return result;
+ }
+
+ append(str) {
+ this._flush();
+
+ const {
+ line,
+ column,
+ filename,
+ identifierName,
+ force
+ } = this._sourcePosition;
+
+ this._append(str, line, column, identifierName, filename, force);
+ }
+
+ queue(str) {
+ if (str === "\n") {
+ while (this._queue.length > 0 && SPACES_RE.test(this._queue[0][0])) {
+ this._queue.shift();
+ }
+ }
+
+ const {
+ line,
+ column,
+ filename,
+ identifierName,
+ force
+ } = this._sourcePosition;
+
+ this._queue.unshift([str, line, column, identifierName, filename, force]);
+ }
+
+ _flush() {
+ let item;
+
+ while (item = this._queue.pop()) {
+ this._append(...item);
+ }
+ }
+
+ _append(str, line, column, identifierName, filename, force) {
+ this._buf += str;
+ this._last = str.charCodeAt(str.length - 1);
+ let i = str.indexOf("\n");
+ let last = 0;
+
+ if (i !== 0) {
+ this._mark(line, column, identifierName, filename, force);
+ }
+
+ while (i !== -1) {
+ this._position.line++;
+ this._position.column = 0;
+ last = i + 1;
+
+ if (last < str.length) {
+ this._mark(++line, 0, identifierName, filename, force);
+ }
+
+ i = str.indexOf("\n", last);
+ }
+
+ this._position.column += str.length - last;
+ }
+
+ _mark(line, column, identifierName, filename, force) {
+ var _this$_map;
+
+ (_this$_map = this._map) == null ? void 0 : _this$_map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force);
+ }
+
+ removeTrailingNewline() {
+ if (this._queue.length > 0 && this._queue[0][0] === "\n") {
+ this._queue.shift();
+ }
+ }
+
+ removeLastSemicolon() {
+ if (this._queue.length > 0 && this._queue[0][0] === ";") {
+ this._queue.shift();
+ }
+ }
+
+ getLastChar() {
+ let last;
+
+ if (this._queue.length > 0) {
+ const str = this._queue[0][0];
+ last = str.charCodeAt(0);
+ } else {
+ last = this._last;
+ }
+
+ return last;
+ }
+
+ endsWithCharAndNewline() {
+ const queue = this._queue;
+
+ if (queue.length > 0) {
+ const last = queue[0][0];
+ const lastCp = last.charCodeAt(0);
+ if (lastCp !== 10) return;
+
+ if (queue.length > 1) {
+ const secondLast = queue[1][0];
+ return secondLast.charCodeAt(0);
+ } else {
+ return this._last;
+ }
+ }
+ }
+
+ hasContent() {
+ return this._queue.length > 0 || !!this._last;
+ }
+
+ exactSource(loc, cb) {
+ this.source("start", loc, true);
+ cb();
+ this.source("end", loc);
+
+ this._disallowPop("start", loc);
+ }
+
+ source(prop, loc, force) {
+ if (prop && !loc) return;
+
+ this._normalizePosition(prop, loc, this._sourcePosition, force);
+ }
+
+ withSource(prop, loc, cb) {
+ if (!this._map) return cb();
+ const originalLine = this._sourcePosition.line;
+ const originalColumn = this._sourcePosition.column;
+ const originalFilename = this._sourcePosition.filename;
+ const originalIdentifierName = this._sourcePosition.identifierName;
+ this.source(prop, loc);
+ cb();
+
+ if ((!this._sourcePosition.force || this._sourcePosition.line !== originalLine || this._sourcePosition.column !== originalColumn || this._sourcePosition.filename !== originalFilename) && (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename)) {
+ this._sourcePosition.line = originalLine;
+ this._sourcePosition.column = originalColumn;
+ this._sourcePosition.filename = originalFilename;
+ this._sourcePosition.identifierName = originalIdentifierName;
+ this._sourcePosition.force = false;
+ this._disallowedPop = null;
+ }
+ }
+
+ _disallowPop(prop, loc) {
+ if (prop && !loc) return;
+ this._disallowedPop = this._normalizePosition(prop, loc);
+ }
+
+ _normalizePosition(prop, loc, targetObj, force) {
+ const pos = loc ? loc[prop] : null;
+
+ if (targetObj === undefined) {
+ targetObj = {
+ identifierName: null,
+ line: null,
+ column: null,
+ filename: null,
+ force: false
+ };
+ }
+
+ const origLine = targetObj.line;
+ const origColumn = targetObj.column;
+ const origFilename = targetObj.filename;
+ targetObj.identifierName = prop === "start" && (loc == null ? void 0 : loc.identifierName) || null;
+ targetObj.line = pos == null ? void 0 : pos.line;
+ targetObj.column = pos == null ? void 0 : pos.column;
+ targetObj.filename = loc == null ? void 0 : loc.filename;
+
+ if (force || targetObj.line !== origLine || targetObj.column !== origColumn || targetObj.filename !== origFilename) {
+ targetObj.force = force;
+ }
+
+ return targetObj;
+ }
+
+ getCurrentColumn() {
+ const extra = this._queue.reduce((acc, item) => item[0] + acc, "");
+
+ const lastIndex = extra.lastIndexOf("\n");
+ return lastIndex === -1 ? this._position.column + extra.length : extra.length - 1 - lastIndex;
+ }
+
+ getCurrentLine() {
+ const extra = this._queue.reduce((acc, item) => item[0] + acc, "");
+
+ let count = 0;
+
+ for (let i = 0; i < extra.length; i++) {
+ if (extra[i] === "\n") count++;
+ }
+
+ return this._position.line + count;
+ }
+
+}
+
+exports.default = Buffer;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/base.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/base.js
new file mode 100644
index 000000000..be9285cc6
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/base.js
@@ -0,0 +1,96 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.BlockStatement = BlockStatement;
+exports.Directive = Directive;
+exports.DirectiveLiteral = DirectiveLiteral;
+exports.File = File;
+exports.InterpreterDirective = InterpreterDirective;
+exports.Placeholder = Placeholder;
+exports.Program = Program;
+
+function File(node) {
+ if (node.program) {
+ this.print(node.program.interpreter, node);
+ }
+
+ this.print(node.program, node);
+}
+
+function Program(node) {
+ this.printInnerComments(node, false);
+ this.printSequence(node.directives, node);
+ if (node.directives && node.directives.length) this.newline();
+ this.printSequence(node.body, node);
+}
+
+function BlockStatement(node) {
+ var _node$directives;
+
+ this.token("{");
+ this.printInnerComments(node);
+ const hasDirectives = (_node$directives = node.directives) == null ? void 0 : _node$directives.length;
+
+ if (node.body.length || hasDirectives) {
+ this.newline();
+ this.printSequence(node.directives, node, {
+ indent: true
+ });
+ if (hasDirectives) this.newline();
+ this.printSequence(node.body, node, {
+ indent: true
+ });
+ this.removeTrailingNewline();
+ this.source("end", node.loc);
+ if (!this.endsWith(10)) this.newline();
+ this.rightBrace();
+ } else {
+ this.source("end", node.loc);
+ this.token("}");
+ }
+}
+
+function Directive(node) {
+ this.print(node.value, node);
+ this.semicolon();
+}
+
+const unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/;
+const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/;
+
+function DirectiveLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (!this.format.minified && raw != null) {
+ this.token(raw);
+ return;
+ }
+
+ const {
+ value
+ } = node;
+
+ if (!unescapedDoubleQuoteRE.test(value)) {
+ this.token(`"${value}"`);
+ } else if (!unescapedSingleQuoteRE.test(value)) {
+ this.token(`'${value}'`);
+ } else {
+ throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes.");
+ }
+}
+
+function InterpreterDirective(node) {
+ this.token(`#!${node.value}\n`);
+}
+
+function Placeholder(node) {
+ this.token("%%");
+ this.print(node.name);
+ this.token("%%");
+
+ if (node.expectedNode === "Statement") {
+ this.semicolon();
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/classes.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/classes.js
new file mode 100644
index 000000000..141dfdaf1
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/classes.js
@@ -0,0 +1,213 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ClassAccessorProperty = ClassAccessorProperty;
+exports.ClassBody = ClassBody;
+exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration;
+exports.ClassMethod = ClassMethod;
+exports.ClassPrivateMethod = ClassPrivateMethod;
+exports.ClassPrivateProperty = ClassPrivateProperty;
+exports.ClassProperty = ClassProperty;
+exports.StaticBlock = StaticBlock;
+exports._classMethodHead = _classMethodHead;
+
+var _t = require("@babel/types");
+
+const {
+ isExportDefaultDeclaration,
+ isExportNamedDeclaration
+} = _t;
+
+function ClassDeclaration(node, parent) {
+ if (!this.format.decoratorsBeforeExport || !isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) {
+ this.printJoin(node.decorators, node);
+ }
+
+ if (node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (node.abstract) {
+ this.word("abstract");
+ this.space();
+ }
+
+ this.word("class");
+ this.printInnerComments(node);
+
+ if (node.id) {
+ this.space();
+ this.print(node.id, node);
+ }
+
+ this.print(node.typeParameters, node);
+
+ if (node.superClass) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.print(node.superClass, node);
+ this.print(node.superTypeParameters, node);
+ }
+
+ if (node.implements) {
+ this.space();
+ this.word("implements");
+ this.space();
+ this.printList(node.implements, node);
+ }
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ClassBody(node) {
+ this.token("{");
+ this.printInnerComments(node);
+
+ if (node.body.length === 0) {
+ this.token("}");
+ } else {
+ this.newline();
+ this.indent();
+ this.printSequence(node.body, node);
+ this.dedent();
+ if (!this.endsWith(10)) this.newline();
+ this.rightBrace();
+ }
+}
+
+function ClassProperty(node) {
+ this.printJoin(node.decorators, node);
+ this.source("end", node.key.loc);
+ this.tsPrintClassMemberModifiers(node, true);
+
+ if (node.computed) {
+ this.token("[");
+ this.print(node.key, node);
+ this.token("]");
+ } else {
+ this._variance(node);
+
+ this.print(node.key, node);
+ }
+
+ if (node.optional) {
+ this.token("?");
+ }
+
+ if (node.definite) {
+ this.token("!");
+ }
+
+ this.print(node.typeAnnotation, node);
+
+ if (node.value) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.value, node);
+ }
+
+ this.semicolon();
+}
+
+function ClassAccessorProperty(node) {
+ this.printJoin(node.decorators, node);
+ this.source("end", node.key.loc);
+ this.tsPrintClassMemberModifiers(node, true);
+ this.word("accessor");
+ this.printInnerComments(node);
+ this.space();
+
+ if (node.computed) {
+ this.token("[");
+ this.print(node.key, node);
+ this.token("]");
+ } else {
+ this._variance(node);
+
+ this.print(node.key, node);
+ }
+
+ if (node.optional) {
+ this.token("?");
+ }
+
+ if (node.definite) {
+ this.token("!");
+ }
+
+ this.print(node.typeAnnotation, node);
+
+ if (node.value) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.value, node);
+ }
+
+ this.semicolon();
+}
+
+function ClassPrivateProperty(node) {
+ this.printJoin(node.decorators, node);
+
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this.print(node.key, node);
+ this.print(node.typeAnnotation, node);
+
+ if (node.value) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.value, node);
+ }
+
+ this.semicolon();
+}
+
+function ClassMethod(node) {
+ this._classMethodHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ClassPrivateMethod(node) {
+ this._classMethodHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function _classMethodHead(node) {
+ this.printJoin(node.decorators, node);
+ this.source("end", node.key.loc);
+ this.tsPrintClassMemberModifiers(node, false);
+
+ this._methodHead(node);
+}
+
+function StaticBlock(node) {
+ this.word("static");
+ this.space();
+ this.token("{");
+
+ if (node.body.length === 0) {
+ this.token("}");
+ } else {
+ this.newline();
+ this.printSequence(node.body, node, {
+ indent: true
+ });
+ this.rightBrace();
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/expressions.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/expressions.js
new file mode 100644
index 000000000..c1caf0d2f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/expressions.js
@@ -0,0 +1,354 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression;
+exports.AssignmentPattern = AssignmentPattern;
+exports.AwaitExpression = void 0;
+exports.BindExpression = BindExpression;
+exports.CallExpression = CallExpression;
+exports.ConditionalExpression = ConditionalExpression;
+exports.Decorator = Decorator;
+exports.DoExpression = DoExpression;
+exports.EmptyStatement = EmptyStatement;
+exports.ExpressionStatement = ExpressionStatement;
+exports.Import = Import;
+exports.MemberExpression = MemberExpression;
+exports.MetaProperty = MetaProperty;
+exports.ModuleExpression = ModuleExpression;
+exports.NewExpression = NewExpression;
+exports.OptionalCallExpression = OptionalCallExpression;
+exports.OptionalMemberExpression = OptionalMemberExpression;
+exports.ParenthesizedExpression = ParenthesizedExpression;
+exports.PrivateName = PrivateName;
+exports.SequenceExpression = SequenceExpression;
+exports.Super = Super;
+exports.ThisExpression = ThisExpression;
+exports.UnaryExpression = UnaryExpression;
+exports.UpdateExpression = UpdateExpression;
+exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier;
+exports.YieldExpression = void 0;
+
+var _t = require("@babel/types");
+
+var n = require("../node");
+
+const {
+ isCallExpression,
+ isLiteral,
+ isMemberExpression,
+ isNewExpression
+} = _t;
+
+function UnaryExpression(node) {
+ if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof" || node.operator === "throw") {
+ this.word(node.operator);
+ this.space();
+ } else {
+ this.token(node.operator);
+ }
+
+ this.print(node.argument, node);
+}
+
+function DoExpression(node) {
+ if (node.async) {
+ this.word("async");
+ this.space();
+ }
+
+ this.word("do");
+ this.space();
+ this.print(node.body, node);
+}
+
+function ParenthesizedExpression(node) {
+ this.token("(");
+ this.print(node.expression, node);
+ this.token(")");
+}
+
+function UpdateExpression(node) {
+ if (node.prefix) {
+ this.token(node.operator);
+ this.print(node.argument, node);
+ } else {
+ this.startTerminatorless(true);
+ this.print(node.argument, node);
+ this.endTerminatorless();
+ this.token(node.operator);
+ }
+}
+
+function ConditionalExpression(node) {
+ this.print(node.test, node);
+ this.space();
+ this.token("?");
+ this.space();
+ this.print(node.consequent, node);
+ this.space();
+ this.token(":");
+ this.space();
+ this.print(node.alternate, node);
+}
+
+function NewExpression(node, parent) {
+ this.word("new");
+ this.space();
+ this.print(node.callee, node);
+
+ if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression(parent, {
+ callee: node
+ }) && !isMemberExpression(parent) && !isNewExpression(parent)) {
+ return;
+ }
+
+ this.print(node.typeArguments, node);
+ this.print(node.typeParameters, node);
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ this.token("(");
+ this.printList(node.arguments, node);
+ this.token(")");
+}
+
+function SequenceExpression(node) {
+ this.printList(node.expressions, node);
+}
+
+function ThisExpression() {
+ this.word("this");
+}
+
+function Super() {
+ this.word("super");
+}
+
+function isDecoratorMemberExpression(node) {
+ switch (node.type) {
+ case "Identifier":
+ return true;
+
+ case "MemberExpression":
+ return !node.computed && node.property.type === "Identifier" && isDecoratorMemberExpression(node.object);
+
+ default:
+ return false;
+ }
+}
+
+function shouldParenthesizeDecoratorExpression(node) {
+ if (node.type === "CallExpression") {
+ node = node.callee;
+ }
+
+ if (node.type === "ParenthesizedExpression") {
+ return false;
+ }
+
+ return !isDecoratorMemberExpression(node);
+}
+
+function Decorator(node) {
+ this.token("@");
+ const {
+ expression
+ } = node;
+
+ if (shouldParenthesizeDecoratorExpression(expression)) {
+ this.token("(");
+ this.print(expression, node);
+ this.token(")");
+ } else {
+ this.print(expression, node);
+ }
+
+ this.newline();
+}
+
+function OptionalMemberExpression(node) {
+ this.print(node.object, node);
+
+ if (!node.computed && isMemberExpression(node.property)) {
+ throw new TypeError("Got a MemberExpression for MemberExpression property");
+ }
+
+ let computed = node.computed;
+
+ if (isLiteral(node.property) && typeof node.property.value === "number") {
+ computed = true;
+ }
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ if (computed) {
+ this.token("[");
+ this.print(node.property, node);
+ this.token("]");
+ } else {
+ if (!node.optional) {
+ this.token(".");
+ }
+
+ this.print(node.property, node);
+ }
+}
+
+function OptionalCallExpression(node) {
+ this.print(node.callee, node);
+ this.print(node.typeArguments, node);
+ this.print(node.typeParameters, node);
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ this.token("(");
+ this.printList(node.arguments, node);
+ this.token(")");
+}
+
+function CallExpression(node) {
+ this.print(node.callee, node);
+ this.print(node.typeArguments, node);
+ this.print(node.typeParameters, node);
+ this.token("(");
+ this.printList(node.arguments, node);
+ this.token(")");
+}
+
+function Import() {
+ this.word("import");
+}
+
+function buildYieldAwait(keyword) {
+ return function (node) {
+ this.word(keyword);
+
+ if (node.delegate) {
+ this.token("*");
+ }
+
+ if (node.argument) {
+ this.space();
+ const terminatorState = this.startTerminatorless();
+ this.print(node.argument, node);
+ this.endTerminatorless(terminatorState);
+ }
+ };
+}
+
+const YieldExpression = buildYieldAwait("yield");
+exports.YieldExpression = YieldExpression;
+const AwaitExpression = buildYieldAwait("await");
+exports.AwaitExpression = AwaitExpression;
+
+function EmptyStatement() {
+ this.semicolon(true);
+}
+
+function ExpressionStatement(node) {
+ this.print(node.expression, node);
+ this.semicolon();
+}
+
+function AssignmentPattern(node) {
+ this.print(node.left, node);
+ if (node.left.optional) this.token("?");
+ this.print(node.left.typeAnnotation, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.right, node);
+}
+
+function AssignmentExpression(node, parent) {
+ const parens = this.inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent);
+
+ if (parens) {
+ this.token("(");
+ }
+
+ this.print(node.left, node);
+ this.space();
+
+ if (node.operator === "in" || node.operator === "instanceof") {
+ this.word(node.operator);
+ } else {
+ this.token(node.operator);
+ }
+
+ this.space();
+ this.print(node.right, node);
+
+ if (parens) {
+ this.token(")");
+ }
+}
+
+function BindExpression(node) {
+ this.print(node.object, node);
+ this.token("::");
+ this.print(node.callee, node);
+}
+
+function MemberExpression(node) {
+ this.print(node.object, node);
+
+ if (!node.computed && isMemberExpression(node.property)) {
+ throw new TypeError("Got a MemberExpression for MemberExpression property");
+ }
+
+ let computed = node.computed;
+
+ if (isLiteral(node.property) && typeof node.property.value === "number") {
+ computed = true;
+ }
+
+ if (computed) {
+ this.token("[");
+ this.print(node.property, node);
+ this.token("]");
+ } else {
+ this.token(".");
+ this.print(node.property, node);
+ }
+}
+
+function MetaProperty(node) {
+ this.print(node.meta, node);
+ this.token(".");
+ this.print(node.property, node);
+}
+
+function PrivateName(node) {
+ this.token("#");
+ this.print(node.id, node);
+}
+
+function V8IntrinsicIdentifier(node) {
+ this.token("%");
+ this.word(node.name);
+}
+
+function ModuleExpression(node) {
+ this.word("module");
+ this.space();
+ this.token("{");
+
+ if (node.body.body.length === 0) {
+ this.token("}");
+ } else {
+ this.newline();
+ this.printSequence(node.body.body, node, {
+ indent: true
+ });
+ this.rightBrace();
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/flow.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/flow.js
new file mode 100644
index 000000000..7c0bc7d30
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/flow.js
@@ -0,0 +1,795 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.AnyTypeAnnotation = AnyTypeAnnotation;
+exports.ArrayTypeAnnotation = ArrayTypeAnnotation;
+exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation;
+exports.BooleanTypeAnnotation = BooleanTypeAnnotation;
+exports.DeclareClass = DeclareClass;
+exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration;
+exports.DeclareExportDeclaration = DeclareExportDeclaration;
+exports.DeclareFunction = DeclareFunction;
+exports.DeclareInterface = DeclareInterface;
+exports.DeclareModule = DeclareModule;
+exports.DeclareModuleExports = DeclareModuleExports;
+exports.DeclareOpaqueType = DeclareOpaqueType;
+exports.DeclareTypeAlias = DeclareTypeAlias;
+exports.DeclareVariable = DeclareVariable;
+exports.DeclaredPredicate = DeclaredPredicate;
+exports.EmptyTypeAnnotation = EmptyTypeAnnotation;
+exports.EnumBooleanBody = EnumBooleanBody;
+exports.EnumBooleanMember = EnumBooleanMember;
+exports.EnumDeclaration = EnumDeclaration;
+exports.EnumDefaultedMember = EnumDefaultedMember;
+exports.EnumNumberBody = EnumNumberBody;
+exports.EnumNumberMember = EnumNumberMember;
+exports.EnumStringBody = EnumStringBody;
+exports.EnumStringMember = EnumStringMember;
+exports.EnumSymbolBody = EnumSymbolBody;
+exports.ExistsTypeAnnotation = ExistsTypeAnnotation;
+exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
+exports.FunctionTypeParam = FunctionTypeParam;
+exports.IndexedAccessType = IndexedAccessType;
+exports.InferredPredicate = InferredPredicate;
+exports.InterfaceDeclaration = InterfaceDeclaration;
+exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends;
+exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation;
+exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation;
+exports.MixedTypeAnnotation = MixedTypeAnnotation;
+exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation;
+exports.NullableTypeAnnotation = NullableTypeAnnotation;
+Object.defineProperty(exports, "NumberLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _types2.NumericLiteral;
+ }
+});
+exports.NumberTypeAnnotation = NumberTypeAnnotation;
+exports.ObjectTypeAnnotation = ObjectTypeAnnotation;
+exports.ObjectTypeCallProperty = ObjectTypeCallProperty;
+exports.ObjectTypeIndexer = ObjectTypeIndexer;
+exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot;
+exports.ObjectTypeProperty = ObjectTypeProperty;
+exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty;
+exports.OpaqueType = OpaqueType;
+exports.OptionalIndexedAccessType = OptionalIndexedAccessType;
+exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier;
+Object.defineProperty(exports, "StringLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _types2.StringLiteral;
+ }
+});
+exports.StringTypeAnnotation = StringTypeAnnotation;
+exports.SymbolTypeAnnotation = SymbolTypeAnnotation;
+exports.ThisTypeAnnotation = ThisTypeAnnotation;
+exports.TupleTypeAnnotation = TupleTypeAnnotation;
+exports.TypeAlias = TypeAlias;
+exports.TypeAnnotation = TypeAnnotation;
+exports.TypeCastExpression = TypeCastExpression;
+exports.TypeParameter = TypeParameter;
+exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation;
+exports.TypeofTypeAnnotation = TypeofTypeAnnotation;
+exports.UnionTypeAnnotation = UnionTypeAnnotation;
+exports.Variance = Variance;
+exports.VoidTypeAnnotation = VoidTypeAnnotation;
+exports._interfaceish = _interfaceish;
+exports._variance = _variance;
+
+var _t = require("@babel/types");
+
+var _modules = require("./modules");
+
+var _types2 = require("./types");
+
+const {
+ isDeclareExportDeclaration,
+ isStatement
+} = _t;
+
+function AnyTypeAnnotation() {
+ this.word("any");
+}
+
+function ArrayTypeAnnotation(node) {
+ this.print(node.elementType, node);
+ this.token("[");
+ this.token("]");
+}
+
+function BooleanTypeAnnotation() {
+ this.word("boolean");
+}
+
+function BooleanLiteralTypeAnnotation(node) {
+ this.word(node.value ? "true" : "false");
+}
+
+function NullLiteralTypeAnnotation() {
+ this.word("null");
+}
+
+function DeclareClass(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("class");
+ this.space();
+
+ this._interfaceish(node);
+}
+
+function DeclareFunction(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("function");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.id.typeAnnotation.typeAnnotation, node);
+
+ if (node.predicate) {
+ this.space();
+ this.print(node.predicate, node);
+ }
+
+ this.semicolon();
+}
+
+function InferredPredicate() {
+ this.token("%");
+ this.word("checks");
+}
+
+function DeclaredPredicate(node) {
+ this.token("%");
+ this.word("checks");
+ this.token("(");
+ this.print(node.value, node);
+ this.token(")");
+}
+
+function DeclareInterface(node) {
+ this.word("declare");
+ this.space();
+ this.InterfaceDeclaration(node);
+}
+
+function DeclareModule(node) {
+ this.word("declare");
+ this.space();
+ this.word("module");
+ this.space();
+ this.print(node.id, node);
+ this.space();
+ this.print(node.body, node);
+}
+
+function DeclareModuleExports(node) {
+ this.word("declare");
+ this.space();
+ this.word("module");
+ this.token(".");
+ this.word("exports");
+ this.print(node.typeAnnotation, node);
+}
+
+function DeclareTypeAlias(node) {
+ this.word("declare");
+ this.space();
+ this.TypeAlias(node);
+}
+
+function DeclareOpaqueType(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.OpaqueType(node);
+}
+
+function DeclareVariable(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("var");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.id.typeAnnotation, node);
+ this.semicolon();
+}
+
+function DeclareExportDeclaration(node) {
+ this.word("declare");
+ this.space();
+ this.word("export");
+ this.space();
+
+ if (node.default) {
+ this.word("default");
+ this.space();
+ }
+
+ FlowExportDeclaration.apply(this, arguments);
+}
+
+function DeclareExportAllDeclaration() {
+ this.word("declare");
+ this.space();
+
+ _modules.ExportAllDeclaration.apply(this, arguments);
+}
+
+function EnumDeclaration(node) {
+ const {
+ id,
+ body
+ } = node;
+ this.word("enum");
+ this.space();
+ this.print(id, node);
+ this.print(body, node);
+}
+
+function enumExplicitType(context, name, hasExplicitType) {
+ if (hasExplicitType) {
+ context.space();
+ context.word("of");
+ context.space();
+ context.word(name);
+ }
+
+ context.space();
+}
+
+function enumBody(context, node) {
+ const {
+ members
+ } = node;
+ context.token("{");
+ context.indent();
+ context.newline();
+
+ for (const member of members) {
+ context.print(member, node);
+ context.newline();
+ }
+
+ if (node.hasUnknownMembers) {
+ context.token("...");
+ context.newline();
+ }
+
+ context.dedent();
+ context.token("}");
+}
+
+function EnumBooleanBody(node) {
+ const {
+ explicitType
+ } = node;
+ enumExplicitType(this, "boolean", explicitType);
+ enumBody(this, node);
+}
+
+function EnumNumberBody(node) {
+ const {
+ explicitType
+ } = node;
+ enumExplicitType(this, "number", explicitType);
+ enumBody(this, node);
+}
+
+function EnumStringBody(node) {
+ const {
+ explicitType
+ } = node;
+ enumExplicitType(this, "string", explicitType);
+ enumBody(this, node);
+}
+
+function EnumSymbolBody(node) {
+ enumExplicitType(this, "symbol", true);
+ enumBody(this, node);
+}
+
+function EnumDefaultedMember(node) {
+ const {
+ id
+ } = node;
+ this.print(id, node);
+ this.token(",");
+}
+
+function enumInitializedMember(context, node) {
+ const {
+ id,
+ init
+ } = node;
+ context.print(id, node);
+ context.space();
+ context.token("=");
+ context.space();
+ context.print(init, node);
+ context.token(",");
+}
+
+function EnumBooleanMember(node) {
+ enumInitializedMember(this, node);
+}
+
+function EnumNumberMember(node) {
+ enumInitializedMember(this, node);
+}
+
+function EnumStringMember(node) {
+ enumInitializedMember(this, node);
+}
+
+function FlowExportDeclaration(node) {
+ if (node.declaration) {
+ const declar = node.declaration;
+ this.print(declar, node);
+ if (!isStatement(declar)) this.semicolon();
+ } else {
+ this.token("{");
+
+ if (node.specifiers.length) {
+ this.space();
+ this.printList(node.specifiers, node);
+ this.space();
+ }
+
+ this.token("}");
+
+ if (node.source) {
+ this.space();
+ this.word("from");
+ this.space();
+ this.print(node.source, node);
+ }
+
+ this.semicolon();
+ }
+}
+
+function ExistsTypeAnnotation() {
+ this.token("*");
+}
+
+function FunctionTypeAnnotation(node, parent) {
+ this.print(node.typeParameters, node);
+ this.token("(");
+
+ if (node.this) {
+ this.word("this");
+ this.token(":");
+ this.space();
+ this.print(node.this.typeAnnotation, node);
+
+ if (node.params.length || node.rest) {
+ this.token(",");
+ this.space();
+ }
+ }
+
+ this.printList(node.params, node);
+
+ if (node.rest) {
+ if (node.params.length) {
+ this.token(",");
+ this.space();
+ }
+
+ this.token("...");
+ this.print(node.rest, node);
+ }
+
+ this.token(")");
+
+ if (parent && (parent.type === "ObjectTypeCallProperty" || parent.type === "DeclareFunction" || parent.type === "ObjectTypeProperty" && parent.method)) {
+ this.token(":");
+ } else {
+ this.space();
+ this.token("=>");
+ }
+
+ this.space();
+ this.print(node.returnType, node);
+}
+
+function FunctionTypeParam(node) {
+ this.print(node.name, node);
+ if (node.optional) this.token("?");
+
+ if (node.name) {
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.typeAnnotation, node);
+}
+
+function InterfaceExtends(node) {
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+}
+
+function _interfaceish(node) {
+ var _node$extends;
+
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+
+ if ((_node$extends = node.extends) != null && _node$extends.length) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.printList(node.extends, node);
+ }
+
+ if (node.mixins && node.mixins.length) {
+ this.space();
+ this.word("mixins");
+ this.space();
+ this.printList(node.mixins, node);
+ }
+
+ if (node.implements && node.implements.length) {
+ this.space();
+ this.word("implements");
+ this.space();
+ this.printList(node.implements, node);
+ }
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function _variance(node) {
+ if (node.variance) {
+ if (node.variance.kind === "plus") {
+ this.token("+");
+ } else if (node.variance.kind === "minus") {
+ this.token("-");
+ }
+ }
+}
+
+function InterfaceDeclaration(node) {
+ this.word("interface");
+ this.space();
+
+ this._interfaceish(node);
+}
+
+function andSeparator() {
+ this.space();
+ this.token("&");
+ this.space();
+}
+
+function InterfaceTypeAnnotation(node) {
+ this.word("interface");
+
+ if (node.extends && node.extends.length) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.printList(node.extends, node);
+ }
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function IntersectionTypeAnnotation(node) {
+ this.printJoin(node.types, node, {
+ separator: andSeparator
+ });
+}
+
+function MixedTypeAnnotation() {
+ this.word("mixed");
+}
+
+function EmptyTypeAnnotation() {
+ this.word("empty");
+}
+
+function NullableTypeAnnotation(node) {
+ this.token("?");
+ this.print(node.typeAnnotation, node);
+}
+
+function NumberTypeAnnotation() {
+ this.word("number");
+}
+
+function StringTypeAnnotation() {
+ this.word("string");
+}
+
+function ThisTypeAnnotation() {
+ this.word("this");
+}
+
+function TupleTypeAnnotation(node) {
+ this.token("[");
+ this.printList(node.types, node);
+ this.token("]");
+}
+
+function TypeofTypeAnnotation(node) {
+ this.word("typeof");
+ this.space();
+ this.print(node.argument, node);
+}
+
+function TypeAlias(node) {
+ this.word("type");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.right, node);
+ this.semicolon();
+}
+
+function TypeAnnotation(node) {
+ this.token(":");
+ this.space();
+ if (node.optional) this.token("?");
+ this.print(node.typeAnnotation, node);
+}
+
+function TypeParameterInstantiation(node) {
+ this.token("<");
+ this.printList(node.params, node, {});
+ this.token(">");
+}
+
+function TypeParameter(node) {
+ this._variance(node);
+
+ this.word(node.name);
+
+ if (node.bound) {
+ this.print(node.bound, node);
+ }
+
+ if (node.default) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.default, node);
+ }
+}
+
+function OpaqueType(node) {
+ this.word("opaque");
+ this.space();
+ this.word("type");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+
+ if (node.supertype) {
+ this.token(":");
+ this.space();
+ this.print(node.supertype, node);
+ }
+
+ if (node.impltype) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.impltype, node);
+ }
+
+ this.semicolon();
+}
+
+function ObjectTypeAnnotation(node) {
+ if (node.exact) {
+ this.token("{|");
+ } else {
+ this.token("{");
+ }
+
+ const props = [...node.properties, ...(node.callProperties || []), ...(node.indexers || []), ...(node.internalSlots || [])];
+
+ if (props.length) {
+ this.space();
+ this.printJoin(props, node, {
+ addNewlines(leading) {
+ if (leading && !props[0]) return 1;
+ },
+
+ indent: true,
+ statement: true,
+ iterator: () => {
+ if (props.length !== 1 || node.inexact) {
+ this.token(",");
+ this.space();
+ }
+ }
+ });
+ this.space();
+ }
+
+ if (node.inexact) {
+ this.indent();
+ this.token("...");
+
+ if (props.length) {
+ this.newline();
+ }
+
+ this.dedent();
+ }
+
+ if (node.exact) {
+ this.token("|}");
+ } else {
+ this.token("}");
+ }
+}
+
+function ObjectTypeInternalSlot(node) {
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this.token("[");
+ this.token("[");
+ this.print(node.id, node);
+ this.token("]");
+ this.token("]");
+ if (node.optional) this.token("?");
+
+ if (!node.method) {
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.value, node);
+}
+
+function ObjectTypeCallProperty(node) {
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this.print(node.value, node);
+}
+
+function ObjectTypeIndexer(node) {
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this._variance(node);
+
+ this.token("[");
+
+ if (node.id) {
+ this.print(node.id, node);
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.key, node);
+ this.token("]");
+ this.token(":");
+ this.space();
+ this.print(node.value, node);
+}
+
+function ObjectTypeProperty(node) {
+ if (node.proto) {
+ this.word("proto");
+ this.space();
+ }
+
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ if (node.kind === "get" || node.kind === "set") {
+ this.word(node.kind);
+ this.space();
+ }
+
+ this._variance(node);
+
+ this.print(node.key, node);
+ if (node.optional) this.token("?");
+
+ if (!node.method) {
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.value, node);
+}
+
+function ObjectTypeSpreadProperty(node) {
+ this.token("...");
+ this.print(node.argument, node);
+}
+
+function QualifiedTypeIdentifier(node) {
+ this.print(node.qualification, node);
+ this.token(".");
+ this.print(node.id, node);
+}
+
+function SymbolTypeAnnotation() {
+ this.word("symbol");
+}
+
+function orSeparator() {
+ this.space();
+ this.token("|");
+ this.space();
+}
+
+function UnionTypeAnnotation(node) {
+ this.printJoin(node.types, node, {
+ separator: orSeparator
+ });
+}
+
+function TypeCastExpression(node) {
+ this.token("(");
+ this.print(node.expression, node);
+ this.print(node.typeAnnotation, node);
+ this.token(")");
+}
+
+function Variance(node) {
+ if (node.kind === "plus") {
+ this.token("+");
+ } else {
+ this.token("-");
+ }
+}
+
+function VoidTypeAnnotation() {
+ this.word("void");
+}
+
+function IndexedAccessType(node) {
+ this.print(node.objectType, node);
+ this.token("[");
+ this.print(node.indexType, node);
+ this.token("]");
+}
+
+function OptionalIndexedAccessType(node) {
+ this.print(node.objectType, node);
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ this.token("[");
+ this.print(node.indexType, node);
+ this.token("]");
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/index.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/index.js
new file mode 100644
index 000000000..8820db09e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/index.js
@@ -0,0 +1,148 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _templateLiterals = require("./template-literals");
+
+Object.keys(_templateLiterals).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _templateLiterals[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _templateLiterals[key];
+ }
+ });
+});
+
+var _expressions = require("./expressions");
+
+Object.keys(_expressions).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _expressions[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _expressions[key];
+ }
+ });
+});
+
+var _statements = require("./statements");
+
+Object.keys(_statements).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _statements[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _statements[key];
+ }
+ });
+});
+
+var _classes = require("./classes");
+
+Object.keys(_classes).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _classes[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _classes[key];
+ }
+ });
+});
+
+var _methods = require("./methods");
+
+Object.keys(_methods).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _methods[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _methods[key];
+ }
+ });
+});
+
+var _modules = require("./modules");
+
+Object.keys(_modules).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _modules[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _modules[key];
+ }
+ });
+});
+
+var _types = require("./types");
+
+Object.keys(_types).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _types[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _types[key];
+ }
+ });
+});
+
+var _flow = require("./flow");
+
+Object.keys(_flow).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _flow[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _flow[key];
+ }
+ });
+});
+
+var _base = require("./base");
+
+Object.keys(_base).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _base[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _base[key];
+ }
+ });
+});
+
+var _jsx = require("./jsx");
+
+Object.keys(_jsx).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _jsx[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _jsx[key];
+ }
+ });
+});
+
+var _typescript = require("./typescript");
+
+Object.keys(_typescript).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _typescript[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _typescript[key];
+ }
+ });
+});
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/jsx.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/jsx.js
new file mode 100644
index 000000000..3c11f59c8
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/jsx.js
@@ -0,0 +1,145 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.JSXAttribute = JSXAttribute;
+exports.JSXClosingElement = JSXClosingElement;
+exports.JSXClosingFragment = JSXClosingFragment;
+exports.JSXElement = JSXElement;
+exports.JSXEmptyExpression = JSXEmptyExpression;
+exports.JSXExpressionContainer = JSXExpressionContainer;
+exports.JSXFragment = JSXFragment;
+exports.JSXIdentifier = JSXIdentifier;
+exports.JSXMemberExpression = JSXMemberExpression;
+exports.JSXNamespacedName = JSXNamespacedName;
+exports.JSXOpeningElement = JSXOpeningElement;
+exports.JSXOpeningFragment = JSXOpeningFragment;
+exports.JSXSpreadAttribute = JSXSpreadAttribute;
+exports.JSXSpreadChild = JSXSpreadChild;
+exports.JSXText = JSXText;
+
+function JSXAttribute(node) {
+ this.print(node.name, node);
+
+ if (node.value) {
+ this.token("=");
+ this.print(node.value, node);
+ }
+}
+
+function JSXIdentifier(node) {
+ this.word(node.name);
+}
+
+function JSXNamespacedName(node) {
+ this.print(node.namespace, node);
+ this.token(":");
+ this.print(node.name, node);
+}
+
+function JSXMemberExpression(node) {
+ this.print(node.object, node);
+ this.token(".");
+ this.print(node.property, node);
+}
+
+function JSXSpreadAttribute(node) {
+ this.token("{");
+ this.token("...");
+ this.print(node.argument, node);
+ this.token("}");
+}
+
+function JSXExpressionContainer(node) {
+ this.token("{");
+ this.print(node.expression, node);
+ this.token("}");
+}
+
+function JSXSpreadChild(node) {
+ this.token("{");
+ this.token("...");
+ this.print(node.expression, node);
+ this.token("}");
+}
+
+function JSXText(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (raw != null) {
+ this.token(raw);
+ } else {
+ this.token(node.value);
+ }
+}
+
+function JSXElement(node) {
+ const open = node.openingElement;
+ this.print(open, node);
+ if (open.selfClosing) return;
+ this.indent();
+
+ for (const child of node.children) {
+ this.print(child, node);
+ }
+
+ this.dedent();
+ this.print(node.closingElement, node);
+}
+
+function spaceSeparator() {
+ this.space();
+}
+
+function JSXOpeningElement(node) {
+ this.token("<");
+ this.print(node.name, node);
+ this.print(node.typeParameters, node);
+
+ if (node.attributes.length > 0) {
+ this.space();
+ this.printJoin(node.attributes, node, {
+ separator: spaceSeparator
+ });
+ }
+
+ if (node.selfClosing) {
+ this.space();
+ this.token("/>");
+ } else {
+ this.token(">");
+ }
+}
+
+function JSXClosingElement(node) {
+ this.token("");
+ this.print(node.name, node);
+ this.token(">");
+}
+
+function JSXEmptyExpression(node) {
+ this.printInnerComments(node);
+}
+
+function JSXFragment(node) {
+ this.print(node.openingFragment, node);
+ this.indent();
+
+ for (const child of node.children) {
+ this.print(child, node);
+ }
+
+ this.dedent();
+ this.print(node.closingFragment, node);
+}
+
+function JSXOpeningFragment() {
+ this.token("<");
+ this.token(">");
+}
+
+function JSXClosingFragment() {
+ this.token("");
+ this.token(">");
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/methods.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/methods.js
new file mode 100644
index 000000000..d31e7fad6
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/methods.js
@@ -0,0 +1,150 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ArrowFunctionExpression = ArrowFunctionExpression;
+exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression;
+exports._functionHead = _functionHead;
+exports._methodHead = _methodHead;
+exports._param = _param;
+exports._parameters = _parameters;
+exports._params = _params;
+exports._predicate = _predicate;
+
+var _t = require("@babel/types");
+
+const {
+ isIdentifier
+} = _t;
+
+function _params(node) {
+ this.print(node.typeParameters, node);
+ this.token("(");
+
+ this._parameters(node.params, node);
+
+ this.token(")");
+ this.print(node.returnType, node);
+}
+
+function _parameters(parameters, parent) {
+ for (let i = 0; i < parameters.length; i++) {
+ this._param(parameters[i], parent);
+
+ if (i < parameters.length - 1) {
+ this.token(",");
+ this.space();
+ }
+ }
+}
+
+function _param(parameter, parent) {
+ this.printJoin(parameter.decorators, parameter);
+ this.print(parameter, parent);
+ if (parameter.optional) this.token("?");
+ this.print(parameter.typeAnnotation, parameter);
+}
+
+function _methodHead(node) {
+ const kind = node.kind;
+ const key = node.key;
+
+ if (kind === "get" || kind === "set") {
+ this.word(kind);
+ this.space();
+ }
+
+ if (node.async) {
+ this._catchUp("start", key.loc);
+
+ this.word("async");
+ this.space();
+ }
+
+ if (kind === "method" || kind === "init") {
+ if (node.generator) {
+ this.token("*");
+ }
+ }
+
+ if (node.computed) {
+ this.token("[");
+ this.print(key, node);
+ this.token("]");
+ } else {
+ this.print(key, node);
+ }
+
+ if (node.optional) {
+ this.token("?");
+ }
+
+ this._params(node);
+}
+
+function _predicate(node) {
+ if (node.predicate) {
+ if (!node.returnType) {
+ this.token(":");
+ }
+
+ this.space();
+ this.print(node.predicate, node);
+ }
+}
+
+function _functionHead(node) {
+ if (node.async) {
+ this.word("async");
+ this.space();
+ }
+
+ this.word("function");
+ if (node.generator) this.token("*");
+ this.printInnerComments(node);
+ this.space();
+
+ if (node.id) {
+ this.print(node.id, node);
+ }
+
+ this._params(node);
+
+ this._predicate(node);
+}
+
+function FunctionExpression(node) {
+ this._functionHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ArrowFunctionExpression(node) {
+ if (node.async) {
+ this.word("async");
+ this.space();
+ }
+
+ const firstParam = node.params[0];
+
+ if (!this.format.retainLines && !this.format.auxiliaryCommentBefore && !this.format.auxiliaryCommentAfter && node.params.length === 1 && isIdentifier(firstParam) && !hasTypesOrComments(node, firstParam)) {
+ this.print(firstParam, node);
+ } else {
+ this._params(node);
+ }
+
+ this._predicate(node);
+
+ this.space();
+ this.token("=>");
+ this.space();
+ this.print(node.body, node);
+}
+
+function hasTypesOrComments(node, param) {
+ var _param$leadingComment, _param$trailingCommen;
+
+ return !!(node.typeParameters || node.returnType || node.predicate || param.typeAnnotation || param.optional || (_param$leadingComment = param.leadingComments) != null && _param$leadingComment.length || (_param$trailingCommen = param.trailingComments) != null && _param$trailingCommen.length);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/modules.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/modules.js
new file mode 100644
index 000000000..3224debac
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/modules.js
@@ -0,0 +1,244 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ExportAllDeclaration = ExportAllDeclaration;
+exports.ExportDefaultDeclaration = ExportDefaultDeclaration;
+exports.ExportDefaultSpecifier = ExportDefaultSpecifier;
+exports.ExportNamedDeclaration = ExportNamedDeclaration;
+exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier;
+exports.ExportSpecifier = ExportSpecifier;
+exports.ImportAttribute = ImportAttribute;
+exports.ImportDeclaration = ImportDeclaration;
+exports.ImportDefaultSpecifier = ImportDefaultSpecifier;
+exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;
+exports.ImportSpecifier = ImportSpecifier;
+
+var _t = require("@babel/types");
+
+const {
+ isClassDeclaration,
+ isExportDefaultSpecifier,
+ isExportNamespaceSpecifier,
+ isImportDefaultSpecifier,
+ isImportNamespaceSpecifier,
+ isStatement
+} = _t;
+
+function ImportSpecifier(node) {
+ if (node.importKind === "type" || node.importKind === "typeof") {
+ this.word(node.importKind);
+ this.space();
+ }
+
+ this.print(node.imported, node);
+
+ if (node.local && node.local.name !== node.imported.name) {
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.local, node);
+ }
+}
+
+function ImportDefaultSpecifier(node) {
+ this.print(node.local, node);
+}
+
+function ExportDefaultSpecifier(node) {
+ this.print(node.exported, node);
+}
+
+function ExportSpecifier(node) {
+ if (node.exportKind === "type") {
+ this.word("type");
+ this.space();
+ }
+
+ this.print(node.local, node);
+
+ if (node.exported && node.local.name !== node.exported.name) {
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.exported, node);
+ }
+}
+
+function ExportNamespaceSpecifier(node) {
+ this.token("*");
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.exported, node);
+}
+
+function ExportAllDeclaration(node) {
+ this.word("export");
+ this.space();
+
+ if (node.exportKind === "type") {
+ this.word("type");
+ this.space();
+ }
+
+ this.token("*");
+ this.space();
+ this.word("from");
+ this.space();
+ this.print(node.source, node);
+ this.printAssertions(node);
+ this.semicolon();
+}
+
+function ExportNamedDeclaration(node) {
+ if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) {
+ this.printJoin(node.declaration.decorators, node);
+ }
+
+ this.word("export");
+ this.space();
+ ExportDeclaration.apply(this, arguments);
+}
+
+function ExportDefaultDeclaration(node) {
+ if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) {
+ this.printJoin(node.declaration.decorators, node);
+ }
+
+ this.word("export");
+ this.space();
+ this.word("default");
+ this.space();
+ ExportDeclaration.apply(this, arguments);
+}
+
+function ExportDeclaration(node) {
+ if (node.declaration) {
+ const declar = node.declaration;
+ this.print(declar, node);
+ if (!isStatement(declar)) this.semicolon();
+ } else {
+ if (node.exportKind === "type") {
+ this.word("type");
+ this.space();
+ }
+
+ const specifiers = node.specifiers.slice(0);
+ let hasSpecial = false;
+
+ for (;;) {
+ const first = specifiers[0];
+
+ if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) {
+ hasSpecial = true;
+ this.print(specifiers.shift(), node);
+
+ if (specifiers.length) {
+ this.token(",");
+ this.space();
+ }
+ } else {
+ break;
+ }
+ }
+
+ if (specifiers.length || !specifiers.length && !hasSpecial) {
+ this.token("{");
+
+ if (specifiers.length) {
+ this.space();
+ this.printList(specifiers, node);
+ this.space();
+ }
+
+ this.token("}");
+ }
+
+ if (node.source) {
+ this.space();
+ this.word("from");
+ this.space();
+ this.print(node.source, node);
+ this.printAssertions(node);
+ }
+
+ this.semicolon();
+ }
+}
+
+function ImportDeclaration(node) {
+ this.word("import");
+ this.space();
+ const isTypeKind = node.importKind === "type" || node.importKind === "typeof";
+
+ if (isTypeKind) {
+ this.word(node.importKind);
+ this.space();
+ }
+
+ const specifiers = node.specifiers.slice(0);
+ const hasSpecifiers = !!specifiers.length;
+
+ while (hasSpecifiers) {
+ const first = specifiers[0];
+
+ if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {
+ this.print(specifiers.shift(), node);
+
+ if (specifiers.length) {
+ this.token(",");
+ this.space();
+ }
+ } else {
+ break;
+ }
+ }
+
+ if (specifiers.length) {
+ this.token("{");
+ this.space();
+ this.printList(specifiers, node);
+ this.space();
+ this.token("}");
+ } else if (isTypeKind && !hasSpecifiers) {
+ this.token("{");
+ this.token("}");
+ }
+
+ if (hasSpecifiers || isTypeKind) {
+ this.space();
+ this.word("from");
+ this.space();
+ }
+
+ this.print(node.source, node);
+ this.printAssertions(node);
+ {
+ var _node$attributes;
+
+ if ((_node$attributes = node.attributes) != null && _node$attributes.length) {
+ this.space();
+ this.word("with");
+ this.space();
+ this.printList(node.attributes, node);
+ }
+ }
+ this.semicolon();
+}
+
+function ImportAttribute(node) {
+ this.print(node.key);
+ this.token(":");
+ this.space();
+ this.print(node.value);
+}
+
+function ImportNamespaceSpecifier(node) {
+ this.token("*");
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.local, node);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/statements.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/statements.js
new file mode 100644
index 000000000..8b7b8fd73
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/statements.js
@@ -0,0 +1,331 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.BreakStatement = void 0;
+exports.CatchClause = CatchClause;
+exports.ContinueStatement = void 0;
+exports.DebuggerStatement = DebuggerStatement;
+exports.DoWhileStatement = DoWhileStatement;
+exports.ForOfStatement = exports.ForInStatement = void 0;
+exports.ForStatement = ForStatement;
+exports.IfStatement = IfStatement;
+exports.LabeledStatement = LabeledStatement;
+exports.ReturnStatement = void 0;
+exports.SwitchCase = SwitchCase;
+exports.SwitchStatement = SwitchStatement;
+exports.ThrowStatement = void 0;
+exports.TryStatement = TryStatement;
+exports.VariableDeclaration = VariableDeclaration;
+exports.VariableDeclarator = VariableDeclarator;
+exports.WhileStatement = WhileStatement;
+exports.WithStatement = WithStatement;
+
+var _t = require("@babel/types");
+
+const {
+ isFor,
+ isForStatement,
+ isIfStatement,
+ isStatement
+} = _t;
+
+function WithStatement(node) {
+ this.word("with");
+ this.space();
+ this.token("(");
+ this.print(node.object, node);
+ this.token(")");
+ this.printBlock(node);
+}
+
+function IfStatement(node) {
+ this.word("if");
+ this.space();
+ this.token("(");
+ this.print(node.test, node);
+ this.token(")");
+ this.space();
+ const needsBlock = node.alternate && isIfStatement(getLastStatement(node.consequent));
+
+ if (needsBlock) {
+ this.token("{");
+ this.newline();
+ this.indent();
+ }
+
+ this.printAndIndentOnComments(node.consequent, node);
+
+ if (needsBlock) {
+ this.dedent();
+ this.newline();
+ this.token("}");
+ }
+
+ if (node.alternate) {
+ if (this.endsWith(125)) this.space();
+ this.word("else");
+ this.space();
+ this.printAndIndentOnComments(node.alternate, node);
+ }
+}
+
+function getLastStatement(statement) {
+ if (!isStatement(statement.body)) return statement;
+ return getLastStatement(statement.body);
+}
+
+function ForStatement(node) {
+ this.word("for");
+ this.space();
+ this.token("(");
+ this.inForStatementInitCounter++;
+ this.print(node.init, node);
+ this.inForStatementInitCounter--;
+ this.token(";");
+
+ if (node.test) {
+ this.space();
+ this.print(node.test, node);
+ }
+
+ this.token(";");
+
+ if (node.update) {
+ this.space();
+ this.print(node.update, node);
+ }
+
+ this.token(")");
+ this.printBlock(node);
+}
+
+function WhileStatement(node) {
+ this.word("while");
+ this.space();
+ this.token("(");
+ this.print(node.test, node);
+ this.token(")");
+ this.printBlock(node);
+}
+
+const buildForXStatement = function (op) {
+ return function (node) {
+ this.word("for");
+ this.space();
+
+ if (op === "of" && node.await) {
+ this.word("await");
+ this.space();
+ }
+
+ this.token("(");
+ this.print(node.left, node);
+ this.space();
+ this.word(op);
+ this.space();
+ this.print(node.right, node);
+ this.token(")");
+ this.printBlock(node);
+ };
+};
+
+const ForInStatement = buildForXStatement("in");
+exports.ForInStatement = ForInStatement;
+const ForOfStatement = buildForXStatement("of");
+exports.ForOfStatement = ForOfStatement;
+
+function DoWhileStatement(node) {
+ this.word("do");
+ this.space();
+ this.print(node.body, node);
+ this.space();
+ this.word("while");
+ this.space();
+ this.token("(");
+ this.print(node.test, node);
+ this.token(")");
+ this.semicolon();
+}
+
+function buildLabelStatement(prefix, key = "label") {
+ return function (node) {
+ this.word(prefix);
+ const label = node[key];
+
+ if (label) {
+ this.space();
+ const isLabel = key == "label";
+ const terminatorState = this.startTerminatorless(isLabel);
+ this.print(label, node);
+ this.endTerminatorless(terminatorState);
+ }
+
+ this.semicolon();
+ };
+}
+
+const ContinueStatement = buildLabelStatement("continue");
+exports.ContinueStatement = ContinueStatement;
+const ReturnStatement = buildLabelStatement("return", "argument");
+exports.ReturnStatement = ReturnStatement;
+const BreakStatement = buildLabelStatement("break");
+exports.BreakStatement = BreakStatement;
+const ThrowStatement = buildLabelStatement("throw", "argument");
+exports.ThrowStatement = ThrowStatement;
+
+function LabeledStatement(node) {
+ this.print(node.label, node);
+ this.token(":");
+ this.space();
+ this.print(node.body, node);
+}
+
+function TryStatement(node) {
+ this.word("try");
+ this.space();
+ this.print(node.block, node);
+ this.space();
+
+ if (node.handlers) {
+ this.print(node.handlers[0], node);
+ } else {
+ this.print(node.handler, node);
+ }
+
+ if (node.finalizer) {
+ this.space();
+ this.word("finally");
+ this.space();
+ this.print(node.finalizer, node);
+ }
+}
+
+function CatchClause(node) {
+ this.word("catch");
+ this.space();
+
+ if (node.param) {
+ this.token("(");
+ this.print(node.param, node);
+ this.print(node.param.typeAnnotation, node);
+ this.token(")");
+ this.space();
+ }
+
+ this.print(node.body, node);
+}
+
+function SwitchStatement(node) {
+ this.word("switch");
+ this.space();
+ this.token("(");
+ this.print(node.discriminant, node);
+ this.token(")");
+ this.space();
+ this.token("{");
+ this.printSequence(node.cases, node, {
+ indent: true,
+
+ addNewlines(leading, cas) {
+ if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
+ }
+
+ });
+ this.token("}");
+}
+
+function SwitchCase(node) {
+ if (node.test) {
+ this.word("case");
+ this.space();
+ this.print(node.test, node);
+ this.token(":");
+ } else {
+ this.word("default");
+ this.token(":");
+ }
+
+ if (node.consequent.length) {
+ this.newline();
+ this.printSequence(node.consequent, node, {
+ indent: true
+ });
+ }
+}
+
+function DebuggerStatement() {
+ this.word("debugger");
+ this.semicolon();
+}
+
+function variableDeclarationIndent() {
+ this.token(",");
+ this.newline();
+
+ if (this.endsWith(10)) {
+ for (let i = 0; i < 4; i++) this.space(true);
+ }
+}
+
+function constDeclarationIndent() {
+ this.token(",");
+ this.newline();
+
+ if (this.endsWith(10)) {
+ for (let i = 0; i < 6; i++) this.space(true);
+ }
+}
+
+function VariableDeclaration(node, parent) {
+ if (node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word(node.kind);
+ this.space();
+ let hasInits = false;
+
+ if (!isFor(parent)) {
+ for (const declar of node.declarations) {
+ if (declar.init) {
+ hasInits = true;
+ }
+ }
+ }
+
+ let separator;
+
+ if (hasInits) {
+ separator = node.kind === "const" ? constDeclarationIndent : variableDeclarationIndent;
+ }
+
+ this.printList(node.declarations, node, {
+ separator
+ });
+
+ if (isFor(parent)) {
+ if (isForStatement(parent)) {
+ if (parent.init === node) return;
+ } else {
+ if (parent.left === node) return;
+ }
+ }
+
+ this.semicolon();
+}
+
+function VariableDeclarator(node) {
+ this.print(node.id, node);
+ if (node.definite) this.token("!");
+ this.print(node.id.typeAnnotation, node);
+
+ if (node.init) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.init, node);
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/template-literals.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/template-literals.js
new file mode 100644
index 000000000..054330362
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/template-literals.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.TaggedTemplateExpression = TaggedTemplateExpression;
+exports.TemplateElement = TemplateElement;
+exports.TemplateLiteral = TemplateLiteral;
+
+function TaggedTemplateExpression(node) {
+ this.print(node.tag, node);
+ this.print(node.typeParameters, node);
+ this.print(node.quasi, node);
+}
+
+function TemplateElement(node, parent) {
+ const isFirst = parent.quasis[0] === node;
+ const isLast = parent.quasis[parent.quasis.length - 1] === node;
+ const value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${");
+ this.token(value);
+}
+
+function TemplateLiteral(node) {
+ const quasis = node.quasis;
+
+ for (let i = 0; i < quasis.length; i++) {
+ this.print(quasis[i], node);
+
+ if (i + 1 < quasis.length) {
+ this.print(node.expressions[i], node);
+ }
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/types.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/types.js
new file mode 100644
index 000000000..a56fb47ec
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/types.js
@@ -0,0 +1,276 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ArgumentPlaceholder = ArgumentPlaceholder;
+exports.ArrayPattern = exports.ArrayExpression = ArrayExpression;
+exports.BigIntLiteral = BigIntLiteral;
+exports.BooleanLiteral = BooleanLiteral;
+exports.DecimalLiteral = DecimalLiteral;
+exports.Identifier = Identifier;
+exports.NullLiteral = NullLiteral;
+exports.NumericLiteral = NumericLiteral;
+exports.ObjectPattern = exports.ObjectExpression = ObjectExpression;
+exports.ObjectMethod = ObjectMethod;
+exports.ObjectProperty = ObjectProperty;
+exports.PipelineBareFunction = PipelineBareFunction;
+exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference;
+exports.PipelineTopicExpression = PipelineTopicExpression;
+exports.RecordExpression = RecordExpression;
+exports.RegExpLiteral = RegExpLiteral;
+exports.SpreadElement = exports.RestElement = RestElement;
+exports.StringLiteral = StringLiteral;
+exports.TopicReference = TopicReference;
+exports.TupleExpression = TupleExpression;
+
+var _t = require("@babel/types");
+
+var _jsesc = require("jsesc");
+
+const {
+ isAssignmentPattern,
+ isIdentifier
+} = _t;
+
+function Identifier(node) {
+ this.exactSource(node.loc, () => {
+ this.word(node.name);
+ });
+}
+
+function ArgumentPlaceholder() {
+ this.token("?");
+}
+
+function RestElement(node) {
+ this.token("...");
+ this.print(node.argument, node);
+}
+
+function ObjectExpression(node) {
+ const props = node.properties;
+ this.token("{");
+ this.printInnerComments(node);
+
+ if (props.length) {
+ this.space();
+ this.printList(props, node, {
+ indent: true,
+ statement: true
+ });
+ this.space();
+ }
+
+ this.token("}");
+}
+
+function ObjectMethod(node) {
+ this.printJoin(node.decorators, node);
+
+ this._methodHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ObjectProperty(node) {
+ this.printJoin(node.decorators, node);
+
+ if (node.computed) {
+ this.token("[");
+ this.print(node.key, node);
+ this.token("]");
+ } else {
+ if (isAssignmentPattern(node.value) && isIdentifier(node.key) && node.key.name === node.value.left.name) {
+ this.print(node.value, node);
+ return;
+ }
+
+ this.print(node.key, node);
+
+ if (node.shorthand && isIdentifier(node.key) && isIdentifier(node.value) && node.key.name === node.value.name) {
+ return;
+ }
+ }
+
+ this.token(":");
+ this.space();
+ this.print(node.value, node);
+}
+
+function ArrayExpression(node) {
+ const elems = node.elements;
+ const len = elems.length;
+ this.token("[");
+ this.printInnerComments(node);
+
+ for (let i = 0; i < elems.length; i++) {
+ const elem = elems[i];
+
+ if (elem) {
+ if (i > 0) this.space();
+ this.print(elem, node);
+ if (i < len - 1) this.token(",");
+ } else {
+ this.token(",");
+ }
+ }
+
+ this.token("]");
+}
+
+function RecordExpression(node) {
+ const props = node.properties;
+ let startToken;
+ let endToken;
+
+ if (this.format.recordAndTupleSyntaxType === "bar") {
+ startToken = "{|";
+ endToken = "|}";
+ } else if (this.format.recordAndTupleSyntaxType === "hash") {
+ startToken = "#{";
+ endToken = "}";
+ } else {
+ throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`);
+ }
+
+ this.token(startToken);
+ this.printInnerComments(node);
+
+ if (props.length) {
+ this.space();
+ this.printList(props, node, {
+ indent: true,
+ statement: true
+ });
+ this.space();
+ }
+
+ this.token(endToken);
+}
+
+function TupleExpression(node) {
+ const elems = node.elements;
+ const len = elems.length;
+ let startToken;
+ let endToken;
+
+ if (this.format.recordAndTupleSyntaxType === "bar") {
+ startToken = "[|";
+ endToken = "|]";
+ } else if (this.format.recordAndTupleSyntaxType === "hash") {
+ startToken = "#[";
+ endToken = "]";
+ } else {
+ throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`);
+ }
+
+ this.token(startToken);
+ this.printInnerComments(node);
+
+ for (let i = 0; i < elems.length; i++) {
+ const elem = elems[i];
+
+ if (elem) {
+ if (i > 0) this.space();
+ this.print(elem, node);
+ if (i < len - 1) this.token(",");
+ }
+ }
+
+ this.token(endToken);
+}
+
+function RegExpLiteral(node) {
+ this.word(`/${node.pattern}/${node.flags}`);
+}
+
+function BooleanLiteral(node) {
+ this.word(node.value ? "true" : "false");
+}
+
+function NullLiteral() {
+ this.word("null");
+}
+
+function NumericLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+ const opts = this.format.jsescOption;
+ const value = node.value + "";
+
+ if (opts.numbers) {
+ this.number(_jsesc(node.value, opts));
+ } else if (raw == null) {
+ this.number(value);
+ } else if (this.format.minified) {
+ this.number(raw.length < value.length ? raw : value);
+ } else {
+ this.number(raw);
+ }
+}
+
+function StringLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (!this.format.minified && raw != null) {
+ this.token(raw);
+ return;
+ }
+
+ const val = _jsesc(node.value, Object.assign(this.format.jsescOption, this.format.jsonCompatibleStrings && {
+ json: true
+ }));
+
+ return this.token(val);
+}
+
+function BigIntLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (!this.format.minified && raw != null) {
+ this.word(raw);
+ return;
+ }
+
+ this.word(node.value + "n");
+}
+
+function DecimalLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (!this.format.minified && raw != null) {
+ this.word(raw);
+ return;
+ }
+
+ this.word(node.value + "m");
+}
+
+const validTopicTokenSet = new Set(["^^", "@@", "^", "%", "#"]);
+
+function TopicReference() {
+ const {
+ topicToken
+ } = this.format;
+
+ if (validTopicTokenSet.has(topicToken)) {
+ this.token(topicToken);
+ } else {
+ const givenTopicTokenJSON = JSON.stringify(topicToken);
+ const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v));
+ throw new Error(`The "topicToken" generator option must be one of ` + `${validTopics.join(", ")} (${givenTopicTokenJSON} received instead).`);
+ }
+}
+
+function PipelineTopicExpression(node) {
+ this.print(node.expression, node);
+}
+
+function PipelineBareFunction(node) {
+ this.print(node.callee, node);
+}
+
+function PipelinePrimaryTopicReference() {
+ this.token("#");
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/typescript.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/typescript.js
new file mode 100644
index 000000000..010d86d0a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/generators/typescript.js
@@ -0,0 +1,813 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.TSAnyKeyword = TSAnyKeyword;
+exports.TSArrayType = TSArrayType;
+exports.TSAsExpression = TSAsExpression;
+exports.TSBigIntKeyword = TSBigIntKeyword;
+exports.TSBooleanKeyword = TSBooleanKeyword;
+exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration;
+exports.TSConditionalType = TSConditionalType;
+exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration;
+exports.TSConstructorType = TSConstructorType;
+exports.TSDeclareFunction = TSDeclareFunction;
+exports.TSDeclareMethod = TSDeclareMethod;
+exports.TSEnumDeclaration = TSEnumDeclaration;
+exports.TSEnumMember = TSEnumMember;
+exports.TSExportAssignment = TSExportAssignment;
+exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments;
+exports.TSExternalModuleReference = TSExternalModuleReference;
+exports.TSFunctionType = TSFunctionType;
+exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration;
+exports.TSImportType = TSImportType;
+exports.TSIndexSignature = TSIndexSignature;
+exports.TSIndexedAccessType = TSIndexedAccessType;
+exports.TSInferType = TSInferType;
+exports.TSInterfaceBody = TSInterfaceBody;
+exports.TSInterfaceDeclaration = TSInterfaceDeclaration;
+exports.TSIntersectionType = TSIntersectionType;
+exports.TSIntrinsicKeyword = TSIntrinsicKeyword;
+exports.TSLiteralType = TSLiteralType;
+exports.TSMappedType = TSMappedType;
+exports.TSMethodSignature = TSMethodSignature;
+exports.TSModuleBlock = TSModuleBlock;
+exports.TSModuleDeclaration = TSModuleDeclaration;
+exports.TSNamedTupleMember = TSNamedTupleMember;
+exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration;
+exports.TSNeverKeyword = TSNeverKeyword;
+exports.TSNonNullExpression = TSNonNullExpression;
+exports.TSNullKeyword = TSNullKeyword;
+exports.TSNumberKeyword = TSNumberKeyword;
+exports.TSObjectKeyword = TSObjectKeyword;
+exports.TSOptionalType = TSOptionalType;
+exports.TSParameterProperty = TSParameterProperty;
+exports.TSParenthesizedType = TSParenthesizedType;
+exports.TSPropertySignature = TSPropertySignature;
+exports.TSQualifiedName = TSQualifiedName;
+exports.TSRestType = TSRestType;
+exports.TSStringKeyword = TSStringKeyword;
+exports.TSSymbolKeyword = TSSymbolKeyword;
+exports.TSThisType = TSThisType;
+exports.TSTupleType = TSTupleType;
+exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration;
+exports.TSTypeAnnotation = TSTypeAnnotation;
+exports.TSTypeAssertion = TSTypeAssertion;
+exports.TSTypeLiteral = TSTypeLiteral;
+exports.TSTypeOperator = TSTypeOperator;
+exports.TSTypeParameter = TSTypeParameter;
+exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation;
+exports.TSTypePredicate = TSTypePredicate;
+exports.TSTypeQuery = TSTypeQuery;
+exports.TSTypeReference = TSTypeReference;
+exports.TSUndefinedKeyword = TSUndefinedKeyword;
+exports.TSUnionType = TSUnionType;
+exports.TSUnknownKeyword = TSUnknownKeyword;
+exports.TSVoidKeyword = TSVoidKeyword;
+exports.tsPrintBraced = tsPrintBraced;
+exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers;
+exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType;
+exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName;
+exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase;
+exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody;
+exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType;
+
+function TSTypeAnnotation(node) {
+ this.token(":");
+ this.space();
+ if (node.optional) this.token("?");
+ this.print(node.typeAnnotation, node);
+}
+
+function TSTypeParameterInstantiation(node, parent) {
+ this.token("<");
+ this.printList(node.params, node, {});
+
+ if (parent.type === "ArrowFunctionExpression" && node.params.length === 1) {
+ this.token(",");
+ }
+
+ this.token(">");
+}
+
+function TSTypeParameter(node) {
+ this.word(node.name);
+
+ if (node.constraint) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.print(node.constraint, node);
+ }
+
+ if (node.default) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.default, node);
+ }
+}
+
+function TSParameterProperty(node) {
+ if (node.accessibility) {
+ this.word(node.accessibility);
+ this.space();
+ }
+
+ if (node.readonly) {
+ this.word("readonly");
+ this.space();
+ }
+
+ this._param(node.parameter);
+}
+
+function TSDeclareFunction(node) {
+ if (node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this._functionHead(node);
+
+ this.token(";");
+}
+
+function TSDeclareMethod(node) {
+ this._classMethodHead(node);
+
+ this.token(";");
+}
+
+function TSQualifiedName(node) {
+ this.print(node.left, node);
+ this.token(".");
+ this.print(node.right, node);
+}
+
+function TSCallSignatureDeclaration(node) {
+ this.tsPrintSignatureDeclarationBase(node);
+ this.token(";");
+}
+
+function TSConstructSignatureDeclaration(node) {
+ this.word("new");
+ this.space();
+ this.tsPrintSignatureDeclarationBase(node);
+ this.token(";");
+}
+
+function TSPropertySignature(node) {
+ const {
+ readonly,
+ initializer
+ } = node;
+
+ if (readonly) {
+ this.word("readonly");
+ this.space();
+ }
+
+ this.tsPrintPropertyOrMethodName(node);
+ this.print(node.typeAnnotation, node);
+
+ if (initializer) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(initializer, node);
+ }
+
+ this.token(";");
+}
+
+function tsPrintPropertyOrMethodName(node) {
+ if (node.computed) {
+ this.token("[");
+ }
+
+ this.print(node.key, node);
+
+ if (node.computed) {
+ this.token("]");
+ }
+
+ if (node.optional) {
+ this.token("?");
+ }
+}
+
+function TSMethodSignature(node) {
+ const {
+ kind
+ } = node;
+
+ if (kind === "set" || kind === "get") {
+ this.word(kind);
+ this.space();
+ }
+
+ this.tsPrintPropertyOrMethodName(node);
+ this.tsPrintSignatureDeclarationBase(node);
+ this.token(";");
+}
+
+function TSIndexSignature(node) {
+ const {
+ readonly,
+ static: isStatic
+ } = node;
+
+ if (isStatic) {
+ this.word("static");
+ this.space();
+ }
+
+ if (readonly) {
+ this.word("readonly");
+ this.space();
+ }
+
+ this.token("[");
+
+ this._parameters(node.parameters, node);
+
+ this.token("]");
+ this.print(node.typeAnnotation, node);
+ this.token(";");
+}
+
+function TSAnyKeyword() {
+ this.word("any");
+}
+
+function TSBigIntKeyword() {
+ this.word("bigint");
+}
+
+function TSUnknownKeyword() {
+ this.word("unknown");
+}
+
+function TSNumberKeyword() {
+ this.word("number");
+}
+
+function TSObjectKeyword() {
+ this.word("object");
+}
+
+function TSBooleanKeyword() {
+ this.word("boolean");
+}
+
+function TSStringKeyword() {
+ this.word("string");
+}
+
+function TSSymbolKeyword() {
+ this.word("symbol");
+}
+
+function TSVoidKeyword() {
+ this.word("void");
+}
+
+function TSUndefinedKeyword() {
+ this.word("undefined");
+}
+
+function TSNullKeyword() {
+ this.word("null");
+}
+
+function TSNeverKeyword() {
+ this.word("never");
+}
+
+function TSIntrinsicKeyword() {
+ this.word("intrinsic");
+}
+
+function TSThisType() {
+ this.word("this");
+}
+
+function TSFunctionType(node) {
+ this.tsPrintFunctionOrConstructorType(node);
+}
+
+function TSConstructorType(node) {
+ if (node.abstract) {
+ this.word("abstract");
+ this.space();
+ }
+
+ this.word("new");
+ this.space();
+ this.tsPrintFunctionOrConstructorType(node);
+}
+
+function tsPrintFunctionOrConstructorType(node) {
+ const {
+ typeParameters
+ } = node;
+ const parameters = node.parameters;
+ this.print(typeParameters, node);
+ this.token("(");
+
+ this._parameters(parameters, node);
+
+ this.token(")");
+ this.space();
+ this.token("=>");
+ this.space();
+ const returnType = node.typeAnnotation;
+ this.print(returnType.typeAnnotation, node);
+}
+
+function TSTypeReference(node) {
+ this.print(node.typeName, node);
+ this.print(node.typeParameters, node);
+}
+
+function TSTypePredicate(node) {
+ if (node.asserts) {
+ this.word("asserts");
+ this.space();
+ }
+
+ this.print(node.parameterName);
+
+ if (node.typeAnnotation) {
+ this.space();
+ this.word("is");
+ this.space();
+ this.print(node.typeAnnotation.typeAnnotation);
+ }
+}
+
+function TSTypeQuery(node) {
+ this.word("typeof");
+ this.space();
+ this.print(node.exprName);
+}
+
+function TSTypeLiteral(node) {
+ this.tsPrintTypeLiteralOrInterfaceBody(node.members, node);
+}
+
+function tsPrintTypeLiteralOrInterfaceBody(members, node) {
+ this.tsPrintBraced(members, node);
+}
+
+function tsPrintBraced(members, node) {
+ this.token("{");
+
+ if (members.length) {
+ this.indent();
+ this.newline();
+
+ for (const member of members) {
+ this.print(member, node);
+ this.newline();
+ }
+
+ this.dedent();
+ this.rightBrace();
+ } else {
+ this.token("}");
+ }
+}
+
+function TSArrayType(node) {
+ this.print(node.elementType, node);
+ this.token("[]");
+}
+
+function TSTupleType(node) {
+ this.token("[");
+ this.printList(node.elementTypes, node);
+ this.token("]");
+}
+
+function TSOptionalType(node) {
+ this.print(node.typeAnnotation, node);
+ this.token("?");
+}
+
+function TSRestType(node) {
+ this.token("...");
+ this.print(node.typeAnnotation, node);
+}
+
+function TSNamedTupleMember(node) {
+ this.print(node.label, node);
+ if (node.optional) this.token("?");
+ this.token(":");
+ this.space();
+ this.print(node.elementType, node);
+}
+
+function TSUnionType(node) {
+ this.tsPrintUnionOrIntersectionType(node, "|");
+}
+
+function TSIntersectionType(node) {
+ this.tsPrintUnionOrIntersectionType(node, "&");
+}
+
+function tsPrintUnionOrIntersectionType(node, sep) {
+ this.printJoin(node.types, node, {
+ separator() {
+ this.space();
+ this.token(sep);
+ this.space();
+ }
+
+ });
+}
+
+function TSConditionalType(node) {
+ this.print(node.checkType);
+ this.space();
+ this.word("extends");
+ this.space();
+ this.print(node.extendsType);
+ this.space();
+ this.token("?");
+ this.space();
+ this.print(node.trueType);
+ this.space();
+ this.token(":");
+ this.space();
+ this.print(node.falseType);
+}
+
+function TSInferType(node) {
+ this.token("infer");
+ this.space();
+ this.print(node.typeParameter);
+}
+
+function TSParenthesizedType(node) {
+ this.token("(");
+ this.print(node.typeAnnotation, node);
+ this.token(")");
+}
+
+function TSTypeOperator(node) {
+ this.word(node.operator);
+ this.space();
+ this.print(node.typeAnnotation, node);
+}
+
+function TSIndexedAccessType(node) {
+ this.print(node.objectType, node);
+ this.token("[");
+ this.print(node.indexType, node);
+ this.token("]");
+}
+
+function TSMappedType(node) {
+ const {
+ nameType,
+ optional,
+ readonly,
+ typeParameter
+ } = node;
+ this.token("{");
+ this.space();
+
+ if (readonly) {
+ tokenIfPlusMinus(this, readonly);
+ this.word("readonly");
+ this.space();
+ }
+
+ this.token("[");
+ this.word(typeParameter.name);
+ this.space();
+ this.word("in");
+ this.space();
+ this.print(typeParameter.constraint, typeParameter);
+
+ if (nameType) {
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(nameType, node);
+ }
+
+ this.token("]");
+
+ if (optional) {
+ tokenIfPlusMinus(this, optional);
+ this.token("?");
+ }
+
+ this.token(":");
+ this.space();
+ this.print(node.typeAnnotation, node);
+ this.space();
+ this.token("}");
+}
+
+function tokenIfPlusMinus(self, tok) {
+ if (tok !== true) {
+ self.token(tok);
+ }
+}
+
+function TSLiteralType(node) {
+ this.print(node.literal, node);
+}
+
+function TSExpressionWithTypeArguments(node) {
+ this.print(node.expression, node);
+ this.print(node.typeParameters, node);
+}
+
+function TSInterfaceDeclaration(node) {
+ const {
+ declare,
+ id,
+ typeParameters,
+ extends: extendz,
+ body
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("interface");
+ this.space();
+ this.print(id, node);
+ this.print(typeParameters, node);
+
+ if (extendz != null && extendz.length) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.printList(extendz, node);
+ }
+
+ this.space();
+ this.print(body, node);
+}
+
+function TSInterfaceBody(node) {
+ this.tsPrintTypeLiteralOrInterfaceBody(node.body, node);
+}
+
+function TSTypeAliasDeclaration(node) {
+ const {
+ declare,
+ id,
+ typeParameters,
+ typeAnnotation
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("type");
+ this.space();
+ this.print(id, node);
+ this.print(typeParameters, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(typeAnnotation, node);
+ this.token(";");
+}
+
+function TSAsExpression(node) {
+ const {
+ expression,
+ typeAnnotation
+ } = node;
+ this.print(expression, node);
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(typeAnnotation, node);
+}
+
+function TSTypeAssertion(node) {
+ const {
+ typeAnnotation,
+ expression
+ } = node;
+ this.token("<");
+ this.print(typeAnnotation, node);
+ this.token(">");
+ this.space();
+ this.print(expression, node);
+}
+
+function TSEnumDeclaration(node) {
+ const {
+ declare,
+ const: isConst,
+ id,
+ members
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (isConst) {
+ this.word("const");
+ this.space();
+ }
+
+ this.word("enum");
+ this.space();
+ this.print(id, node);
+ this.space();
+ this.tsPrintBraced(members, node);
+}
+
+function TSEnumMember(node) {
+ const {
+ id,
+ initializer
+ } = node;
+ this.print(id, node);
+
+ if (initializer) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(initializer, node);
+ }
+
+ this.token(",");
+}
+
+function TSModuleDeclaration(node) {
+ const {
+ declare,
+ id
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (!node.global) {
+ this.word(id.type === "Identifier" ? "namespace" : "module");
+ this.space();
+ }
+
+ this.print(id, node);
+
+ if (!node.body) {
+ this.token(";");
+ return;
+ }
+
+ let body = node.body;
+
+ while (body.type === "TSModuleDeclaration") {
+ this.token(".");
+ this.print(body.id, body);
+ body = body.body;
+ }
+
+ this.space();
+ this.print(body, node);
+}
+
+function TSModuleBlock(node) {
+ this.tsPrintBraced(node.body, node);
+}
+
+function TSImportType(node) {
+ const {
+ argument,
+ qualifier,
+ typeParameters
+ } = node;
+ this.word("import");
+ this.token("(");
+ this.print(argument, node);
+ this.token(")");
+
+ if (qualifier) {
+ this.token(".");
+ this.print(qualifier, node);
+ }
+
+ if (typeParameters) {
+ this.print(typeParameters, node);
+ }
+}
+
+function TSImportEqualsDeclaration(node) {
+ const {
+ isExport,
+ id,
+ moduleReference
+ } = node;
+
+ if (isExport) {
+ this.word("export");
+ this.space();
+ }
+
+ this.word("import");
+ this.space();
+ this.print(id, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(moduleReference, node);
+ this.token(";");
+}
+
+function TSExternalModuleReference(node) {
+ this.token("require(");
+ this.print(node.expression, node);
+ this.token(")");
+}
+
+function TSNonNullExpression(node) {
+ this.print(node.expression, node);
+ this.token("!");
+}
+
+function TSExportAssignment(node) {
+ this.word("export");
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.expression, node);
+ this.token(";");
+}
+
+function TSNamespaceExportDeclaration(node) {
+ this.word("export");
+ this.space();
+ this.word("as");
+ this.space();
+ this.word("namespace");
+ this.space();
+ this.print(node.id, node);
+}
+
+function tsPrintSignatureDeclarationBase(node) {
+ const {
+ typeParameters
+ } = node;
+ const parameters = node.parameters;
+ this.print(typeParameters, node);
+ this.token("(");
+
+ this._parameters(parameters, node);
+
+ this.token(")");
+ const returnType = node.typeAnnotation;
+ this.print(returnType, node);
+}
+
+function tsPrintClassMemberModifiers(node, isField) {
+ if (isField && node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (node.accessibility) {
+ this.word(node.accessibility);
+ this.space();
+ }
+
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ if (node.override) {
+ this.word("override");
+ this.space();
+ }
+
+ if (node.abstract) {
+ this.word("abstract");
+ this.space();
+ }
+
+ if (isField && node.readonly) {
+ this.word("readonly");
+ this.space();
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/index.js
new file mode 100644
index 000000000..ca8a0bd79
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/index.js
@@ -0,0 +1,97 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.CodeGenerator = void 0;
+exports.default = generate;
+
+var _sourceMap = require("./source-map");
+
+var _printer = require("./printer");
+
+class Generator extends _printer.default {
+ constructor(ast, opts = {}, code) {
+ const format = normalizeOptions(code, opts);
+ const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null;
+ super(format, map);
+ this.ast = void 0;
+ this.ast = ast;
+ }
+
+ generate() {
+ return super.generate(this.ast);
+ }
+
+}
+
+function normalizeOptions(code, opts) {
+ const format = {
+ auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
+ auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
+ shouldPrintComment: opts.shouldPrintComment,
+ retainLines: opts.retainLines,
+ retainFunctionParens: opts.retainFunctionParens,
+ comments: opts.comments == null || opts.comments,
+ compact: opts.compact,
+ minified: opts.minified,
+ concise: opts.concise,
+ indent: {
+ adjustMultilineComment: true,
+ style: " ",
+ base: 0
+ },
+ decoratorsBeforeExport: !!opts.decoratorsBeforeExport,
+ jsescOption: Object.assign({
+ quotes: "double",
+ wrap: true,
+ minimal: false
+ }, opts.jsescOption),
+ recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType,
+ topicToken: opts.topicToken
+ };
+ {
+ format.jsonCompatibleStrings = opts.jsonCompatibleStrings;
+ }
+
+ if (format.minified) {
+ format.compact = true;
+
+ format.shouldPrintComment = format.shouldPrintComment || (() => format.comments);
+ } else {
+ format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.indexOf("@license") >= 0 || value.indexOf("@preserve") >= 0);
+ }
+
+ if (format.compact === "auto") {
+ format.compact = code.length > 500000;
+
+ if (format.compact) {
+ console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`);
+ }
+ }
+
+ if (format.compact) {
+ format.indent.adjustMultilineComment = false;
+ }
+
+ return format;
+}
+
+class CodeGenerator {
+ constructor(ast, opts, code) {
+ this._generator = void 0;
+ this._generator = new Generator(ast, opts, code);
+ }
+
+ generate() {
+ return this._generator.generate();
+ }
+
+}
+
+exports.CodeGenerator = CodeGenerator;
+
+function generate(ast, opts, code) {
+ const gen = new Generator(ast, opts, code);
+ return gen.generate();
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/index.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/index.js
new file mode 100644
index 000000000..b594ae441
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/index.js
@@ -0,0 +1,111 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.needsParens = needsParens;
+exports.needsWhitespace = needsWhitespace;
+exports.needsWhitespaceAfter = needsWhitespaceAfter;
+exports.needsWhitespaceBefore = needsWhitespaceBefore;
+
+var whitespace = require("./whitespace");
+
+var parens = require("./parentheses");
+
+var _t = require("@babel/types");
+
+const {
+ FLIPPED_ALIAS_KEYS,
+ isCallExpression,
+ isExpressionStatement,
+ isMemberExpression,
+ isNewExpression
+} = _t;
+
+function expandAliases(obj) {
+ const newObj = {};
+
+ function add(type, func) {
+ const fn = newObj[type];
+ newObj[type] = fn ? function (node, parent, stack) {
+ const result = fn(node, parent, stack);
+ return result == null ? func(node, parent, stack) : result;
+ } : func;
+ }
+
+ for (const type of Object.keys(obj)) {
+ const aliases = FLIPPED_ALIAS_KEYS[type];
+
+ if (aliases) {
+ for (const alias of aliases) {
+ add(alias, obj[type]);
+ }
+ } else {
+ add(type, obj[type]);
+ }
+ }
+
+ return newObj;
+}
+
+const expandedParens = expandAliases(parens);
+const expandedWhitespaceNodes = expandAliases(whitespace.nodes);
+const expandedWhitespaceList = expandAliases(whitespace.list);
+
+function find(obj, node, parent, printStack) {
+ const fn = obj[node.type];
+ return fn ? fn(node, parent, printStack) : null;
+}
+
+function isOrHasCallExpression(node) {
+ if (isCallExpression(node)) {
+ return true;
+ }
+
+ return isMemberExpression(node) && isOrHasCallExpression(node.object);
+}
+
+function needsWhitespace(node, parent, type) {
+ if (!node) return 0;
+
+ if (isExpressionStatement(node)) {
+ node = node.expression;
+ }
+
+ let linesInfo = find(expandedWhitespaceNodes, node, parent);
+
+ if (!linesInfo) {
+ const items = find(expandedWhitespaceList, node, parent);
+
+ if (items) {
+ for (let i = 0; i < items.length; i++) {
+ linesInfo = needsWhitespace(items[i], node, type);
+ if (linesInfo) break;
+ }
+ }
+ }
+
+ if (typeof linesInfo === "object" && linesInfo !== null) {
+ return linesInfo[type] || 0;
+ }
+
+ return 0;
+}
+
+function needsWhitespaceBefore(node, parent) {
+ return needsWhitespace(node, parent, "before");
+}
+
+function needsWhitespaceAfter(node, parent) {
+ return needsWhitespace(node, parent, "after");
+}
+
+function needsParens(node, parent, printStack) {
+ if (!parent) return false;
+
+ if (isNewExpression(parent) && parent.callee === node) {
+ if (isOrHasCallExpression(node)) return true;
+ }
+
+ return find(expandedParens, node, parent, printStack);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/parentheses.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/parentheses.js
new file mode 100644
index 000000000..5761a58d9
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/parentheses.js
@@ -0,0 +1,342 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ArrowFunctionExpression = ArrowFunctionExpression;
+exports.AssignmentExpression = AssignmentExpression;
+exports.Binary = Binary;
+exports.BinaryExpression = BinaryExpression;
+exports.ClassExpression = ClassExpression;
+exports.ConditionalExpression = ConditionalExpression;
+exports.DoExpression = DoExpression;
+exports.FunctionExpression = FunctionExpression;
+exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
+exports.Identifier = Identifier;
+exports.LogicalExpression = LogicalExpression;
+exports.NullableTypeAnnotation = NullableTypeAnnotation;
+exports.ObjectExpression = ObjectExpression;
+exports.OptionalIndexedAccessType = OptionalIndexedAccessType;
+exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemberExpression;
+exports.SequenceExpression = SequenceExpression;
+exports.TSAsExpression = TSAsExpression;
+exports.TSInferType = TSInferType;
+exports.TSTypeAssertion = TSTypeAssertion;
+exports.TSIntersectionType = exports.TSUnionType = TSUnionType;
+exports.UnaryLike = UnaryLike;
+exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation;
+exports.UpdateExpression = UpdateExpression;
+exports.AwaitExpression = exports.YieldExpression = YieldExpression;
+
+var _t = require("@babel/types");
+
+const {
+ isArrayTypeAnnotation,
+ isArrowFunctionExpression,
+ isAssignmentExpression,
+ isAwaitExpression,
+ isBinary,
+ isBinaryExpression,
+ isCallExpression,
+ isClassDeclaration,
+ isClassExpression,
+ isConditional,
+ isConditionalExpression,
+ isExportDeclaration,
+ isExportDefaultDeclaration,
+ isExpressionStatement,
+ isFor,
+ isForInStatement,
+ isForOfStatement,
+ isForStatement,
+ isIfStatement,
+ isIndexedAccessType,
+ isIntersectionTypeAnnotation,
+ isLogicalExpression,
+ isMemberExpression,
+ isNewExpression,
+ isNullableTypeAnnotation,
+ isObjectPattern,
+ isOptionalCallExpression,
+ isOptionalMemberExpression,
+ isReturnStatement,
+ isSequenceExpression,
+ isSwitchStatement,
+ isTSArrayType,
+ isTSAsExpression,
+ isTSIntersectionType,
+ isTSNonNullExpression,
+ isTSOptionalType,
+ isTSRestType,
+ isTSTypeAssertion,
+ isTSUnionType,
+ isTaggedTemplateExpression,
+ isThrowStatement,
+ isTypeAnnotation,
+ isUnaryLike,
+ isUnionTypeAnnotation,
+ isVariableDeclarator,
+ isWhileStatement,
+ isYieldExpression
+} = _t;
+const PRECEDENCE = {
+ "||": 0,
+ "??": 0,
+ "&&": 1,
+ "|": 2,
+ "^": 3,
+ "&": 4,
+ "==": 5,
+ "===": 5,
+ "!=": 5,
+ "!==": 5,
+ "<": 6,
+ ">": 6,
+ "<=": 6,
+ ">=": 6,
+ in: 6,
+ instanceof: 6,
+ ">>": 7,
+ "<<": 7,
+ ">>>": 7,
+ "+": 8,
+ "-": 8,
+ "*": 9,
+ "/": 9,
+ "%": 9,
+ "**": 10
+};
+
+const isClassExtendsClause = (node, parent) => (isClassDeclaration(parent) || isClassExpression(parent)) && parent.superClass === node;
+
+const hasPostfixPart = (node, parent) => (isMemberExpression(parent) || isOptionalMemberExpression(parent)) && parent.object === node || (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent)) && parent.callee === node || isTaggedTemplateExpression(parent) && parent.tag === node || isTSNonNullExpression(parent);
+
+function NullableTypeAnnotation(node, parent) {
+ return isArrayTypeAnnotation(parent);
+}
+
+function FunctionTypeAnnotation(node, parent, printStack) {
+ return isUnionTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isArrayTypeAnnotation(parent) || isTypeAnnotation(parent) && isArrowFunctionExpression(printStack[printStack.length - 3]);
+}
+
+function UpdateExpression(node, parent) {
+ return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);
+}
+
+function ObjectExpression(node, parent, printStack) {
+ return isFirstInContext(printStack, {
+ expressionStatement: true,
+ arrowBody: true
+ });
+}
+
+function DoExpression(node, parent, printStack) {
+ return !node.async && isFirstInContext(printStack, {
+ expressionStatement: true
+ });
+}
+
+function Binary(node, parent) {
+ if (node.operator === "**" && isBinaryExpression(parent, {
+ operator: "**"
+ })) {
+ return parent.left === node;
+ }
+
+ if (isClassExtendsClause(node, parent)) {
+ return true;
+ }
+
+ if (hasPostfixPart(node, parent) || isUnaryLike(parent) || isAwaitExpression(parent)) {
+ return true;
+ }
+
+ if (isBinary(parent)) {
+ const parentOp = parent.operator;
+ const parentPos = PRECEDENCE[parentOp];
+ const nodeOp = node.operator;
+ const nodePos = PRECEDENCE[nodeOp];
+
+ if (parentPos === nodePos && parent.right === node && !isLogicalExpression(parent) || parentPos > nodePos) {
+ return true;
+ }
+ }
+}
+
+function UnionTypeAnnotation(node, parent) {
+ return isArrayTypeAnnotation(parent) || isNullableTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isUnionTypeAnnotation(parent);
+}
+
+function OptionalIndexedAccessType(node, parent) {
+ return isIndexedAccessType(parent, {
+ objectType: node
+ });
+}
+
+function TSAsExpression() {
+ return true;
+}
+
+function TSTypeAssertion() {
+ return true;
+}
+
+function TSUnionType(node, parent) {
+ return isTSArrayType(parent) || isTSOptionalType(parent) || isTSIntersectionType(parent) || isTSUnionType(parent) || isTSRestType(parent);
+}
+
+function TSInferType(node, parent) {
+ return isTSArrayType(parent) || isTSOptionalType(parent);
+}
+
+function BinaryExpression(node, parent) {
+ return node.operator === "in" && (isVariableDeclarator(parent) || isFor(parent));
+}
+
+function SequenceExpression(node, parent) {
+ if (isForStatement(parent) || isThrowStatement(parent) || isReturnStatement(parent) || isIfStatement(parent) && parent.test === node || isWhileStatement(parent) && parent.test === node || isForInStatement(parent) && parent.right === node || isSwitchStatement(parent) && parent.discriminant === node || isExpressionStatement(parent) && parent.expression === node) {
+ return false;
+ }
+
+ return true;
+}
+
+function YieldExpression(node, parent) {
+ return isBinary(parent) || isUnaryLike(parent) || hasPostfixPart(node, parent) || isAwaitExpression(parent) && isYieldExpression(node) || isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent);
+}
+
+function ClassExpression(node, parent, printStack) {
+ return isFirstInContext(printStack, {
+ expressionStatement: true,
+ exportDefault: true
+ });
+}
+
+function UnaryLike(node, parent) {
+ return hasPostfixPart(node, parent) || isBinaryExpression(parent, {
+ operator: "**",
+ left: node
+ }) || isClassExtendsClause(node, parent);
+}
+
+function FunctionExpression(node, parent, printStack) {
+ return isFirstInContext(printStack, {
+ expressionStatement: true,
+ exportDefault: true
+ });
+}
+
+function ArrowFunctionExpression(node, parent) {
+ return isExportDeclaration(parent) || ConditionalExpression(node, parent);
+}
+
+function ConditionalExpression(node, parent) {
+ if (isUnaryLike(parent) || isBinary(parent) || isConditionalExpression(parent, {
+ test: node
+ }) || isAwaitExpression(parent) || isTSTypeAssertion(parent) || isTSAsExpression(parent)) {
+ return true;
+ }
+
+ return UnaryLike(node, parent);
+}
+
+function OptionalMemberExpression(node, parent) {
+ return isCallExpression(parent, {
+ callee: node
+ }) || isMemberExpression(parent, {
+ object: node
+ });
+}
+
+function AssignmentExpression(node, parent) {
+ if (isObjectPattern(node.left)) {
+ return true;
+ } else {
+ return ConditionalExpression(node, parent);
+ }
+}
+
+function LogicalExpression(node, parent) {
+ switch (node.operator) {
+ case "||":
+ if (!isLogicalExpression(parent)) return false;
+ return parent.operator === "??" || parent.operator === "&&";
+
+ case "&&":
+ return isLogicalExpression(parent, {
+ operator: "??"
+ });
+
+ case "??":
+ return isLogicalExpression(parent) && parent.operator !== "??";
+ }
+}
+
+function Identifier(node, parent, printStack) {
+ if (node.name === "let") {
+ const isFollowedByBracket = isMemberExpression(parent, {
+ object: node,
+ computed: true
+ }) || isOptionalMemberExpression(parent, {
+ object: node,
+ computed: true,
+ optional: false
+ });
+ return isFirstInContext(printStack, {
+ expressionStatement: isFollowedByBracket,
+ forHead: isFollowedByBracket,
+ forInHead: isFollowedByBracket,
+ forOfHead: true
+ });
+ }
+
+ return node.name === "async" && isForOfStatement(parent) && node === parent.left;
+}
+
+function isFirstInContext(printStack, {
+ expressionStatement = false,
+ arrowBody = false,
+ exportDefault = false,
+ forHead = false,
+ forInHead = false,
+ forOfHead = false
+}) {
+ let i = printStack.length - 1;
+ let node = printStack[i];
+ i--;
+ let parent = printStack[i];
+
+ while (i >= 0) {
+ if (expressionStatement && isExpressionStatement(parent, {
+ expression: node
+ }) || exportDefault && isExportDefaultDeclaration(parent, {
+ declaration: node
+ }) || arrowBody && isArrowFunctionExpression(parent, {
+ body: node
+ }) || forHead && isForStatement(parent, {
+ init: node
+ }) || forInHead && isForInStatement(parent, {
+ left: node
+ }) || forOfHead && isForOfStatement(parent, {
+ left: node
+ })) {
+ return true;
+ }
+
+ if (hasPostfixPart(node, parent) && !isNewExpression(parent) || isSequenceExpression(parent) && parent.expressions[0] === node || isConditional(parent, {
+ test: node
+ }) || isBinary(parent, {
+ left: node
+ }) || isAssignmentExpression(parent, {
+ left: node
+ })) {
+ node = parent;
+ i--;
+ parent = printStack[i];
+ } else {
+ return false;
+ }
+ }
+
+ return false;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/whitespace.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/whitespace.js
new file mode 100644
index 000000000..80e2da9c4
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/node/whitespace.js
@@ -0,0 +1,214 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.nodes = exports.list = void 0;
+
+var _t = require("@babel/types");
+
+const {
+ FLIPPED_ALIAS_KEYS,
+ isArrayExpression,
+ isAssignmentExpression,
+ isBinary,
+ isBlockStatement,
+ isCallExpression,
+ isFunction,
+ isIdentifier,
+ isLiteral,
+ isMemberExpression,
+ isObjectExpression,
+ isOptionalCallExpression,
+ isOptionalMemberExpression,
+ isStringLiteral
+} = _t;
+
+function crawl(node, state = {}) {
+ if (isMemberExpression(node) || isOptionalMemberExpression(node)) {
+ crawl(node.object, state);
+ if (node.computed) crawl(node.property, state);
+ } else if (isBinary(node) || isAssignmentExpression(node)) {
+ crawl(node.left, state);
+ crawl(node.right, state);
+ } else if (isCallExpression(node) || isOptionalCallExpression(node)) {
+ state.hasCall = true;
+ crawl(node.callee, state);
+ } else if (isFunction(node)) {
+ state.hasFunction = true;
+ } else if (isIdentifier(node)) {
+ state.hasHelper = state.hasHelper || isHelper(node.callee);
+ }
+
+ return state;
+}
+
+function isHelper(node) {
+ if (isMemberExpression(node)) {
+ return isHelper(node.object) || isHelper(node.property);
+ } else if (isIdentifier(node)) {
+ return node.name === "require" || node.name[0] === "_";
+ } else if (isCallExpression(node)) {
+ return isHelper(node.callee);
+ } else if (isBinary(node) || isAssignmentExpression(node)) {
+ return isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right);
+ } else {
+ return false;
+ }
+}
+
+function isType(node) {
+ return isLiteral(node) || isObjectExpression(node) || isArrayExpression(node) || isIdentifier(node) || isMemberExpression(node);
+}
+
+const nodes = {
+ AssignmentExpression(node) {
+ const state = crawl(node.right);
+
+ if (state.hasCall && state.hasHelper || state.hasFunction) {
+ return {
+ before: state.hasFunction,
+ after: true
+ };
+ }
+ },
+
+ SwitchCase(node, parent) {
+ return {
+ before: !!node.consequent.length || parent.cases[0] === node,
+ after: !node.consequent.length && parent.cases[parent.cases.length - 1] === node
+ };
+ },
+
+ LogicalExpression(node) {
+ if (isFunction(node.left) || isFunction(node.right)) {
+ return {
+ after: true
+ };
+ }
+ },
+
+ Literal(node) {
+ if (isStringLiteral(node) && node.value === "use strict") {
+ return {
+ after: true
+ };
+ }
+ },
+
+ CallExpression(node) {
+ if (isFunction(node.callee) || isHelper(node)) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ },
+
+ OptionalCallExpression(node) {
+ if (isFunction(node.callee)) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ },
+
+ VariableDeclaration(node) {
+ for (let i = 0; i < node.declarations.length; i++) {
+ const declar = node.declarations[i];
+ let enabled = isHelper(declar.id) && !isType(declar.init);
+
+ if (!enabled) {
+ const state = crawl(declar.init);
+ enabled = isHelper(declar.init) && state.hasCall || state.hasFunction;
+ }
+
+ if (enabled) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ }
+ },
+
+ IfStatement(node) {
+ if (isBlockStatement(node.consequent)) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ }
+
+};
+exports.nodes = nodes;
+
+nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) {
+ if (parent.properties[0] === node) {
+ return {
+ before: true
+ };
+ }
+};
+
+nodes.ObjectTypeCallProperty = function (node, parent) {
+ var _parent$properties;
+
+ if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) {
+ return {
+ before: true
+ };
+ }
+};
+
+nodes.ObjectTypeIndexer = function (node, parent) {
+ var _parent$properties2, _parent$callPropertie;
+
+ if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) {
+ return {
+ before: true
+ };
+ }
+};
+
+nodes.ObjectTypeInternalSlot = function (node, parent) {
+ var _parent$properties3, _parent$callPropertie2, _parent$indexers;
+
+ if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) {
+ return {
+ before: true
+ };
+ }
+};
+
+const list = {
+ VariableDeclaration(node) {
+ return node.declarations.map(decl => decl.init);
+ },
+
+ ArrayExpression(node) {
+ return node.elements;
+ },
+
+ ObjectExpression(node) {
+ return node.properties;
+ }
+
+};
+exports.list = list;
+[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) {
+ if (typeof amounts === "boolean") {
+ amounts = {
+ after: amounts,
+ before: amounts
+ };
+ }
+
+ [type].concat(FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) {
+ nodes[type] = function () {
+ return amounts;
+ };
+ });
+});
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/printer.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/printer.js
new file mode 100644
index 000000000..0decd212c
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/printer.js
@@ -0,0 +1,540 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _buffer = require("./buffer");
+
+var n = require("./node");
+
+var _t = require("@babel/types");
+
+var generatorFunctions = require("./generators");
+
+const {
+ isProgram,
+ isFile,
+ isEmptyStatement
+} = _t;
+const SCIENTIFIC_NOTATION = /e/i;
+const ZERO_DECIMAL_INTEGER = /\.0+$/;
+const NON_DECIMAL_LITERAL = /^0[box]/;
+const PURE_ANNOTATION_RE = /^\s*[@#]__PURE__\s*$/;
+const {
+ needsParens,
+ needsWhitespaceAfter,
+ needsWhitespaceBefore
+} = n;
+
+class Printer {
+ constructor(format, map) {
+ this.inForStatementInitCounter = 0;
+ this._printStack = [];
+ this._indent = 0;
+ this._insideAux = false;
+ this._parenPushNewlineState = null;
+ this._noLineTerminator = false;
+ this._printAuxAfterOnNextUserNode = false;
+ this._printedComments = new WeakSet();
+ this._endsWithInteger = false;
+ this._endsWithWord = false;
+ this.format = format;
+ this._buf = new _buffer.default(map);
+ }
+
+ generate(ast) {
+ this.print(ast);
+
+ this._maybeAddAuxComment();
+
+ return this._buf.get();
+ }
+
+ indent() {
+ if (this.format.compact || this.format.concise) return;
+ this._indent++;
+ }
+
+ dedent() {
+ if (this.format.compact || this.format.concise) return;
+ this._indent--;
+ }
+
+ semicolon(force = false) {
+ this._maybeAddAuxComment();
+
+ this._append(";", !force);
+ }
+
+ rightBrace() {
+ if (this.format.minified) {
+ this._buf.removeLastSemicolon();
+ }
+
+ this.token("}");
+ }
+
+ space(force = false) {
+ if (this.format.compact) return;
+
+ if (force) {
+ this._space();
+ } else if (this._buf.hasContent()) {
+ const lastCp = this.getLastChar();
+
+ if (lastCp !== 32 && lastCp !== 10) {
+ this._space();
+ }
+ }
+ }
+
+ word(str) {
+ if (this._endsWithWord || this.endsWith(47) && str.charCodeAt(0) === 47) {
+ this._space();
+ }
+
+ this._maybeAddAuxComment();
+
+ this._append(str);
+
+ this._endsWithWord = true;
+ }
+
+ number(str) {
+ this.word(str);
+ this._endsWithInteger = Number.isInteger(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46;
+ }
+
+ token(str) {
+ const lastChar = this.getLastChar();
+ const strFirst = str.charCodeAt(0);
+
+ if (str === "--" && lastChar === 33 || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) {
+ this._space();
+ }
+
+ this._maybeAddAuxComment();
+
+ this._append(str);
+ }
+
+ newline(i = 1) {
+ if (this.format.retainLines || this.format.compact) return;
+
+ if (this.format.concise) {
+ this.space();
+ return;
+ }
+
+ const charBeforeNewline = this.endsWithCharAndNewline();
+ if (charBeforeNewline === 10) return;
+
+ if (charBeforeNewline === 123 || charBeforeNewline === 58) {
+ i--;
+ }
+
+ if (i <= 0) return;
+
+ for (let j = 0; j < i; j++) {
+ this._newline();
+ }
+ }
+
+ endsWith(char) {
+ return this.getLastChar() === char;
+ }
+
+ getLastChar() {
+ return this._buf.getLastChar();
+ }
+
+ endsWithCharAndNewline() {
+ return this._buf.endsWithCharAndNewline();
+ }
+
+ removeTrailingNewline() {
+ this._buf.removeTrailingNewline();
+ }
+
+ exactSource(loc, cb) {
+ this._catchUp("start", loc);
+
+ this._buf.exactSource(loc, cb);
+ }
+
+ source(prop, loc) {
+ this._catchUp(prop, loc);
+
+ this._buf.source(prop, loc);
+ }
+
+ withSource(prop, loc, cb) {
+ this._catchUp(prop, loc);
+
+ this._buf.withSource(prop, loc, cb);
+ }
+
+ _space() {
+ this._append(" ", true);
+ }
+
+ _newline() {
+ this._append("\n", true);
+ }
+
+ _append(str, queue = false) {
+ this._maybeAddParen(str);
+
+ this._maybeIndent(str);
+
+ if (queue) this._buf.queue(str);else this._buf.append(str);
+ this._endsWithWord = false;
+ this._endsWithInteger = false;
+ }
+
+ _maybeIndent(str) {
+ if (this._indent && this.endsWith(10) && str.charCodeAt(0) !== 10) {
+ this._buf.queue(this._getIndent());
+ }
+ }
+
+ _maybeAddParen(str) {
+ const parenPushNewlineState = this._parenPushNewlineState;
+ if (!parenPushNewlineState) return;
+ let i;
+
+ for (i = 0; i < str.length && str[i] === " "; i++) continue;
+
+ if (i === str.length) {
+ return;
+ }
+
+ const cha = str[i];
+
+ if (cha !== "\n") {
+ if (cha !== "/" || i + 1 === str.length) {
+ this._parenPushNewlineState = null;
+ return;
+ }
+
+ const chaPost = str[i + 1];
+
+ if (chaPost === "*") {
+ if (PURE_ANNOTATION_RE.test(str.slice(i + 2, str.length - 2))) {
+ return;
+ }
+ } else if (chaPost !== "/") {
+ this._parenPushNewlineState = null;
+ return;
+ }
+ }
+
+ this.token("(");
+ this.indent();
+ parenPushNewlineState.printed = true;
+ }
+
+ _catchUp(prop, loc) {
+ if (!this.format.retainLines) return;
+ const pos = loc ? loc[prop] : null;
+
+ if ((pos == null ? void 0 : pos.line) != null) {
+ const count = pos.line - this._buf.getCurrentLine();
+
+ for (let i = 0; i < count; i++) {
+ this._newline();
+ }
+ }
+ }
+
+ _getIndent() {
+ return this.format.indent.style.repeat(this._indent);
+ }
+
+ startTerminatorless(isLabel = false) {
+ if (isLabel) {
+ this._noLineTerminator = true;
+ return null;
+ } else {
+ return this._parenPushNewlineState = {
+ printed: false
+ };
+ }
+ }
+
+ endTerminatorless(state) {
+ this._noLineTerminator = false;
+
+ if (state != null && state.printed) {
+ this.dedent();
+ this.newline();
+ this.token(")");
+ }
+ }
+
+ print(node, parent) {
+ if (!node) return;
+ const oldConcise = this.format.concise;
+
+ if (node._compact) {
+ this.format.concise = true;
+ }
+
+ const printMethod = this[node.type];
+
+ if (!printMethod) {
+ throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node == null ? void 0 : node.constructor.name)}`);
+ }
+
+ this._printStack.push(node);
+
+ const oldInAux = this._insideAux;
+ this._insideAux = !node.loc;
+
+ this._maybeAddAuxComment(this._insideAux && !oldInAux);
+
+ let shouldPrintParens = needsParens(node, parent, this._printStack);
+
+ if (this.format.retainFunctionParens && node.type === "FunctionExpression" && node.extra && node.extra.parenthesized) {
+ shouldPrintParens = true;
+ }
+
+ if (shouldPrintParens) this.token("(");
+
+ this._printLeadingComments(node);
+
+ const loc = isProgram(node) || isFile(node) ? null : node.loc;
+ this.withSource("start", loc, () => {
+ printMethod.call(this, node, parent);
+ });
+
+ this._printTrailingComments(node);
+
+ if (shouldPrintParens) this.token(")");
+
+ this._printStack.pop();
+
+ this.format.concise = oldConcise;
+ this._insideAux = oldInAux;
+ }
+
+ _maybeAddAuxComment(enteredPositionlessNode) {
+ if (enteredPositionlessNode) this._printAuxBeforeComment();
+ if (!this._insideAux) this._printAuxAfterComment();
+ }
+
+ _printAuxBeforeComment() {
+ if (this._printAuxAfterOnNextUserNode) return;
+ this._printAuxAfterOnNextUserNode = true;
+ const comment = this.format.auxiliaryCommentBefore;
+
+ if (comment) {
+ this._printComment({
+ type: "CommentBlock",
+ value: comment
+ });
+ }
+ }
+
+ _printAuxAfterComment() {
+ if (!this._printAuxAfterOnNextUserNode) return;
+ this._printAuxAfterOnNextUserNode = false;
+ const comment = this.format.auxiliaryCommentAfter;
+
+ if (comment) {
+ this._printComment({
+ type: "CommentBlock",
+ value: comment
+ });
+ }
+ }
+
+ getPossibleRaw(node) {
+ const extra = node.extra;
+
+ if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) {
+ return extra.raw;
+ }
+ }
+
+ printJoin(nodes, parent, opts = {}) {
+ if (!(nodes != null && nodes.length)) return;
+ if (opts.indent) this.indent();
+ const newlineOpts = {
+ addNewlines: opts.addNewlines
+ };
+
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+ if (opts.statement) this._printNewline(true, node, parent, newlineOpts);
+ this.print(node, parent);
+
+ if (opts.iterator) {
+ opts.iterator(node, i);
+ }
+
+ if (opts.separator && i < nodes.length - 1) {
+ opts.separator.call(this);
+ }
+
+ if (opts.statement) this._printNewline(false, node, parent, newlineOpts);
+ }
+
+ if (opts.indent) this.dedent();
+ }
+
+ printAndIndentOnComments(node, parent) {
+ const indent = node.leadingComments && node.leadingComments.length > 0;
+ if (indent) this.indent();
+ this.print(node, parent);
+ if (indent) this.dedent();
+ }
+
+ printBlock(parent) {
+ const node = parent.body;
+
+ if (!isEmptyStatement(node)) {
+ this.space();
+ }
+
+ this.print(node, parent);
+ }
+
+ _printTrailingComments(node) {
+ this._printComments(this._getComments(false, node));
+ }
+
+ _printLeadingComments(node) {
+ this._printComments(this._getComments(true, node), true);
+ }
+
+ printInnerComments(node, indent = true) {
+ var _node$innerComments;
+
+ if (!((_node$innerComments = node.innerComments) != null && _node$innerComments.length)) return;
+ if (indent) this.indent();
+
+ this._printComments(node.innerComments);
+
+ if (indent) this.dedent();
+ }
+
+ printSequence(nodes, parent, opts = {}) {
+ opts.statement = true;
+ return this.printJoin(nodes, parent, opts);
+ }
+
+ printList(items, parent, opts = {}) {
+ if (opts.separator == null) {
+ opts.separator = commaSeparator;
+ }
+
+ return this.printJoin(items, parent, opts);
+ }
+
+ _printNewline(leading, node, parent, opts) {
+ if (this.format.retainLines || this.format.compact) return;
+
+ if (this.format.concise) {
+ this.space();
+ return;
+ }
+
+ let lines = 0;
+
+ if (this._buf.hasContent()) {
+ if (!leading) lines++;
+ if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;
+ const needs = leading ? needsWhitespaceBefore : needsWhitespaceAfter;
+ if (needs(node, parent)) lines++;
+ }
+
+ this.newline(Math.min(2, lines));
+ }
+
+ _getComments(leading, node) {
+ return node && (leading ? node.leadingComments : node.trailingComments) || [];
+ }
+
+ _printComment(comment, skipNewLines) {
+ if (!this.format.shouldPrintComment(comment.value)) return;
+ if (comment.ignore) return;
+ if (this._printedComments.has(comment)) return;
+
+ this._printedComments.add(comment);
+
+ const isBlockComment = comment.type === "CommentBlock";
+ const printNewLines = isBlockComment && !skipNewLines && !this._noLineTerminator;
+ if (printNewLines && this._buf.hasContent()) this.newline(1);
+ const lastCharCode = this.getLastChar();
+
+ if (lastCharCode !== 91 && lastCharCode !== 123) {
+ this.space();
+ }
+
+ let val = !isBlockComment && !this._noLineTerminator ? `//${comment.value}\n` : `/*${comment.value}*/`;
+
+ if (isBlockComment && this.format.indent.adjustMultilineComment) {
+ var _comment$loc;
+
+ const offset = (_comment$loc = comment.loc) == null ? void 0 : _comment$loc.start.column;
+
+ if (offset) {
+ const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
+ val = val.replace(newlineRegex, "\n");
+ }
+
+ const indentSize = Math.max(this._getIndent().length, this.format.retainLines ? 0 : this._buf.getCurrentColumn());
+ val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`);
+ }
+
+ if (this.endsWith(47)) this._space();
+ this.withSource("start", comment.loc, () => {
+ this._append(val);
+ });
+ if (printNewLines) this.newline(1);
+ }
+
+ _printComments(comments, inlinePureAnnotation) {
+ if (!(comments != null && comments.length)) return;
+
+ if (inlinePureAnnotation && comments.length === 1 && PURE_ANNOTATION_RE.test(comments[0].value)) {
+ this._printComment(comments[0], this._buf.hasContent() && !this.endsWith(10));
+ } else {
+ for (const comment of comments) {
+ this._printComment(comment);
+ }
+ }
+ }
+
+ printAssertions(node) {
+ var _node$assertions;
+
+ if ((_node$assertions = node.assertions) != null && _node$assertions.length) {
+ this.space();
+ this.word("assert");
+ this.space();
+ this.token("{");
+ this.space();
+ this.printList(node.assertions, node);
+ this.space();
+ this.token("}");
+ }
+ }
+
+}
+
+Object.assign(Printer.prototype, generatorFunctions);
+{
+ Printer.prototype.Noop = function Noop() {};
+}
+var _default = Printer;
+exports.default = _default;
+
+function commaSeparator() {
+ this.token(",");
+ this.space();
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/source-map.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/source-map.js
new file mode 100644
index 000000000..99da1defd
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/lib/source-map.js
@@ -0,0 +1,78 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _sourceMap = require("source-map");
+
+class SourceMap {
+ constructor(opts, code) {
+ this._cachedMap = void 0;
+ this._code = void 0;
+ this._opts = void 0;
+ this._rawMappings = void 0;
+ this._lastGenLine = void 0;
+ this._lastSourceLine = void 0;
+ this._lastSourceColumn = void 0;
+ this._cachedMap = null;
+ this._code = code;
+ this._opts = opts;
+ this._rawMappings = [];
+ }
+
+ get() {
+ if (!this._cachedMap) {
+ const map = this._cachedMap = new _sourceMap.SourceMapGenerator({
+ sourceRoot: this._opts.sourceRoot
+ });
+ const code = this._code;
+
+ if (typeof code === "string") {
+ map.setSourceContent(this._opts.sourceFileName.replace(/\\/g, "/"), code);
+ } else if (typeof code === "object") {
+ Object.keys(code).forEach(sourceFileName => {
+ map.setSourceContent(sourceFileName.replace(/\\/g, "/"), code[sourceFileName]);
+ });
+ }
+
+ this._rawMappings.forEach(mapping => map.addMapping(mapping), map);
+ }
+
+ return this._cachedMap.toJSON();
+ }
+
+ getRawMappings() {
+ return this._rawMappings.slice();
+ }
+
+ mark(generatedLine, generatedColumn, line, column, identifierName, filename, force) {
+ if (this._lastGenLine !== generatedLine && line === null) return;
+
+ if (!force && this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) {
+ return;
+ }
+
+ this._cachedMap = null;
+ this._lastGenLine = generatedLine;
+ this._lastSourceLine = line;
+ this._lastSourceColumn = column;
+
+ this._rawMappings.push({
+ name: identifierName || undefined,
+ generated: {
+ line: generatedLine,
+ column: generatedColumn
+ },
+ source: line == null ? undefined : (filename || this._opts.sourceFileName).replace(/\\/g, "/"),
+ original: line == null ? undefined : {
+ line: line,
+ column: column
+ }
+ });
+ }
+
+}
+
+exports.default = SourceMap;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/CHANGELOG.md b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/CHANGELOG.md
new file mode 100644
index 000000000..3a8c066c6
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/CHANGELOG.md
@@ -0,0 +1,301 @@
+# Change Log
+
+## 0.5.6
+
+* Fix for regression when people were using numbers as names in source maps. See
+ #236.
+
+## 0.5.5
+
+* Fix "regression" of unsupported, implementation behavior that half the world
+ happens to have come to depend on. See #235.
+
+* Fix regression involving function hoisting in SpiderMonkey. See #233.
+
+## 0.5.4
+
+* Large performance improvements to source-map serialization. See #228 and #229.
+
+## 0.5.3
+
+* Do not include unnecessary distribution files. See
+ commit ef7006f8d1647e0a83fdc60f04f5a7ca54886f86.
+
+## 0.5.2
+
+* Include browser distributions of the library in package.json's `files`. See
+ issue #212.
+
+## 0.5.1
+
+* Fix latent bugs in IndexedSourceMapConsumer.prototype._parseMappings. See
+ ff05274becc9e6e1295ed60f3ea090d31d843379.
+
+## 0.5.0
+
+* Node 0.8 is no longer supported.
+
+* Use webpack instead of dryice for bundling.
+
+* Big speedups serializing source maps. See pull request #203.
+
+* Fix a bug with `SourceMapConsumer.prototype.sourceContentFor` and sources that
+ explicitly start with the source root. See issue #199.
+
+## 0.4.4
+
+* Fix an issue where using a `SourceMapGenerator` after having created a
+ `SourceMapConsumer` from it via `SourceMapConsumer.fromSourceMap` failed. See
+ issue #191.
+
+* Fix an issue with where `SourceMapGenerator` would mistakenly consider
+ different mappings as duplicates of each other and avoid generating them. See
+ issue #192.
+
+## 0.4.3
+
+* A very large number of performance improvements, particularly when parsing
+ source maps. Collectively about 75% of time shaved off of the source map
+ parsing benchmark!
+
+* Fix a bug in `SourceMapConsumer.prototype.allGeneratedPositionsFor` and fuzzy
+ searching in the presence of a column option. See issue #177.
+
+* Fix a bug with joining a source and its source root when the source is above
+ the root. See issue #182.
+
+* Add the `SourceMapConsumer.prototype.hasContentsOfAllSources` method to
+ determine when all sources' contents are inlined into the source map. See
+ issue #190.
+
+## 0.4.2
+
+* Add an `.npmignore` file so that the benchmarks aren't pulled down by
+ dependent projects. Issue #169.
+
+* Add an optional `column` argument to
+ `SourceMapConsumer.prototype.allGeneratedPositionsFor` and better handle lines
+ with no mappings. Issues #172 and #173.
+
+## 0.4.1
+
+* Fix accidentally defining a global variable. #170.
+
+## 0.4.0
+
+* The default direction for fuzzy searching was changed back to its original
+ direction. See #164.
+
+* There is now a `bias` option you can supply to `SourceMapConsumer` to control
+ the fuzzy searching direction. See #167.
+
+* About an 8% speed up in parsing source maps. See #159.
+
+* Added a benchmark for parsing and generating source maps.
+
+## 0.3.0
+
+* Change the default direction that searching for positions fuzzes when there is
+ not an exact match. See #154.
+
+* Support for environments using json2.js for JSON serialization. See #156.
+
+## 0.2.0
+
+* Support for consuming "indexed" source maps which do not have any remote
+ sections. See pull request #127. This introduces a minor backwards
+ incompatibility if you are monkey patching `SourceMapConsumer.prototype`
+ methods.
+
+## 0.1.43
+
+* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue
+ #148 for some discussion and issues #150, #151, and #152 for implementations.
+
+## 0.1.42
+
+* Fix an issue where `SourceNode`s from different versions of the source-map
+ library couldn't be used in conjunction with each other. See issue #142.
+
+## 0.1.41
+
+* Fix a bug with getting the source content of relative sources with a "./"
+ prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768).
+
+* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the
+ column span of each mapping.
+
+* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find
+ all generated positions associated with a given original source and line.
+
+## 0.1.40
+
+* Performance improvements for parsing source maps in SourceMapConsumer.
+
+## 0.1.39
+
+* Fix a bug where setting a source's contents to null before any source content
+ had been set before threw a TypeError. See issue #131.
+
+## 0.1.38
+
+* Fix a bug where finding relative paths from an empty path were creating
+ absolute paths. See issue #129.
+
+## 0.1.37
+
+* Fix a bug where if the source root was an empty string, relative source paths
+ would turn into absolute source paths. Issue #124.
+
+## 0.1.36
+
+* Allow the `names` mapping property to be an empty string. Issue #121.
+
+## 0.1.35
+
+* A third optional parameter was added to `SourceNode.fromStringWithSourceMap`
+ to specify a path that relative sources in the second parameter should be
+ relative to. Issue #105.
+
+* If no file property is given to a `SourceMapGenerator`, then the resulting
+ source map will no longer have a `null` file property. The property will
+ simply not exist. Issue #104.
+
+* Fixed a bug where consecutive newlines were ignored in `SourceNode`s.
+ Issue #116.
+
+## 0.1.34
+
+* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103.
+
+* Fix bug involving source contents and the
+ `SourceMapGenerator.prototype.applySourceMap`. Issue #100.
+
+## 0.1.33
+
+* Fix some edge cases surrounding path joining and URL resolution.
+
+* Add a third parameter for relative path to
+ `SourceMapGenerator.prototype.applySourceMap`.
+
+* Fix issues with mappings and EOLs.
+
+## 0.1.32
+
+* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns
+ (issue 92).
+
+* Fixed test runner to actually report number of failed tests as its process
+ exit code.
+
+* Fixed a typo when reporting bad mappings (issue 87).
+
+## 0.1.31
+
+* Delay parsing the mappings in SourceMapConsumer until queried for a source
+ location.
+
+* Support Sass source maps (which at the time of writing deviate from the spec
+ in small ways) in SourceMapConsumer.
+
+## 0.1.30
+
+* Do not join source root with a source, when the source is a data URI.
+
+* Extend the test runner to allow running single specific test files at a time.
+
+* Performance improvements in `SourceNode.prototype.walk` and
+ `SourceMapConsumer.prototype.eachMapping`.
+
+* Source map browser builds will now work inside Workers.
+
+* Better error messages when attempting to add an invalid mapping to a
+ `SourceMapGenerator`.
+
+## 0.1.29
+
+* Allow duplicate entries in the `names` and `sources` arrays of source maps
+ (usually from TypeScript) we are parsing. Fixes github issue 72.
+
+## 0.1.28
+
+* Skip duplicate mappings when creating source maps from SourceNode; github
+ issue 75.
+
+## 0.1.27
+
+* Don't throw an error when the `file` property is missing in SourceMapConsumer,
+ we don't use it anyway.
+
+## 0.1.26
+
+* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70.
+
+## 0.1.25
+
+* Make compatible with browserify
+
+## 0.1.24
+
+* Fix issue with absolute paths and `file://` URIs. See
+ https://bugzilla.mozilla.org/show_bug.cgi?id=885597
+
+## 0.1.23
+
+* Fix issue with absolute paths and sourcesContent, github issue 64.
+
+## 0.1.22
+
+* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21.
+
+## 0.1.21
+
+* Fixed handling of sources that start with a slash so that they are relative to
+ the source root's host.
+
+## 0.1.20
+
+* Fixed github issue #43: absolute URLs aren't joined with the source root
+ anymore.
+
+## 0.1.19
+
+* Using Travis CI to run tests.
+
+## 0.1.18
+
+* Fixed a bug in the handling of sourceRoot.
+
+## 0.1.17
+
+* Added SourceNode.fromStringWithSourceMap.
+
+## 0.1.16
+
+* Added missing documentation.
+
+* Fixed the generating of empty mappings in SourceNode.
+
+## 0.1.15
+
+* Added SourceMapGenerator.applySourceMap.
+
+## 0.1.14
+
+* The sourceRoot is now handled consistently.
+
+## 0.1.13
+
+* Added SourceMapGenerator.fromSourceMap.
+
+## 0.1.12
+
+* SourceNode now generates empty mappings too.
+
+## 0.1.11
+
+* Added name support to SourceNode.
+
+## 0.1.10
+
+* Added sourcesContent support to the customer and generator.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/LICENSE
new file mode 100644
index 000000000..ed1b7cf27
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/LICENSE
@@ -0,0 +1,28 @@
+
+Copyright (c) 2009-2011, Mozilla Foundation and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the names of the Mozilla Foundation nor the names of project
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/README.md b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/README.md
new file mode 100644
index 000000000..32813394a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/README.md
@@ -0,0 +1,729 @@
+# Source Map
+
+[](https://travis-ci.org/mozilla/source-map)
+
+[](https://www.npmjs.com/package/source-map)
+
+This is a library to generate and consume the source map format
+[described here][format].
+
+[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit
+
+## Use with Node
+
+ $ npm install source-map
+
+## Use on the Web
+
+
+
+--------------------------------------------------------------------------------
+
+
+
+
+
+## Table of Contents
+
+- [Examples](#examples)
+ - [Consuming a source map](#consuming-a-source-map)
+ - [Generating a source map](#generating-a-source-map)
+ - [With SourceNode (high level API)](#with-sourcenode-high-level-api)
+ - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api)
+- [API](#api)
+ - [SourceMapConsumer](#sourcemapconsumer)
+ - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap)
+ - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans)
+ - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition)
+ - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition)
+ - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition)
+ - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources)
+ - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing)
+ - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order)
+ - [SourceMapGenerator](#sourcemapgenerator)
+ - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap)
+ - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer)
+ - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping)
+ - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent)
+ - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath)
+ - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring)
+ - [SourceNode](#sourcenode)
+ - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name)
+ - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath)
+ - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk)
+ - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk)
+ - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent)
+ - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn)
+ - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn)
+ - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep)
+ - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement)
+ - [SourceNode.prototype.toString()](#sourcenodeprototypetostring)
+ - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap)
+
+
+
+## Examples
+
+### Consuming a source map
+
+```js
+var rawSourceMap = {
+ version: 3,
+ file: 'min.js',
+ names: ['bar', 'baz', 'n'],
+ sources: ['one.js', 'two.js'],
+ sourceRoot: 'http://example.com/www/js/',
+ mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
+};
+
+var smc = new SourceMapConsumer(rawSourceMap);
+
+console.log(smc.sources);
+// [ 'http://example.com/www/js/one.js',
+// 'http://example.com/www/js/two.js' ]
+
+console.log(smc.originalPositionFor({
+ line: 2,
+ column: 28
+}));
+// { source: 'http://example.com/www/js/two.js',
+// line: 2,
+// column: 10,
+// name: 'n' }
+
+console.log(smc.generatedPositionFor({
+ source: 'http://example.com/www/js/two.js',
+ line: 2,
+ column: 10
+}));
+// { line: 2, column: 28 }
+
+smc.eachMapping(function (m) {
+ // ...
+});
+```
+
+### Generating a source map
+
+In depth guide:
+[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/)
+
+#### With SourceNode (high level API)
+
+```js
+function compile(ast) {
+ switch (ast.type) {
+ case 'BinaryExpression':
+ return new SourceNode(
+ ast.location.line,
+ ast.location.column,
+ ast.location.source,
+ [compile(ast.left), " + ", compile(ast.right)]
+ );
+ case 'Literal':
+ return new SourceNode(
+ ast.location.line,
+ ast.location.column,
+ ast.location.source,
+ String(ast.value)
+ );
+ // ...
+ default:
+ throw new Error("Bad AST");
+ }
+}
+
+var ast = parse("40 + 2", "add.js");
+console.log(compile(ast).toStringWithSourceMap({
+ file: 'add.js'
+}));
+// { code: '40 + 2',
+// map: [object SourceMapGenerator] }
+```
+
+#### With SourceMapGenerator (low level API)
+
+```js
+var map = new SourceMapGenerator({
+ file: "source-mapped.js"
+});
+
+map.addMapping({
+ generated: {
+ line: 10,
+ column: 35
+ },
+ source: "foo.js",
+ original: {
+ line: 33,
+ column: 2
+ },
+ name: "christopher"
+});
+
+console.log(map.toString());
+// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}'
+```
+
+## API
+
+Get a reference to the module:
+
+```js
+// Node.js
+var sourceMap = require('source-map');
+
+// Browser builds
+var sourceMap = window.sourceMap;
+
+// Inside Firefox
+const sourceMap = require("devtools/toolkit/sourcemap/source-map.js");
+```
+
+### SourceMapConsumer
+
+A SourceMapConsumer instance represents a parsed source map which we can query
+for information about the original file positions by giving it a file position
+in the generated source.
+
+#### new SourceMapConsumer(rawSourceMap)
+
+The only parameter is the raw source map (either as a string which can be
+`JSON.parse`'d, or an object). According to the spec, source maps have the
+following attributes:
+
+* `version`: Which version of the source map spec this map is following.
+
+* `sources`: An array of URLs to the original source files.
+
+* `names`: An array of identifiers which can be referenced by individual
+ mappings.
+
+* `sourceRoot`: Optional. The URL root from which all sources are relative.
+
+* `sourcesContent`: Optional. An array of contents of the original source files.
+
+* `mappings`: A string of base64 VLQs which contain the actual mappings.
+
+* `file`: Optional. The generated filename this source map is associated with.
+
+```js
+var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData);
+```
+
+#### SourceMapConsumer.prototype.computeColumnSpans()
+
+Compute the last column for each generated mapping. The last column is
+inclusive.
+
+```js
+// Before:
+consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1 },
+// { line: 2,
+// column: 10 },
+// { line: 2,
+// column: 20 } ]
+
+consumer.computeColumnSpans();
+
+// After:
+consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1,
+// lastColumn: 9 },
+// { line: 2,
+// column: 10,
+// lastColumn: 19 },
+// { line: 2,
+// column: 20,
+// lastColumn: Infinity } ]
+
+```
+
+#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)
+
+Returns the original source, line, and column information for the generated
+source's line and column positions provided. The only argument is an object with
+the following properties:
+
+* `line`: The line number in the generated source.
+
+* `column`: The column number in the generated source.
+
+* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or
+ `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest
+ element that is smaller than or greater than the one we are searching for,
+ respectively, if the exact element cannot be found. Defaults to
+ `SourceMapConsumer.GREATEST_LOWER_BOUND`.
+
+and an object is returned with the following properties:
+
+* `source`: The original source file, or null if this information is not
+ available.
+
+* `line`: The line number in the original source, or null if this information is
+ not available.
+
+* `column`: The column number in the original source, or null if this
+ information is not available.
+
+* `name`: The original identifier, or null if this information is not available.
+
+```js
+consumer.originalPositionFor({ line: 2, column: 10 })
+// { source: 'foo.coffee',
+// line: 2,
+// column: 2,
+// name: null }
+
+consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 })
+// { source: null,
+// line: null,
+// column: null,
+// name: null }
+```
+
+#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition)
+
+Returns the generated line and column information for the original source,
+line, and column positions provided. The only argument is an object with
+the following properties:
+
+* `source`: The filename of the original source.
+
+* `line`: The line number in the original source.
+
+* `column`: The column number in the original source.
+
+and an object is returned with the following properties:
+
+* `line`: The line number in the generated source, or null.
+
+* `column`: The column number in the generated source, or null.
+
+```js
+consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 })
+// { line: 1,
+// column: 56 }
+```
+
+#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)
+
+Returns all generated line and column information for the original source, line,
+and column provided. If no column is provided, returns all mappings
+corresponding to a either the line we are searching for or the next closest line
+that has any mappings. Otherwise, returns all mappings corresponding to the
+given line and either the column we are searching for or the next closest column
+that has any offsets.
+
+The only argument is an object with the following properties:
+
+* `source`: The filename of the original source.
+
+* `line`: The line number in the original source.
+
+* `column`: Optional. The column number in the original source.
+
+and an array of objects is returned, each with the following properties:
+
+* `line`: The line number in the generated source, or null.
+
+* `column`: The column number in the generated source, or null.
+
+```js
+consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1 },
+// { line: 2,
+// column: 10 },
+// { line: 2,
+// column: 20 } ]
+```
+
+#### SourceMapConsumer.prototype.hasContentsOfAllSources()
+
+Return true if we have the embedded source content for every source listed in
+the source map, false otherwise.
+
+In other words, if this method returns `true`, then
+`consumer.sourceContentFor(s)` will succeed for every source `s` in
+`consumer.sources`.
+
+```js
+// ...
+if (consumer.hasContentsOfAllSources()) {
+ consumerReadyCallback(consumer);
+} else {
+ fetchSources(consumer, consumerReadyCallback);
+}
+// ...
+```
+
+#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])
+
+Returns the original source content for the source provided. The only
+argument is the URL of the original source file.
+
+If the source content for the given source is not found, then an error is
+thrown. Optionally, pass `true` as the second param to have `null` returned
+instead.
+
+```js
+consumer.sources
+// [ "my-cool-lib.clj" ]
+
+consumer.sourceContentFor("my-cool-lib.clj")
+// "..."
+
+consumer.sourceContentFor("this is not in the source map");
+// Error: "this is not in the source map" is not in the source map
+
+consumer.sourceContentFor("this is not in the source map", true);
+// null
+```
+
+#### SourceMapConsumer.prototype.eachMapping(callback, context, order)
+
+Iterate over each mapping between an original source/line/column and a
+generated line/column in this source map.
+
+* `callback`: The function that is called with each mapping. Mappings have the
+ form `{ source, generatedLine, generatedColumn, originalLine, originalColumn,
+ name }`
+
+* `context`: Optional. If specified, this object will be the value of `this`
+ every time that `callback` is called.
+
+* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or
+ `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over
+ the mappings sorted by the generated file's line/column order or the
+ original's source/line/column order, respectively. Defaults to
+ `SourceMapConsumer.GENERATED_ORDER`.
+
+```js
+consumer.eachMapping(function (m) { console.log(m); })
+// ...
+// { source: 'illmatic.js',
+// generatedLine: 1,
+// generatedColumn: 0,
+// originalLine: 1,
+// originalColumn: 0,
+// name: null }
+// { source: 'illmatic.js',
+// generatedLine: 2,
+// generatedColumn: 0,
+// originalLine: 2,
+// originalColumn: 0,
+// name: null }
+// ...
+```
+### SourceMapGenerator
+
+An instance of the SourceMapGenerator represents a source map which is being
+built incrementally.
+
+#### new SourceMapGenerator([startOfSourceMap])
+
+You may pass an object with the following properties:
+
+* `file`: The filename of the generated source that this source map is
+ associated with.
+
+* `sourceRoot`: A root for all relative URLs in this source map.
+
+* `skipValidation`: Optional. When `true`, disables validation of mappings as
+ they are added. This can improve performance but should be used with
+ discretion, as a last resort. Even then, one should avoid using this flag when
+ running tests, if possible.
+
+```js
+var generator = new sourceMap.SourceMapGenerator({
+ file: "my-generated-javascript-file.js",
+ sourceRoot: "http://example.com/app/js/"
+});
+```
+
+#### SourceMapGenerator.fromSourceMap(sourceMapConsumer)
+
+Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance.
+
+* `sourceMapConsumer` The SourceMap.
+
+```js
+var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer);
+```
+
+#### SourceMapGenerator.prototype.addMapping(mapping)
+
+Add a single mapping from original source line and column to the generated
+source's line and column for this source map being created. The mapping object
+should have the following properties:
+
+* `generated`: An object with the generated line and column positions.
+
+* `original`: An object with the original line and column positions.
+
+* `source`: The original source file (relative to the sourceRoot).
+
+* `name`: An optional original token name for this mapping.
+
+```js
+generator.addMapping({
+ source: "module-one.scm",
+ original: { line: 128, column: 0 },
+ generated: { line: 3, column: 456 }
+})
+```
+
+#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)
+
+Set the source content for an original source file.
+
+* `sourceFile` the URL of the original source file.
+
+* `sourceContent` the content of the source file.
+
+```js
+generator.setSourceContent("module-one.scm",
+ fs.readFileSync("path/to/module-one.scm"))
+```
+
+#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])
+
+Applies a SourceMap for a source file to the SourceMap.
+Each mapping to the supplied source file is rewritten using the
+supplied SourceMap. Note: The resolution for the resulting mappings
+is the minimum of this map and the supplied map.
+
+* `sourceMapConsumer`: The SourceMap to be applied.
+
+* `sourceFile`: Optional. The filename of the source file.
+ If omitted, sourceMapConsumer.file will be used, if it exists.
+ Otherwise an error will be thrown.
+
+* `sourceMapPath`: Optional. The dirname of the path to the SourceMap
+ to be applied. If relative, it is relative to the SourceMap.
+
+ This parameter is needed when the two SourceMaps aren't in the same
+ directory, and the SourceMap to be applied contains relative source
+ paths. If so, those relative source paths need to be rewritten
+ relative to the SourceMap.
+
+ If omitted, it is assumed that both SourceMaps are in the same directory,
+ thus not needing any rewriting. (Supplying `'.'` has the same effect.)
+
+#### SourceMapGenerator.prototype.toString()
+
+Renders the source map being generated to a string.
+
+```js
+generator.toString()
+// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}'
+```
+
+### SourceNode
+
+SourceNodes provide a way to abstract over interpolating and/or concatenating
+snippets of generated JavaScript source code, while maintaining the line and
+column information associated between those snippets and the original source
+code. This is useful as the final intermediate representation a compiler might
+use before outputting the generated JS and source map.
+
+#### new SourceNode([line, column, source[, chunk[, name]]])
+
+* `line`: The original line number associated with this source node, or null if
+ it isn't associated with an original line.
+
+* `column`: The original column number associated with this source node, or null
+ if it isn't associated with an original column.
+
+* `source`: The original source's filename; null if no filename is provided.
+
+* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see
+ below.
+
+* `name`: Optional. The original identifier.
+
+```js
+var node = new SourceNode(1, 2, "a.cpp", [
+ new SourceNode(3, 4, "b.cpp", "extern int status;\n"),
+ new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"),
+ new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"),
+]);
+```
+
+#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])
+
+Creates a SourceNode from generated code and a SourceMapConsumer.
+
+* `code`: The generated code
+
+* `sourceMapConsumer` The SourceMap for the generated code
+
+* `relativePath` The optional path that relative sources in `sourceMapConsumer`
+ should be relative to.
+
+```js
+var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8"));
+var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"),
+ consumer);
+```
+
+#### SourceNode.prototype.add(chunk)
+
+Add a chunk of generated JS to this source node.
+
+* `chunk`: A string snippet of generated JS code, another instance of
+ `SourceNode`, or an array where each member is one of those things.
+
+```js
+node.add(" + ");
+node.add(otherNode);
+node.add([leftHandOperandNode, " + ", rightHandOperandNode]);
+```
+
+#### SourceNode.prototype.prepend(chunk)
+
+Prepend a chunk of generated JS to this source node.
+
+* `chunk`: A string snippet of generated JS code, another instance of
+ `SourceNode`, or an array where each member is one of those things.
+
+```js
+node.prepend("/** Build Id: f783haef86324gf **/\n\n");
+```
+
+#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent)
+
+Set the source content for a source file. This will be added to the
+`SourceMap` in the `sourcesContent` field.
+
+* `sourceFile`: The filename of the source file
+
+* `sourceContent`: The content of the source file
+
+```js
+node.setSourceContent("module-one.scm",
+ fs.readFileSync("path/to/module-one.scm"))
+```
+
+#### SourceNode.prototype.walk(fn)
+
+Walk over the tree of JS snippets in this node and its children. The walking
+function is called once for each snippet of JS and is passed that snippet and
+the its original associated source's line/column location.
+
+* `fn`: The traversal function.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.walk(function (code, loc) { console.log("WALK:", code, loc); })
+// WALK: uno { source: 'b.js', line: 3, column: 4, name: null }
+// WALK: dos { source: 'a.js', line: 1, column: 2, name: null }
+// WALK: tres { source: 'a.js', line: 1, column: 2, name: null }
+// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null }
+```
+
+#### SourceNode.prototype.walkSourceContents(fn)
+
+Walk over the tree of SourceNodes. The walking function is called for each
+source file content and is passed the filename and source content.
+
+* `fn`: The traversal function.
+
+```js
+var a = new SourceNode(1, 2, "a.js", "generated from a");
+a.setSourceContent("a.js", "original a");
+var b = new SourceNode(1, 2, "b.js", "generated from b");
+b.setSourceContent("b.js", "original b");
+var c = new SourceNode(1, 2, "c.js", "generated from c");
+c.setSourceContent("c.js", "original c");
+
+var node = new SourceNode(null, null, null, [a, b, c]);
+node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); })
+// WALK: a.js : original a
+// WALK: b.js : original b
+// WALK: c.js : original c
+```
+
+#### SourceNode.prototype.join(sep)
+
+Like `Array.prototype.join` except for SourceNodes. Inserts the separator
+between each of this source node's children.
+
+* `sep`: The separator.
+
+```js
+var lhs = new SourceNode(1, 2, "a.rs", "my_copy");
+var operand = new SourceNode(3, 4, "a.rs", "=");
+var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()");
+
+var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]);
+var joinedNode = node.join(" ");
+```
+
+#### SourceNode.prototype.replaceRight(pattern, replacement)
+
+Call `String.prototype.replace` on the very right-most source snippet. Useful
+for trimming white space from the end of a source node, etc.
+
+* `pattern`: The pattern to replace.
+
+* `replacement`: The thing to replace the pattern with.
+
+```js
+// Trim trailing white space.
+node.replaceRight(/\s*$/, "");
+```
+
+#### SourceNode.prototype.toString()
+
+Return the string representation of this source node. Walks over the tree and
+concatenates all the various snippets together to one string.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.toString()
+// 'unodostresquatro'
+```
+
+#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])
+
+Returns the string representation of this tree of source nodes, plus a
+SourceMapGenerator which contains all the mappings between the generated and
+original sources.
+
+The arguments are the same as those to `new SourceMapGenerator`.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.toStringWithSourceMap({ file: "my-output-file.js" })
+// { code: 'unodostresquatro',
+// map: [object SourceMapGenerator] }
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.debug.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.debug.js
new file mode 100644
index 000000000..b5ab6382a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.debug.js
@@ -0,0 +1,3091 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["sourceMap"] = factory();
+ else
+ root["sourceMap"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+/******/
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;
+ exports.SourceNode = __webpack_require__(10).SourceNode;
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var base64VLQ = __webpack_require__(2);
+ var util = __webpack_require__(4);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var MappingList = __webpack_require__(6).MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null) {
+ source = String(source);
+ if (!this._sources.has(source)) {
+ this._sources.add(source);
+ }
+ }
+
+ if (name != null) {
+ name = String(name);
+ if (!this._names.has(name)) {
+ this._names.add(name);
+ }
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = Object.create(null);
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ // When aOriginal is truthy but has empty values for .line and .column,
+ // it is most likely a programmer error. In this case we throw a very
+ // specific error message to try to guide them the right way.
+ // For example: https://github.com/Polymer/polymer-bundler/pull/519
+ if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
+ throw new Error(
+ 'original.line and original.column are not numbers -- you probably meant to omit ' +
+ 'the original mapping entirely and only map the generated position. If so, pass ' +
+ 'null for the original mapping instead of an object with empty or null values.'
+ );
+ }
+
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var next;
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+ next = ''
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ next += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ next += ',';
+ }
+ }
+
+ next += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ next += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ next += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ next += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ next += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+
+ result += next;
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ var base64 = __webpack_require__(3);
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consecutive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ var supportsNullProto = (function () {
+ var obj = Object.create(null);
+ return !('__proto__' in obj);
+ }());
+
+ function identity (s) {
+ return s;
+ }
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return '$' + aStr;
+ }
+
+ return aStr;
+ }
+ exports.toSetString = supportsNullProto ? identity : toSetString;
+
+ function fromSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return aStr.slice(1);
+ }
+
+ return aStr;
+ }
+ exports.fromSetString = supportsNullProto ? identity : fromSetString;
+
+ function isProtoString(s) {
+ if (!s) {
+ return false;
+ }
+
+ var length = s.length;
+
+ if (length < 9 /* "__proto__".length */) {
+ return false;
+ }
+
+ if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 2) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 4) !== 116 /* 't' */ ||
+ s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
+ s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
+ s.charCodeAt(length - 8) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 9) !== 95 /* '_' */) {
+ return false;
+ }
+
+ for (var i = length - 10; i >= 0; i--) {
+ if (s.charCodeAt(i) !== 36 /* '$' */) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var has = Object.prototype.hasOwnProperty;
+ var hasNativeMap = typeof Map !== "undefined";
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = hasNativeMap ? new Map() : Object.create(null);
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
+ var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ if (hasNativeMap) {
+ this._set.set(aStr, idx);
+ } else {
+ this._set[sStr] = idx;
+ }
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ if (hasNativeMap) {
+ return this._set.has(aStr);
+ } else {
+ var sStr = util.toSetString(aStr);
+ return has.call(this._set, sStr);
+ }
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ if (hasNativeMap) {
+ var idx = this._set.get(aStr);
+ if (idx >= 0) {
+ return idx;
+ }
+ } else {
+ var sStr = util.toSetString(aStr);
+ if (has.call(this._set, sStr)) {
+ return this._set[sStr];
+ }
+ }
+
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var binarySearch = __webpack_require__(8);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var base64VLQ = __webpack_require__(2);
+ var quickSort = __webpack_require__(9).quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ .map(String)
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names.map(String), true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ var util = __webpack_require__(4);
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are accessed by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var remainingLinesIndex = 0;
+ var shiftNextLine = function() {
+ var lineContents = getNextLine();
+ // The last line of a file might not have a newline.
+ var newLine = getNextLine() || "";
+ return lineContents + newLine;
+
+ function getNextLine() {
+ return remainingLinesIndex < remainingLines.length ?
+ remainingLines[remainingLinesIndex++] : undefined;
+ }
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[remainingLinesIndex];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[remainingLinesIndex];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLinesIndex < remainingLines.length) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.splice(remainingLinesIndex).join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+
+
+/***/ })
+/******/ ])
+});
+;
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBlNDczOGZjNzJhN2IyMzAzOTg4OSIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTBDLFNBQVM7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDL1pBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUEyRDtBQUMzRCxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7Ozs7Ozs7QUMzSUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsb0JBQW1CO0FBQ25CLHFCQUFvQjs7QUFFcEIsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsaUJBQWdCO0FBQ2hCLGtCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNsRUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNoYUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXNDLFNBQVM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzlFQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxvQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLG1CQUFtQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE2QixNQUFNO0FBQ25DO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXNEO0FBQ3REOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBLElBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUMsc0JBQXFCLCtDQUErQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBLHNCQUFxQiw0QkFBNEI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDempDQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQzlHQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsTUFBTTtBQUNqQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2pIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsU0FBUztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBK0MsU0FBUztBQUN4RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSw2Q0FBNEMsY0FBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBLFlBQVc7QUFDWDtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBLElBQUc7O0FBRUgsV0FBVTtBQUNWOztBQUVBIiwiZmlsZSI6InNvdXJjZS1tYXAuZGVidWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJzb3VyY2VNYXBcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGU0NzM4ZmM3MmE3YjIzMDM5ODg5IiwiLypcbiAqIENvcHlyaWdodCAyMDA5LTIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLnR4dCBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbmV4cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyJykuU291cmNlTWFwQ29uc3VtZXI7XG5leHBvcnRzLlNvdXJjZU5vZGUgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2Utbm9kZScpLlNvdXJjZU5vZGU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NvdXJjZS1tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LXZscS5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBpbnRUb0NoYXJNYXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycuc3BsaXQoJycpO1xuXG4vKipcbiAqIEVuY29kZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBvZiAwIHRvIDYzIHRvIGEgc2luZ2xlIGJhc2UgNjQgZGlnaXQuXG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gKG51bWJlcikge1xuICBpZiAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDwgaW50VG9DaGFyTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBpbnRUb0NoYXJNYXBbbnVtYmVyXTtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiArIG51bWJlcik7XG59O1xuXG4vKipcbiAqIERlY29kZSBhIHNpbmdsZSBiYXNlIDY0IGNoYXJhY3RlciBjb2RlIGRpZ2l0IHRvIGFuIGludGVnZXIuIFJldHVybnMgLTEgb25cbiAqIGZhaWx1cmUuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGNoYXJDb2RlKSB7XG4gIHZhciBiaWdBID0gNjU7ICAgICAvLyAnQSdcbiAgdmFyIGJpZ1ogPSA5MDsgICAgIC8vICdaJ1xuXG4gIHZhciBsaXR0bGVBID0gOTc7ICAvLyAnYSdcbiAgdmFyIGxpdHRsZVogPSAxMjI7IC8vICd6J1xuXG4gIHZhciB6ZXJvID0gNDg7ICAgICAvLyAnMCdcbiAgdmFyIG5pbmUgPSA1NzsgICAgIC8vICc5J1xuXG4gIHZhciBwbHVzID0gNDM7ICAgICAvLyAnKydcbiAgdmFyIHNsYXNoID0gNDc7ICAgIC8vICcvJ1xuXG4gIHZhciBsaXR0bGVPZmZzZXQgPSAyNjtcbiAgdmFyIG51bWJlck9mZnNldCA9IDUyO1xuXG4gIC8vIDAgLSAyNTogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcbiAgaWYgKGJpZ0EgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gYmlnWikge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSBiaWdBKTtcbiAgfVxuXG4gIC8vIDI2IC0gNTE6IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XG4gIGlmIChsaXR0bGVBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGxpdHRsZVopIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gbGl0dGxlQSArIGxpdHRsZU9mZnNldCk7XG4gIH1cblxuICAvLyA1MiAtIDYxOiAwMTIzNDU2Nzg5XG4gIGlmICh6ZXJvIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IG5pbmUpIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gemVybyArIG51bWJlck9mZnNldCk7XG4gIH1cblxuICAvLyA2MjogK1xuICBpZiAoY2hhckNvZGUgPT0gcGx1cykge1xuICAgIHJldHVybiA2MjtcbiAgfVxuXG4gIC8vIDYzOiAvXG4gIGlmIChjaGFyQ29kZSA9PSBzbGFzaCkge1xuICAgIHJldHVybiA2MztcbiAgfVxuXG4gIC8vIEludmFsaWQgYmFzZTY0IGRpZ2l0LlxuICByZXR1cm4gLTE7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIHBhcmFtZXRlci9vcHRpb25zXG4gKiBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBhcmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgZ2V0dGluZy5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgQW4gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nXG4gKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuXG4gKiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRWYWx1ZSkge1xuICBpZiAoYU5hbWUgaW4gYUFyZ3MpIHtcbiAgICByZXR1cm4gYUFyZ3NbYU5hbWVdO1xuICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gYURlZmF1bHRWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFOYW1lICsgJ1wiIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuJyk7XG4gIH1cbn1cbmV4cG9ydHMuZ2V0QXJnID0gZ2V0QXJnO1xuXG52YXIgdXJsUmVnZXhwID0gL14oPzooW1xcdytcXC0uXSspOik/XFwvXFwvKD86KFxcdys6XFx3KylAKT8oW1xcdy5dKikoPzo6KFxcZCspKT8oXFxTKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgISFhUGF0aC5tYXRjaCh1cmxSZWdleHApO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCA9IGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkO1xuXG5mdW5jdGlvbiBzdHJjbXAoYVN0cjEsIGFTdHIyKSB7XG4gIGlmIChhU3RyMSA9PT0gYVN0cjIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXApIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlxcKVxcXVxcfScvLCAnJykpO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZU1hcC5zZWN0aW9ucyAhPSBudWxsXG4gICAgPyBuZXcgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcClcbiAgICA6IG5ldyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcCk7XG59XG5cblNvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPSBmdW5jdGlvbihhU291cmNlTWFwKSB7XG4gIHJldHVybiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcCk7XG59XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vLyBgX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kIGBfX29yaWdpbmFsTWFwcGluZ3NgIGFyZSBhcnJheXMgdGhhdCBob2xkIHRoZVxuLy8gcGFyc2VkIG1hcHBpbmcgY29vcmRpbmF0ZXMgZnJvbSB0aGUgc291cmNlIG1hcCdzIFwibWFwcGluZ3NcIiBhdHRyaWJ1dGUuIFRoZXlcbi8vIGFyZSBsYXppbHkgaW5zdGFudGlhdGVkLCBhY2Nlc3NlZCB2aWEgdGhlIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBnZXR0ZXJzIHJlc3BlY3RpdmVseSwgYW5kIHdlIG9ubHkgcGFyc2UgdGhlIG1hcHBpbmdzXG4vLyBhbmQgY3JlYXRlIHRoZXNlIGFycmF5cyBvbmNlIHF1ZXJpZWQgZm9yIGEgc291cmNlIGxvY2F0aW9uLiBXZSBqdW1wIHRocm91Z2hcbi8vIHRoZXNlIGhvb3BzIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG1hbnkgdGhvdXNhbmRzIG9mIG1hcHBpbmdzLCBhbmQgcGFyc2luZ1xuLy8gdGhlbSBpcyBleHBlbnNpdmUsIHNvIHdlIG9ubHkgd2FudCB0byBkbyBpdCBpZiB3ZSBtdXN0LlxuLy9cbi8vIEVhY2ggb2JqZWN0IGluIHRoZSBhcnJheXMgaXMgb2YgdGhlIGZvcm06XG4vL1xuLy8gICAgIHtcbi8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBnZW5lcmF0ZWRDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIHNvdXJjZTogVGhlIHBhdGggdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoYXQgZ2VuZXJhdGVkIHRoaXNcbi8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSxcbi8vICAgICAgIG9yaWdpbmFsTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgc3ltYm9sIHdoaWNoIGdlbmVyYXRlZCB0aGlzIGNodW5rIG9mXG4vLyAgICAgICAgICAgICBjb2RlLlxuLy8gICAgIH1cbi8vXG4vLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5lYCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlXG4vLyBgbnVsbGAuXG4vL1xuLy8gYF9nZW5lcmF0ZWRNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucy5cbi8vXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy5cblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19nZW5lcmF0ZWRNYXBwaW5ncycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MpIHtcbiAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX29yaWdpbmFsTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19vcmlnaW5hbE1hcHBpbmdzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmIHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4oc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBPcHRpb25hbC4gdGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IoYUFyZ3MpIHtcbiAgICB2YXIgbGluZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpO1xuXG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBleGFjdCBtYXRjaCwgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nXG4gICAgLy8gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgbWFwcGluZyBsZXNzIHRoYW4gdGhlIG5lZWRsZS4gQnlcbiAgICAvLyBzZXR0aW5nIG5lZWRsZS5vcmlnaW5hbENvbHVtbiB0byAwLCB3ZSB0aHVzIGZpbmQgdGhlIGxhc3QgbWFwcGluZyBmb3JcbiAgICAvLyB0aGUgZ2l2ZW4gbGluZSwgcHJvdmlkZWQgc3VjaCBhIG1hcHBpbmcgZXhpc3RzLlxuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBzb3VyY2U6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyksXG4gICAgICBvcmlnaW5hbExpbmU6IGxpbmUsXG4gICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nLCAwKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIG5lZWRsZS5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgbmVlZGxlLnNvdXJjZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMobmVlZGxlLnNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihuZWVkbGUuc291cmNlKTtcblxuICAgIHZhciBtYXBwaW5ncyA9IFtdO1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcobmVlZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAoYUFyZ3MuY29sdW1uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2UgZm91bmQuIFNpbmNlXG4gICAgICAgIC8vIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgLy8gdGhlIGxpbmUgd2UgZm91bmQuXG4gICAgICAgIHdoaWxlIChtYXBwaW5nICYmIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBvcmlnaW5hbExpbmUpIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgb3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2Ugd2VyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAvLyBTaW5jZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJlxuICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IGxpbmUgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPT0gb3JpZ2luYWxDb2x1bW4pIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdzO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaCB3ZSBjYW5cbiAqIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgZmlsZSBwb3NpdGlvbnMgYnkgZ2l2aW5nIGl0IGEgZmlsZVxuICogcG9zaXRpb24gaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKlxuICogVGhlIG9ubHkgcGFyYW1ldGVyIGlzIHRoZSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yXG4gKiBhbHJlYWR5IHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNvdXJjZSBtYXBzIGhhdmUgdGhlXG4gKiBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAqXG4gKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqICAgLSBzb3VyY2VzOiBBbiBhcnJheSBvZiBVUkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbmFtZXM6IEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcnJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogICAtIHNvdXJjZVJvb3Q6IE9wdGlvbmFsLiBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiAgIC0gc291cmNlc0NvbnRlbnQ6IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogICAtIG1hcHBpbmdzOiBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICpcbiAqIEhlcmUgaXMgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF06XG4gKlxuICogICAgIHtcbiAqICAgICAgIHZlcnNpb24gOiAzLFxuICogICAgICAgZmlsZTogXCJvdXQuanNcIixcbiAqICAgICAgIHNvdXJjZVJvb3QgOiBcIlwiLFxuICogICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICogICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICBtYXBwaW5nczogXCJBQSxBQjs7QUJDREU7XCJcbiAqICAgICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNvdXJjZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzJyk7XG4gIC8vIFNhc3MgMy4zIGxlYXZlcyBvdXQgdGhlICduYW1lcycgYXJyYXksIHNvIHdlIGRldmlhdGUgZnJvbSB0aGUgc3BlYyAod2hpY2hcbiAgLy8gcmVxdWlyZXMgdGhlIGFycmF5KSB0byBwbGF5IG5pY2UgaGVyZS5cbiAgdmFyIG5hbWVzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbmFtZXMnLCBbXSk7XG4gIHZhciBzb3VyY2VSb290ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB2YXIgc291cmNlc0NvbnRlbnQgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzQ29udGVudCcsIG51bGwpO1xuICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5ncycpO1xuICB2YXIgZmlsZSA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ2ZpbGUnLCBudWxsKTtcblxuICAvLyBPbmNlIGFnYWluLCBTYXNzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYW5kIHN1cHBsaWVzIHRoZSB2ZXJzaW9uIGFzIGFcbiAgLy8gc3RyaW5nIHJhdGhlciB0aGFuIGEgbnVtYmVyLCBzbyB3ZSB1c2UgbG9vc2UgZXF1YWxpdHkgY2hlY2tpbmcgaGVyZS5cbiAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICB9XG5cbiAgc291cmNlcyA9IHNvdXJjZXNcbiAgICAubWFwKFN0cmluZylcbiAgICAvLyBTb21lIHNvdXJjZSBtYXBzIHByb2R1Y2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIGxpa2UgXCIuL2Zvby5qc1wiIGluc3RlYWQgb2ZcbiAgICAvLyBcImZvby5qc1wiLiAgTm9ybWFsaXplIHRoZXNlIGZpcnN0IHNvIHRoYXQgZnV0dXJlIGNvbXBhcmlzb25zIHdpbGwgc3VjY2VlZC5cbiAgICAvLyBTZWUgYnVnemlsLmxhLzEwOTA3NjguXG4gICAgLm1hcCh1dGlsLm5vcm1hbGl6ZSlcbiAgICAvLyBBbHdheXMgZW5zdXJlIHRoYXQgYWJzb2x1dGUgc291cmNlcyBhcmUgaW50ZXJuYWxseSBzdG9yZWQgcmVsYXRpdmUgdG9cbiAgICAvLyB0aGUgc291cmNlIHJvb3QsIGlmIHRoZSBzb3VyY2Ugcm9vdCBpcyBhYnNvbHV0ZS4gTm90IGRvaW5nIHRoaXMgd291bGRcbiAgICAvLyBiZSBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgd2hlbiB0aGUgc291cmNlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlXG4gICAgLy8gc291cmNlICh2YWxpZCwgYnV0IHdoeT8/KS4gU2VlIGdpdGh1YiBpc3N1ZSAjMTk5IGFuZCBidWd6aWwubGEvMTE4ODk4Mi5cbiAgICAubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2VSb290ICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2VSb290KSAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlKVxuICAgICAgICA/IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlKVxuICAgICAgICA6IHNvdXJjZTtcbiAgICB9KTtcblxuICAvLyBQYXNzIGB0cnVlYCBiZWxvdyB0byBhbGxvdyBkdXBsaWNhdGUgbmFtZXMgYW5kIHNvdXJjZXMuIFdoaWxlIHNvdXJjZSBtYXBzXG4gIC8vIGFyZSBpbnRlbmRlZCB0byBiZSBjb21wcmVzc2VkIGFuZCBkZWR1cGxpY2F0ZWQsIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyXG4gIC8vIHNvbWV0aW1lcyBnZW5lcmF0ZXMgc291cmNlIG1hcHMgd2l0aCBkdXBsaWNhdGVzIGluIHRoZW0uIFNlZSBHaXRodWIgaXNzdWVcbiAgLy8gIzcyIGFuZCBidWd6aWwubGEvODg5NDkyLlxuICB0aGlzLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShuYW1lcy5tYXAoU3RyaW5nKSwgdHJ1ZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoc291cmNlcywgdHJ1ZSk7XG5cbiAgdGhpcy5zb3VyY2VSb290ID0gc291cmNlUm9vdDtcbiAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50O1xuICB0aGlzLl9tYXBwaW5ncyA9IG1hcHBpbmdzO1xuICB0aGlzLmZpbGUgPSBmaWxlO1xufVxuXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQ3JlYXRlIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBmcm9tIGEgU291cmNlTWFwR2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSBTb3VyY2VNYXBHZW5lcmF0b3IgYVNvdXJjZU1hcFxuICogICAgICAgIFRoZSBzb3VyY2UgbWFwIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbiAqIEByZXR1cm5zIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwKSB7XG4gICAgdmFyIHNtYyA9IE9iamVjdC5jcmVhdGUoQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuXG4gICAgdmFyIG5hbWVzID0gc21jLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9uYW1lcy50b0FycmF5KCksIHRydWUpO1xuICAgIHZhciBzb3VyY2VzID0gc21jLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX3NvdXJjZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICBzbWMuc291cmNlUm9vdCA9IGFTb3VyY2VNYXAuX3NvdXJjZVJvb3Q7XG4gICAgc21jLnNvdXJjZXNDb250ZW50ID0gYVNvdXJjZU1hcC5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChzbWMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21jLnNvdXJjZVJvb3QpO1xuICAgIHNtYy5maWxlID0gYVNvdXJjZU1hcC5fZmlsZTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlUm9vdCAhPSBudWxsID8gdXRpbC5qb2luKHRoaXMuc291cmNlUm9vdCwgcykgOiBzO1xuICAgIH0sIHRoaXMpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhcbiAgICAgIG5lZWRsZSxcbiAgICAgIHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLFxuICAgICAgXCJnZW5lcmF0ZWRMaW5lXCIsXG4gICAgICBcImdlbmVyYXRlZENvbHVtblwiLFxuICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCxcbiAgICAgIHV0aWwuZ2V0QXJnKGFBcmdzLCAnYmlhcycsIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EKVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnc291cmNlJywgbnVsbCk7XG4gICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmF0KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4odGhpcy5zb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICduYW1lJywgbnVsbCk7XG4gICAgICAgIGlmIChuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmF0KG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbmFtZTogbnVsbFxuICAgIH07XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICBmdW5jdGlvbiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudC5sZW5ndGggPj0gdGhpcy5fc291cmNlcy5zaXplKCkgJiZcbiAgICAgICF0aGlzLnNvdXJjZXNDb250ZW50LnNvbWUoZnVuY3Rpb24gKHNjKSB7IHJldHVybiBzYyA9PSBudWxsOyB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBhU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIGFTb3VyY2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhhU291cmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGFTb3VyY2UpXTtcbiAgICB9XG5cbiAgICB2YXIgdXJsO1xuICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbFxuICAgICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkge1xuICAgICAgLy8gWFhYOiBmaWxlOi8vIFVSSXMgYW5kIGFic29sdXRlIHBhdGhzIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBmb3JcbiAgICAgIC8vIG1hbnkgdXNlcnMuIFdlIGNhbiBoZWxwIHRoZW0gb3V0IHdoZW4gdGhleSBleHBlY3QgZmlsZTovLyBVUklzIHRvXG4gICAgICAvLyBiZWhhdmUgbGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBTZWVcbiAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTU5Ny5cbiAgICAgIHZhciBmaWxlVXJpQWJzUGF0aCA9IGFTb3VyY2UucmVwbGFjZSgvXmZpbGU6XFwvXFwvLywgXCJcIik7XG4gICAgICBpZiAodXJsLnNjaGVtZSA9PSBcImZpbGVcIlxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKGZpbGVVcmlBYnNQYXRoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoZmlsZVVyaUFic1BhdGgpXVxuICAgICAgfVxuXG4gICAgICBpZiAoKCF1cmwucGF0aCB8fCB1cmwucGF0aCA9PSBcIi9cIilcbiAgICAgICAgICAmJiB0aGlzLl9zb3VyY2VzLmhhcyhcIi9cIiArIGFTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIGFTb3VyY2UpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVjdXJzaXZlbHkgZnJvbVxuICAgIC8vIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvci4gSW4gdGhhdCBjYXNlLCB3ZVxuICAgIC8vIGRvbid0IHdhbnQgdG8gdGhyb3cgaWYgd2UgY2FuJ3QgZmluZCB0aGUgc291cmNlIC0gd2UganVzdCB3YW50IHRvXG4gICAgLy8gcmV0dXJuIG51bGwsIHNvIHdlIHByb3ZpZGUgYSBmbGFnIHRvIGV4aXQgZ3JhY2VmdWxseS5cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgIH07XG4gICAgfVxuICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgb3JpZ2luYWxMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IG5lZWRsZS5zb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG5leHBvcnRzLkJhc2ljU291cmNlTWFwQ29uc3VtZXIgPSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEFuIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2hcbiAqIHdlIGNhbiBxdWVyeSBmb3IgaW5mb3JtYXRpb24uIEl0IGRpZmZlcnMgZnJvbSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluXG4gKiB0aGF0IGl0IHRha2VzIFwiaW5kZXhlZFwiIHNvdXJjZSBtYXBzIChpLmUuIG9uZXMgd2l0aCBhIFwic2VjdGlvbnNcIiBmaWVsZCkgYXNcbiAqIGlucHV0LlxuICpcbiAqIFRoZSBvbmx5IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjaGVhZGluZz1oLjUzNWVzM3hlcHJndFxuICovXG5mdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSlcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgLy8gRmluZCB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24gd2UncmUgdHJ5aW5nIHRvIG1hcFxuICAgIC8vIHRvIGFuIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgIHZhciBzZWN0aW9uSW5kZXggPSBiaW5hcnlTZWFyY2guc2VhcmNoKG5lZWRsZSwgdGhpcy5fc2VjdGlvbnMsXG4gICAgICBmdW5jdGlvbihuZWVkbGUsIHNlY3Rpb24pIHtcbiAgICAgICAgdmFyIGNtcCA9IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC0gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgaWYgKGNtcCkge1xuICAgICAgICAgIHJldHVybiBjbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbik7XG4gICAgICB9KTtcbiAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICBuYW1lOiBudWxsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzZWN0aW9uLmNvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgbGluZTogbmVlZGxlLmdlbmVyYXRlZExpbmUgLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgY29sdW1uOiBuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgIDogMCksXG4gICAgICBiaWFzOiBhQXJncy5iaWFzXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzLmNvbnN1bWVyLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICB2YXIgY29udGVudCA9IHNlY3Rpb24uY29uc3VtZXIuc291cmNlQ29udGVudEZvcihhU291cmNlLCB0cnVlKTtcbiAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgLy8gT25seSBjb25zaWRlciB0aGlzIHNlY3Rpb24gaWYgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaXMgaW4gdGhlIGxpc3Qgb2ZcbiAgICAgIC8vIHNvdXJjZXMgb2YgdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlcy5pbmRleE9mKHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJykpID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBnZW5lcmF0ZWRQb3NpdGlvbiA9IHNlY3Rpb24uY29uc3VtZXIuZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpO1xuICAgICAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uKSB7XG4gICAgICAgIHZhciByZXQgPSB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkUG9zaXRpb24ubGluZSArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkUG9zaXRpb24uY29sdW1uICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lXG4gICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICAgOiAwKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsXG4gICAgfTtcbiAgfTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcbiAgICAgIHZhciBzZWN0aW9uTWFwcGluZ3MgPSBzZWN0aW9uLmNvbnN1bWVyLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbk1hcHBpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gc2VjdGlvbk1hcHBpbmdzW2pdO1xuXG4gICAgICAgIHZhciBzb3VyY2UgPSBzZWN0aW9uLmNvbnN1bWVyLl9zb3VyY2VzLmF0KG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbihzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgICAgdmFyIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF07XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.js
new file mode 100644
index 000000000..4e630e294
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.js
@@ -0,0 +1,3090 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["sourceMap"] = factory();
+ else
+ root["sourceMap"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;
+ exports.SourceNode = __webpack_require__(10).SourceNode;
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var base64VLQ = __webpack_require__(2);
+ var util = __webpack_require__(4);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var MappingList = __webpack_require__(6).MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null) {
+ source = String(source);
+ if (!this._sources.has(source)) {
+ this._sources.add(source);
+ }
+ }
+
+ if (name != null) {
+ name = String(name);
+ if (!this._names.has(name)) {
+ this._names.add(name);
+ }
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = Object.create(null);
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ // When aOriginal is truthy but has empty values for .line and .column,
+ // it is most likely a programmer error. In this case we throw a very
+ // specific error message to try to guide them the right way.
+ // For example: https://github.com/Polymer/polymer-bundler/pull/519
+ if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
+ throw new Error(
+ 'original.line and original.column are not numbers -- you probably meant to omit ' +
+ 'the original mapping entirely and only map the generated position. If so, pass ' +
+ 'null for the original mapping instead of an object with empty or null values.'
+ );
+ }
+
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var next;
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+ next = ''
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ next += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ next += ',';
+ }
+ }
+
+ next += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ next += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ next += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ next += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ next += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+
+ result += next;
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ var base64 = __webpack_require__(3);
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consecutive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ var supportsNullProto = (function () {
+ var obj = Object.create(null);
+ return !('__proto__' in obj);
+ }());
+
+ function identity (s) {
+ return s;
+ }
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return '$' + aStr;
+ }
+
+ return aStr;
+ }
+ exports.toSetString = supportsNullProto ? identity : toSetString;
+
+ function fromSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return aStr.slice(1);
+ }
+
+ return aStr;
+ }
+ exports.fromSetString = supportsNullProto ? identity : fromSetString;
+
+ function isProtoString(s) {
+ if (!s) {
+ return false;
+ }
+
+ var length = s.length;
+
+ if (length < 9 /* "__proto__".length */) {
+ return false;
+ }
+
+ if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 2) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 4) !== 116 /* 't' */ ||
+ s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
+ s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
+ s.charCodeAt(length - 8) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 9) !== 95 /* '_' */) {
+ return false;
+ }
+
+ for (var i = length - 10; i >= 0; i--) {
+ if (s.charCodeAt(i) !== 36 /* '$' */) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var has = Object.prototype.hasOwnProperty;
+ var hasNativeMap = typeof Map !== "undefined";
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = hasNativeMap ? new Map() : Object.create(null);
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
+ var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ if (hasNativeMap) {
+ this._set.set(aStr, idx);
+ } else {
+ this._set[sStr] = idx;
+ }
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ if (hasNativeMap) {
+ return this._set.has(aStr);
+ } else {
+ var sStr = util.toSetString(aStr);
+ return has.call(this._set, sStr);
+ }
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ if (hasNativeMap) {
+ var idx = this._set.get(aStr);
+ if (idx >= 0) {
+ return idx;
+ }
+ } else {
+ var sStr = util.toSetString(aStr);
+ if (has.call(this._set, sStr)) {
+ return this._set[sStr];
+ }
+ }
+
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var binarySearch = __webpack_require__(8);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var base64VLQ = __webpack_require__(2);
+ var quickSort = __webpack_require__(9).quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ .map(String)
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names.map(String), true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ var util = __webpack_require__(4);
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are accessed by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var remainingLinesIndex = 0;
+ var shiftNextLine = function() {
+ var lineContents = getNextLine();
+ // The last line of a file might not have a newline.
+ var newLine = getNextLine() || "";
+ return lineContents + newLine;
+
+ function getNextLine() {
+ return remainingLinesIndex < remainingLines.length ?
+ remainingLines[remainingLinesIndex++] : undefined;
+ }
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[remainingLinesIndex];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[remainingLinesIndex];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLinesIndex < remainingLines.length) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.splice(remainingLinesIndex).join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+
+
+/***/ })
+/******/ ])
+});
+;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.min.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.min.js
new file mode 100644
index 000000000..f2a46bd02
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/dist/source-map.min.js
@@ -0,0 +1,2 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&r.setSourceContent(n,t)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t,s=0,a=1,u=0,l=0,c=0,g=0,p="",h=this._mappings.toArray(),f=0,d=h.length;f0){if(!i.compareByGeneratedPositionsInflated(n,h[f-1]))continue;e+=","}e+=o.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(t=this._sources.indexOf(n.source),e+=o.encode(t-g),g=t,e+=o.encode(n.originalLine-1-l),l=n.originalLine-1,e+=o.encode(n.originalColumn-u),u=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=o.encode(r-c),c=r)),p+=e}return p},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a<
=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(_))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return e}function l(e){return g(e)?"$"+e:e}function c(e){return g(e)?e.slice(1):e}function g(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,n,r){var t=e.source-n.source;return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:e.name-n.name))))}function h(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=e.source-n.source,0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:e.name-n.name))))}function f(e,n){return e===n?0:e>n?1:-1}function d(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=f(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:f(e.name,n.name)))))}n.getArg=r;var m=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,_=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(m)},n.relative=a;var v=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=v?u:l,n.fromSetString=v?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d},function(e,n,r){function t(){this._array=[],this._set=s?new Map:Object.create(null)}var o=r(4),i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;o=0)return n}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e){var n=e;return"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=n.sections?new s(n):new o(n)}function o(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),t=a.getArg(n,"sources"),o=a.getArg(n,"names",[]),i=a.getArg(n,"sourceRoot",null),s=a.getArg(n,"sourcesContent",null),u=a.getArg(n,"mappings"),c=a.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);t=t.map(String).map(a.normalize).map(function(e){return i&&a.isAbsolute(i)&&a.isAbsolute(e)?a.relative(i,e):e}),this._names=l.fromArray(o.map(String),!0),this._sources=l.fromArray(t,!0),this.sourceRoot=i,this.sourcesContent=s,this._mappings=u,this.file=c}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),o=a.getArg(n,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new l,this._names=new l;var i={line:-1,column:0};this._sections=o.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var n=a.getArg(e,"offset"),r=a.getArg(n,"line"),o=a.getArg(n,"column");if(r=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.fromSourceMap=function(e){var n=Object.create(o.prototype),r=n._names=l.fromArray(e._names.toArray(),!0),t=n._sources=l.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file;for(var s=e._mappings.toArray().slice(),u=n.__generatedMappings=[],c=n.__originalMappings=[],p=0,h=s.length;p1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),S.push(r),"number"==typeof r.originalLine&&A.push(r)}g(S,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,g(A,a.compareByOriginalPositions),this.__originalMappings=A},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=a.join(this.sourceRoot,i)));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=a.urlParse(this.sourceRoot))){var t=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),!this._sources.has(n))return{line:null,column:null,lastColumn:null};n=this._sources.indexOf(n);var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(i=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r0){for(n=[],r=0;r 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t/**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\tSourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var next;\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t next = ''\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t next += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t next += ',';\n\t }\n\t }\n\t\n\t next += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t next += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t next += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t next += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t next += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t\n\t result += next;\n\t }\n\t\n\t return result;\n\t };\n\t\n\tSourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t/**\n\t * Externalize the source map.\n\t */\n\tSourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t/**\n\t * Render the source map being generated to a string.\n\t */\n\tSourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\texports.SourceMapGenerator = SourceMapGenerator;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t\n\tvar base64 = __webpack_require__(3);\n\t\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\t\n\tvar VLQ_BASE_SHIFT = 5;\n\t\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\t\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\t\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t};\n\t\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\t\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\t\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\t\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\t\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\t\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\t\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n\t};\n\t\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\t\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\t\n\tfunction identity (s) {\n\t return s;\n\t}\n\t\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\t\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\t\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\t\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\t\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\t\n\t var length = s.length;\n\t\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\t\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\t\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t}\n\t\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar hasNativeMap = typeof Map !== \"undefined\";\n\t\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = hasNativeMap ? new Map() : Object.create(null);\n\t}\n\t\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\t\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n\t};\n\t\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n\t var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t if (hasNativeMap) {\n\t this._set.set(aStr, idx);\n\t } else {\n\t this._set[sStr] = idx;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t if (hasNativeMap) {\n\t return this._set.has(aStr);\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t }\n\t};\n\t\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t if (hasNativeMap) {\n\t var idx = this._set.get(aStr);\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\t } else {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t }\n\t\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\t\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\t\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\t\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\t\n\t/**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\tfunction generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t}\n\t\n\t/**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\tfunction MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t}\n\t\n\t/**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\tMappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t/**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\tMappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\tMappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t};\n\t\n\texports.MappingList = MappingList;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar util = __webpack_require__(4);\n\tvar binarySearch = __webpack_require__(8);\n\tvar ArraySet = __webpack_require__(5).ArraySet;\n\tvar base64VLQ = __webpack_require__(2);\n\tvar quickSort = __webpack_require__(9).quickSort;\n\t\n\tfunction SourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap)\n\t : new BasicSourceMapConsumer(sourceMap);\n\t}\n\t\n\tSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n\t}\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tSourceMapConsumer.prototype._version = 3;\n\t\n\t// `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t// are lazily instantiated, accessed via the `_generatedMappings` and\n\t// `_originalMappings` getters respectively, and we only parse the mappings\n\t// and create these arrays once queried for a source location. We jump through\n\t// these hoops because there can be many thousands of mappings, and parsing\n\t// them is expensive, so we only want to do it if we must.\n\t//\n\t// Each object in the arrays is of the form:\n\t//\n\t// {\n\t// generatedLine: The line number in the generated code,\n\t// generatedColumn: The column number in the generated code,\n\t// source: The path to the original source file that generated this\n\t// chunk of code,\n\t// originalLine: The line number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// originalColumn: The column number in the original source that\n\t// corresponds to this chunk of generated code,\n\t// name: The name of the original symbol which generated this chunk of\n\t// code.\n\t// }\n\t//\n\t// All properties except for `generatedLine` and `generatedColumn` can be\n\t// `null`.\n\t//\n\t// `_generatedMappings` is ordered by the generated positions.\n\t//\n\t// `_originalMappings` is ordered by the original positions.\n\t\n\tSourceMapConsumer.prototype.__generatedMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype.__originalMappings = null;\n\tObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t});\n\t\n\tSourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\tSourceMapConsumer.GENERATED_ORDER = 1;\n\tSourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\tSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\tSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\tSourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t if (source != null && sourceRoot != null) {\n\t source = util.join(sourceRoot, source);\n\t }\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t/**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: Optional. the column number in the original source.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tSourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t if (this.sourceRoot != null) {\n\t needle.source = util.relative(this.sourceRoot, needle.source);\n\t }\n\t if (!this._sources.has(needle.source)) {\n\t return [];\n\t }\n\t needle.source = this._sources.indexOf(needle.source);\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\texports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The only parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this.file = file;\n\t}\n\t\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._sources.toArray().map(function (s) {\n\t return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n\t }, this);\n\t }\n\t});\n\t\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t if (this.sourceRoot != null) {\n\t source = util.join(this.sourceRoot, source);\n\t }\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t if (this.sourceRoot != null) {\n\t aSource = util.relative(this.sourceRoot, aSource);\n\t }\n\t\n\t if (this._sources.has(aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(aSource)];\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t if (this.sourceRoot != null) {\n\t source = util.relative(this.sourceRoot, source);\n\t }\n\t if (!this._sources.has(source)) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t source = this._sources.indexOf(source);\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The only parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n\t }\n\t });\n\t}\n\t\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\t\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t if (section.consumer.sourceRoot !== null) {\n\t source = util.join(section.consumer.sourceRoot, source);\n\t }\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\t\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\t\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\t\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\t\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t\n\tvar SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\tvar util = __webpack_require__(4);\n\t\n\t// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t// operating systems these days (capturing the result).\n\tvar REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t// Newline character code for charCodeAt() comparisons\n\tvar NEWLINE_CODE = 10;\n\t\n\t// Private symbol for identifying `SourceNode`s when multiple versions of\n\t// the source-map library are loaded. This MUST NOT CHANGE across\n\t// versions!\n\tvar isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t/**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\tfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t}\n\t\n\t/**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\tSourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are accessed by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var remainingLinesIndex = 0;\n\t var shiftNextLine = function() {\n\t var lineContents = getNextLine();\n\t // The last line of a file might not have a newline.\n\t var newLine = getNextLine() || \"\";\n\t return lineContents + newLine;\n\t\n\t function getNextLine() {\n\t return remainingLinesIndex < remainingLines.length ?\n\t remainingLines[remainingLinesIndex++] : undefined;\n\t }\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[remainingLinesIndex];\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[remainingLinesIndex];\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLinesIndex < remainingLines.length) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t/**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\tSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\tSourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\tSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t};\n\t\n\t/**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\tSourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t/**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\tSourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t/**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\tSourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t};\n\t\n\t/**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\tSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t};\n\t\n\texports.SourceNode = SourceNode;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// source-map.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 42c329f865e32e011afb","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source-map.js\n// module id = 0\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-generator.js\n// module id = 1\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64-vlq.js\n// module id = 2\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/base64.js\n// module id = 3\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/util.js\n// module id = 4\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/array-set.js\n// module id = 5\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/mapping-list.js\n// module id = 6\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-map-consumer.js\n// module id = 7\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/binary-search.js\n// module id = 8\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/quick-sort.js\n// module id = 9\n// module chunks = 0","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/source-node.js\n// module id = 10\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/array-set.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/array-set.js
new file mode 100644
index 000000000..fbd5c81ca
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/array-set.js
@@ -0,0 +1,121 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var util = require('./util');
+var has = Object.prototype.hasOwnProperty;
+var hasNativeMap = typeof Map !== "undefined";
+
+/**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+function ArraySet() {
+ this._array = [];
+ this._set = hasNativeMap ? new Map() : Object.create(null);
+}
+
+/**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+};
+
+/**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ArraySet.prototype.size = function ArraySet_size() {
+ return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
+};
+
+/**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
+ var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ if (hasNativeMap) {
+ this._set.set(aStr, idx);
+ } else {
+ this._set[sStr] = idx;
+ }
+ }
+};
+
+/**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ArraySet.prototype.has = function ArraySet_has(aStr) {
+ if (hasNativeMap) {
+ return this._set.has(aStr);
+ } else {
+ var sStr = util.toSetString(aStr);
+ return has.call(this._set, sStr);
+ }
+};
+
+/**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ if (hasNativeMap) {
+ var idx = this._set.get(aStr);
+ if (idx >= 0) {
+ return idx;
+ }
+ } else {
+ var sStr = util.toSetString(aStr);
+ if (has.call(this._set, sStr)) {
+ return this._set[sStr];
+ }
+ }
+
+ throw new Error('"' + aStr + '" is not in the set.');
+};
+
+/**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+};
+
+/**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+};
+
+exports.ArraySet = ArraySet;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64-vlq.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64-vlq.js
new file mode 100644
index 000000000..612b40401
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64-vlq.js
@@ -0,0 +1,140 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+var base64 = require('./base64');
+
+// A single base 64 digit can contain 6 bits of data. For the base 64 variable
+// length quantities we use in the source map spec, the first bit is the sign,
+// the next four bits are the actual value, and the 6th bit is the
+// continuation bit. The continuation bit tells us whether there are more
+// digits in this value following this digit.
+//
+// Continuation
+// | Sign
+// | |
+// V V
+// 101011
+
+var VLQ_BASE_SHIFT = 5;
+
+// binary: 100000
+var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+// binary: 011111
+var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+// binary: 100000
+var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+/**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+}
+
+/**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+}
+
+/**
+ * Returns the base 64 VLQ encoded value.
+ */
+exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+};
+
+/**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+};
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64.js
new file mode 100644
index 000000000..8aa86b302
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/base64.js
@@ -0,0 +1,67 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+/**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+};
+
+/**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+};
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/binary-search.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/binary-search.js
new file mode 100644
index 000000000..010ac941e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/binary-search.js
@@ -0,0 +1,111 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+exports.GREATEST_LOWER_BOUND = 1;
+exports.LEAST_UPPER_BOUND = 2;
+
+/**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+}
+
+/**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+};
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/mapping-list.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/mapping-list.js
new file mode 100644
index 000000000..06d1274a0
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/mapping-list.js
@@ -0,0 +1,79 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var util = require('./util');
+
+/**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+}
+
+/**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+}
+
+/**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+/**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+};
+
+/**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+};
+
+exports.MappingList = MappingList;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/quick-sort.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/quick-sort.js
new file mode 100644
index 000000000..6a7caadbb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/quick-sort.js
@@ -0,0 +1,114 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+// It turns out that some (most?) JavaScript engines don't self-host
+// `Array.prototype.sort`. This makes sense because C++ will likely remain
+// faster than JS when doing raw CPU-intensive sorting. However, when using a
+// custom comparator function, calling back and forth between the VM's C++ and
+// JIT'd JS is rather slow *and* loses JIT type information, resulting in
+// worse generated code for the comparator function than would be optimal. In
+// fact, when sorting with a comparator, these costs outweigh the benefits of
+// sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+// a ~3500ms mean speed-up in `bench/bench.html`.
+
+/**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+}
+
+/**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+}
+
+/**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+}
+
+/**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+};
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-consumer.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-consumer.js
new file mode 100644
index 000000000..6abcc280e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-consumer.js
@@ -0,0 +1,1082 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var util = require('./util');
+var binarySearch = require('./binary-search');
+var ArraySet = require('./array-set').ArraySet;
+var base64VLQ = require('./base64-vlq');
+var quickSort = require('./quick-sort').quickSort;
+
+function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+}
+
+SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+}
+
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+SourceMapConsumer.prototype._version = 3;
+
+// `__generatedMappings` and `__originalMappings` are arrays that hold the
+// parsed mapping coordinates from the source map's "mappings" attribute. They
+// are lazily instantiated, accessed via the `_generatedMappings` and
+// `_originalMappings` getters respectively, and we only parse the mappings
+// and create these arrays once queried for a source location. We jump through
+// these hoops because there can be many thousands of mappings, and parsing
+// them is expensive, so we only want to do it if we must.
+//
+// Each object in the arrays is of the form:
+//
+// {
+// generatedLine: The line number in the generated code,
+// generatedColumn: The column number in the generated code,
+// source: The path to the original source file that generated this
+// chunk of code,
+// originalLine: The line number in the original source that
+// corresponds to this chunk of generated code,
+// originalColumn: The column number in the original source that
+// corresponds to this chunk of generated code,
+// name: The name of the original symbol which generated this chunk of
+// code.
+// }
+//
+// All properties except for `generatedLine` and `generatedColumn` can be
+// `null`.
+//
+// `_generatedMappings` is ordered by the generated positions.
+//
+// `_originalMappings` is ordered by the original positions.
+
+SourceMapConsumer.prototype.__generatedMappings = null;
+Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+});
+
+SourceMapConsumer.prototype.__originalMappings = null;
+Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+});
+
+SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+/**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+SourceMapConsumer.GENERATED_ORDER = 1;
+SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+/**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+/**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+exports.SourceMapConsumer = SourceMapConsumer;
+
+/**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ .map(String)
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names.map(String), true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+}
+
+BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+/**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+BasicSourceMapConsumer.prototype._version = 3;
+
+/**
+ * The list of original sources.
+ */
+Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+});
+
+/**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+}
+
+/**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+/**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+/**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+/**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+/**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+/**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+/**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+/**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+}
+
+IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+IndexedSourceMapConsumer.prototype._version = 3;
+
+/**
+ * The list of original sources.
+ */
+Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+});
+
+/**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+/**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+/**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+/**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+/**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-generator.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-generator.js
new file mode 100644
index 000000000..aff1e7fb2
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-map-generator.js
@@ -0,0 +1,416 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var base64VLQ = require('./base64-vlq');
+var util = require('./util');
+var ArraySet = require('./array-set').ArraySet;
+var MappingList = require('./mapping-list').MappingList;
+
+/**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+}
+
+SourceMapGenerator.prototype._version = 3;
+
+/**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+/**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null) {
+ source = String(source);
+ if (!this._sources.has(source)) {
+ this._sources.add(source);
+ }
+ }
+
+ if (name != null) {
+ name = String(name);
+ if (!this._names.has(name)) {
+ this._names.add(name);
+ }
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+/**
+ * Set the source content for a source file.
+ */
+SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = Object.create(null);
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+/**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+/**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ // When aOriginal is truthy but has empty values for .line and .column,
+ // it is most likely a programmer error. In this case we throw a very
+ // specific error message to try to guide them the right way.
+ // For example: https://github.com/Polymer/polymer-bundler/pull/519
+ if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
+ throw new Error(
+ 'original.line and original.column are not numbers -- you probably meant to omit ' +
+ 'the original mapping entirely and only map the generated position. If so, pass ' +
+ 'null for the original mapping instead of an object with empty or null values.'
+ );
+ }
+
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+/**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var next;
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+ next = ''
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ next += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ next += ',';
+ }
+ }
+
+ next += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ next += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ next += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ next += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ next += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+
+ result += next;
+ }
+
+ return result;
+ };
+
+SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+/**
+ * Externalize the source map.
+ */
+SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+/**
+ * Render the source map being generated to a string.
+ */
+SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+exports.SourceMapGenerator = SourceMapGenerator;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-node.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-node.js
new file mode 100644
index 000000000..d196a53f8
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/source-node.js
@@ -0,0 +1,413 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
+var util = require('./util');
+
+// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+// operating systems these days (capturing the result).
+var REGEX_NEWLINE = /(\r?\n)/;
+
+// Newline character code for charCodeAt() comparisons
+var NEWLINE_CODE = 10;
+
+// Private symbol for identifying `SourceNode`s when multiple versions of
+// the source-map library are loaded. This MUST NOT CHANGE across
+// versions!
+var isSourceNode = "$$$isSourceNode$$$";
+
+/**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+}
+
+/**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are accessed by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var remainingLinesIndex = 0;
+ var shiftNextLine = function() {
+ var lineContents = getNextLine();
+ // The last line of a file might not have a newline.
+ var newLine = getNextLine() || "";
+ return lineContents + newLine;
+
+ function getNextLine() {
+ return remainingLinesIndex < remainingLines.length ?
+ remainingLines[remainingLinesIndex++] : undefined;
+ }
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[remainingLinesIndex];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[remainingLinesIndex];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLinesIndex < remainingLines.length) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.splice(remainingLinesIndex).join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+/**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+};
+
+/**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+};
+
+/**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+};
+
+/**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+};
+
+/**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+};
+
+/**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+/**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+/**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+};
+
+/**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+};
+
+exports.SourceNode = SourceNode;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/util.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/util.js
new file mode 100644
index 000000000..44e0e4520
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/lib/util.js
@@ -0,0 +1,417 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+/**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+}
+exports.getArg = getArg;
+
+var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+var dataUrlRegexp = /^data:.+\,.+$/;
+
+function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+}
+exports.urlParse = urlParse;
+
+function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+}
+exports.urlGenerate = urlGenerate;
+
+/**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consecutive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+}
+exports.normalize = normalize;
+
+/**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+}
+exports.join = join;
+
+exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+};
+
+/**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+}
+exports.relative = relative;
+
+var supportsNullProto = (function () {
+ var obj = Object.create(null);
+ return !('__proto__' in obj);
+}());
+
+function identity (s) {
+ return s;
+}
+
+/**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+function toSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return '$' + aStr;
+ }
+
+ return aStr;
+}
+exports.toSetString = supportsNullProto ? identity : toSetString;
+
+function fromSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return aStr.slice(1);
+ }
+
+ return aStr;
+}
+exports.fromSetString = supportsNullProto ? identity : fromSetString;
+
+function isProtoString(s) {
+ if (!s) {
+ return false;
+ }
+
+ var length = s.length;
+
+ if (length < 9 /* "__proto__".length */) {
+ return false;
+ }
+
+ if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 2) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 4) !== 116 /* 't' */ ||
+ s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
+ s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
+ s.charCodeAt(length - 8) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 9) !== 95 /* '_' */) {
+ return false;
+ }
+
+ for (var i = length - 10; i >= 0; i--) {
+ if (s.charCodeAt(i) !== 36 /* '$' */) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+}
+exports.compareByOriginalPositions = compareByOriginalPositions;
+
+/**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+}
+exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+}
+
+/**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+}
+exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/package.json b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/package.json
new file mode 100644
index 000000000..048e3ae86
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "source-map",
+ "description": "Generates and consumes source maps",
+ "version": "0.5.7",
+ "homepage": "https://github.com/mozilla/source-map",
+ "author": "Nick Fitzgerald ",
+ "contributors": [
+ "Tobias Koppers ",
+ "Duncan Beevers ",
+ "Stephen Crane ",
+ "Ryan Seddon ",
+ "Miles Elam ",
+ "Mihai Bazon ",
+ "Michael Ficarra ",
+ "Todd Wolfson ",
+ "Alexander Solovyov ",
+ "Felix Gnass ",
+ "Conrad Irwin ",
+ "usrbincc ",
+ "David Glasser ",
+ "Chase Douglas ",
+ "Evan Wallace ",
+ "Heather Arthur ",
+ "Hugh Kennedy ",
+ "David Glasser ",
+ "Simon Lydell ",
+ "Jmeas Smith ",
+ "Michael Z Goddard ",
+ "azu ",
+ "John Gozde ",
+ "Adam Kirkton ",
+ "Chris Montgomery ",
+ "J. Ryan Stinnett ",
+ "Jack Herrington ",
+ "Chris Truter ",
+ "Daniel Espeset ",
+ "Jamie Wong ",
+ "Eddy Bruël ",
+ "Hawken Rives ",
+ "Gilad Peleg ",
+ "djchie ",
+ "Gary Ye ",
+ "Nicolas Lalevée "
+ ],
+ "repository": {
+ "type": "git",
+ "url": "http://github.com/mozilla/source-map.git"
+ },
+ "main": "./source-map.js",
+ "files": [
+ "source-map.js",
+ "lib/",
+ "dist/source-map.debug.js",
+ "dist/source-map.js",
+ "dist/source-map.min.js",
+ "dist/source-map.min.js.map"
+ ],
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "license": "BSD-3-Clause",
+ "scripts": {
+ "test": "npm run build && node test/run-tests.js",
+ "build": "webpack --color",
+ "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
+ },
+ "devDependencies": {
+ "doctoc": "^0.15.0",
+ "webpack": "^1.12.0"
+ },
+ "typings": "source-map"
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/source-map.js b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/source-map.js
new file mode 100644
index 000000000..bc88fe820
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/node_modules/source-map/source-map.js
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;
+exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;
+exports.SourceNode = require('./lib/source-node').SourceNode;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/generator/package.json b/weekly_mission_2/examples_4/node_modules/@babel/generator/package.json
new file mode 100644
index 000000000..71b4a82aa
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/generator/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@babel/generator",
+ "version": "7.17.9",
+ "description": "Turns an AST into code.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-generator"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-generator",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen",
+ "main": "./lib/index.js",
+ "files": [
+ "lib"
+ ],
+ "dependencies": {
+ "@babel/types": "^7.17.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "devDependencies": {
+ "@babel/helper-fixtures": "^7.17.0",
+ "@babel/parser": "^7.17.9",
+ "@jridgewell/trace-mapping": "^0.3.4",
+ "@types/jsesc": "^2.5.0",
+ "@types/source-map": "^0.5.0",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/README.md
new file mode 100644
index 000000000..29f043b96
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-compilation-targets
+
+> Helper functions on Babel compilation targets
+
+See our website [@babel/helper-compilation-targets](https://babeljs.io/docs/en/babel-helper-compilation-targets) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-compilation-targets
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-compilation-targets
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/debug.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/debug.js
new file mode 100644
index 000000000..4e05fdd55
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/debug.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getInclusionReasons = getInclusionReasons;
+
+var _semver = require("semver");
+
+var _pretty = require("./pretty");
+
+var _utils = require("./utils");
+
+function getInclusionReasons(item, targetVersions, list) {
+ const minVersions = list[item] || {};
+ return Object.keys(targetVersions).reduce((result, env) => {
+ const minVersion = (0, _utils.getLowestImplementedVersion)(minVersions, env);
+ const targetVersion = targetVersions[env];
+
+ if (!minVersion) {
+ result[env] = (0, _pretty.prettifyVersion)(targetVersion);
+ } else {
+ const minIsUnreleased = (0, _utils.isUnreleasedVersion)(minVersion, env);
+ const targetIsUnreleased = (0, _utils.isUnreleasedVersion)(targetVersion, env);
+
+ if (!targetIsUnreleased && (minIsUnreleased || _semver.lt(targetVersion.toString(), (0, _utils.semverify)(minVersion)))) {
+ result[env] = (0, _pretty.prettifyVersion)(targetVersion);
+ }
+ }
+
+ return result;
+ }, {});
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/filter-items.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/filter-items.js
new file mode 100644
index 000000000..f47f6050f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/filter-items.js
@@ -0,0 +1,88 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = filterItems;
+exports.isRequired = isRequired;
+exports.targetsSupported = targetsSupported;
+
+var _semver = require("semver");
+
+var _plugins = require("@babel/compat-data/plugins");
+
+var _utils = require("./utils");
+
+function targetsSupported(target, support) {
+ const targetEnvironments = Object.keys(target);
+
+ if (targetEnvironments.length === 0) {
+ return false;
+ }
+
+ const unsupportedEnvironments = targetEnvironments.filter(environment => {
+ const lowestImplementedVersion = (0, _utils.getLowestImplementedVersion)(support, environment);
+
+ if (!lowestImplementedVersion) {
+ return true;
+ }
+
+ const lowestTargetedVersion = target[environment];
+
+ if ((0, _utils.isUnreleasedVersion)(lowestTargetedVersion, environment)) {
+ return false;
+ }
+
+ if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) {
+ return true;
+ }
+
+ if (!_semver.valid(lowestTargetedVersion.toString())) {
+ throw new Error(`Invalid version passed for target "${environment}": "${lowestTargetedVersion}". ` + "Versions must be in semver format (major.minor.patch)");
+ }
+
+ return _semver.gt((0, _utils.semverify)(lowestImplementedVersion), lowestTargetedVersion.toString());
+ });
+ return unsupportedEnvironments.length === 0;
+}
+
+function isRequired(name, targets, {
+ compatData = _plugins,
+ includes,
+ excludes
+} = {}) {
+ if (excludes != null && excludes.has(name)) return false;
+ if (includes != null && includes.has(name)) return true;
+ return !targetsSupported(targets, compatData[name]);
+}
+
+function filterItems(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) {
+ const result = new Set();
+ const options = {
+ compatData: list,
+ includes,
+ excludes
+ };
+
+ for (const item in list) {
+ if (isRequired(item, targets, options)) {
+ result.add(item);
+ } else if (pluginSyntaxMap) {
+ const shippedProposalsSyntax = pluginSyntaxMap.get(item);
+
+ if (shippedProposalsSyntax) {
+ result.add(shippedProposalsSyntax);
+ }
+ }
+ }
+
+ if (defaultIncludes) {
+ defaultIncludes.forEach(item => !excludes.has(item) && result.add(item));
+ }
+
+ if (defaultExcludes) {
+ defaultExcludes.forEach(item => !includes.has(item) && result.delete(item));
+ }
+
+ return result;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/index.js
new file mode 100644
index 000000000..ae7be9be2
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/index.js
@@ -0,0 +1,255 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "TargetNames", {
+ enumerable: true,
+ get: function () {
+ return _options.TargetNames;
+ }
+});
+exports.default = getTargets;
+Object.defineProperty(exports, "filterItems", {
+ enumerable: true,
+ get: function () {
+ return _filterItems.default;
+ }
+});
+Object.defineProperty(exports, "getInclusionReasons", {
+ enumerable: true,
+ get: function () {
+ return _debug.getInclusionReasons;
+ }
+});
+exports.isBrowsersQueryValid = isBrowsersQueryValid;
+Object.defineProperty(exports, "isRequired", {
+ enumerable: true,
+ get: function () {
+ return _filterItems.isRequired;
+ }
+});
+Object.defineProperty(exports, "prettifyTargets", {
+ enumerable: true,
+ get: function () {
+ return _pretty.prettifyTargets;
+ }
+});
+Object.defineProperty(exports, "unreleasedLabels", {
+ enumerable: true,
+ get: function () {
+ return _targets.unreleasedLabels;
+ }
+});
+
+var _browserslist = require("browserslist");
+
+var _helperValidatorOption = require("@babel/helper-validator-option");
+
+var _nativeModules = require("@babel/compat-data/native-modules");
+
+var _utils = require("./utils");
+
+var _targets = require("./targets");
+
+var _options = require("./options");
+
+var _pretty = require("./pretty");
+
+var _debug = require("./debug");
+
+var _filterItems = require("./filter-items");
+
+const ESM_SUPPORT = _nativeModules["es6.module"];
+const v = new _helperValidatorOption.OptionValidator("@babel/helper-compilation-targets");
+
+function validateTargetNames(targets) {
+ const validTargets = Object.keys(_options.TargetNames);
+
+ for (const target of Object.keys(targets)) {
+ if (!(target in _options.TargetNames)) {
+ throw new Error(v.formatMessage(`'${target}' is not a valid target
+- Did you mean '${(0, _helperValidatorOption.findSuggestion)(target, validTargets)}'?`));
+ }
+ }
+
+ return targets;
+}
+
+function isBrowsersQueryValid(browsers) {
+ return typeof browsers === "string" || Array.isArray(browsers) && browsers.every(b => typeof b === "string");
+}
+
+function validateBrowsers(browsers) {
+ v.invariant(browsers === undefined || isBrowsersQueryValid(browsers), `'${String(browsers)}' is not a valid browserslist query`);
+ return browsers;
+}
+
+function getLowestVersions(browsers) {
+ return browsers.reduce((all, browser) => {
+ const [browserName, browserVersion] = browser.split(" ");
+ const normalizedBrowserName = _targets.browserNameMap[browserName];
+
+ if (!normalizedBrowserName) {
+ return all;
+ }
+
+ try {
+ const splitVersion = browserVersion.split("-")[0].toLowerCase();
+ const isSplitUnreleased = (0, _utils.isUnreleasedVersion)(splitVersion, browserName);
+
+ if (!all[normalizedBrowserName]) {
+ all[normalizedBrowserName] = isSplitUnreleased ? splitVersion : (0, _utils.semverify)(splitVersion);
+ return all;
+ }
+
+ const version = all[normalizedBrowserName];
+ const isUnreleased = (0, _utils.isUnreleasedVersion)(version, browserName);
+
+ if (isUnreleased && isSplitUnreleased) {
+ all[normalizedBrowserName] = (0, _utils.getLowestUnreleased)(version, splitVersion, browserName);
+ } else if (isUnreleased) {
+ all[normalizedBrowserName] = (0, _utils.semverify)(splitVersion);
+ } else if (!isUnreleased && !isSplitUnreleased) {
+ const parsedBrowserVersion = (0, _utils.semverify)(splitVersion);
+ all[normalizedBrowserName] = (0, _utils.semverMin)(version, parsedBrowserVersion);
+ }
+ } catch (e) {}
+
+ return all;
+ }, {});
+}
+
+function outputDecimalWarning(decimalTargets) {
+ if (!decimalTargets.length) {
+ return;
+ }
+
+ console.warn("Warning, the following targets are using a decimal version:\n");
+ decimalTargets.forEach(({
+ target,
+ value
+ }) => console.warn(` ${target}: ${value}`));
+ console.warn(`
+We recommend using a string for minor/patch versions to avoid numbers like 6.10
+getting parsed as 6.1, which can lead to unexpected behavior.
+`);
+}
+
+function semverifyTarget(target, value) {
+ try {
+ return (0, _utils.semverify)(value);
+ } catch (error) {
+ throw new Error(v.formatMessage(`'${value}' is not a valid value for 'targets.${target}'.`));
+ }
+}
+
+const targetParserMap = {
+ __default(target, value) {
+ const version = (0, _utils.isUnreleasedVersion)(value, target) ? value.toLowerCase() : semverifyTarget(target, value);
+ return [target, version];
+ },
+
+ node(target, value) {
+ const parsed = value === true || value === "current" ? process.versions.node : semverifyTarget(target, value);
+ return [target, parsed];
+ }
+
+};
+
+function generateTargets(inputTargets) {
+ const input = Object.assign({}, inputTargets);
+ delete input.esmodules;
+ delete input.browsers;
+ return input;
+}
+
+function resolveTargets(queries, env) {
+ const resolved = _browserslist(queries, {
+ mobileToDesktop: true,
+ env
+ });
+
+ return getLowestVersions(resolved);
+}
+
+function getTargets(inputTargets = {}, options = {}) {
+ var _browsers, _browsers2;
+
+ let {
+ browsers,
+ esmodules
+ } = inputTargets;
+ const {
+ configPath = "."
+ } = options;
+ validateBrowsers(browsers);
+ const input = generateTargets(inputTargets);
+ let targets = validateTargetNames(input);
+ const shouldParseBrowsers = !!browsers;
+ const hasTargets = shouldParseBrowsers || Object.keys(targets).length > 0;
+ const shouldSearchForConfig = !options.ignoreBrowserslistConfig && !hasTargets;
+
+ if (!browsers && shouldSearchForConfig) {
+ browsers = _browserslist.loadConfig({
+ config: options.configFile,
+ path: configPath,
+ env: options.browserslistEnv
+ });
+
+ if (browsers == null) {
+ {
+ browsers = [];
+ }
+ }
+ }
+
+ if (esmodules && (esmodules !== "intersect" || !((_browsers = browsers) != null && _browsers.length))) {
+ browsers = Object.keys(ESM_SUPPORT).map(browser => `${browser} >= ${ESM_SUPPORT[browser]}`).join(", ");
+ esmodules = false;
+ }
+
+ if ((_browsers2 = browsers) != null && _browsers2.length) {
+ const queryBrowsers = resolveTargets(browsers, options.browserslistEnv);
+
+ if (esmodules === "intersect") {
+ for (const browser of Object.keys(queryBrowsers)) {
+ const version = queryBrowsers[browser];
+
+ if (ESM_SUPPORT[browser]) {
+ queryBrowsers[browser] = (0, _utils.getHighestUnreleased)(version, (0, _utils.semverify)(ESM_SUPPORT[browser]), browser);
+ } else {
+ delete queryBrowsers[browser];
+ }
+ }
+ }
+
+ targets = Object.assign(queryBrowsers, targets);
+ }
+
+ const result = {};
+ const decimalWarnings = [];
+
+ for (const target of Object.keys(targets).sort()) {
+ var _targetParserMap$targ;
+
+ const value = targets[target];
+
+ if (typeof value === "number" && value % 1 !== 0) {
+ decimalWarnings.push({
+ target,
+ value
+ });
+ }
+
+ const parser = (_targetParserMap$targ = targetParserMap[target]) != null ? _targetParserMap$targ : targetParserMap.__default;
+ const [parsedTarget, parsedValue] = parser(target, value);
+
+ if (parsedValue) {
+ result[parsedTarget] = parsedValue;
+ }
+ }
+
+ outputDecimalWarning(decimalWarnings);
+ return result;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/options.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/options.js
new file mode 100644
index 000000000..cbf4de04a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/options.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.TargetNames = void 0;
+const TargetNames = {
+ node: "node",
+ chrome: "chrome",
+ opera: "opera",
+ edge: "edge",
+ firefox: "firefox",
+ safari: "safari",
+ ie: "ie",
+ ios: "ios",
+ android: "android",
+ electron: "electron",
+ samsung: "samsung",
+ rhino: "rhino"
+};
+exports.TargetNames = TargetNames;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/pretty.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/pretty.js
new file mode 100644
index 000000000..88df64006
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/pretty.js
@@ -0,0 +1,47 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.prettifyTargets = prettifyTargets;
+exports.prettifyVersion = prettifyVersion;
+
+var _semver = require("semver");
+
+var _targets = require("./targets");
+
+function prettifyVersion(version) {
+ if (typeof version !== "string") {
+ return version;
+ }
+
+ const parts = [_semver.major(version)];
+
+ const minor = _semver.minor(version);
+
+ const patch = _semver.patch(version);
+
+ if (minor || patch) {
+ parts.push(minor);
+ }
+
+ if (patch) {
+ parts.push(patch);
+ }
+
+ return parts.join(".");
+}
+
+function prettifyTargets(targets) {
+ return Object.keys(targets).reduce((results, target) => {
+ let value = targets[target];
+ const unreleasedLabel = _targets.unreleasedLabels[target];
+
+ if (typeof value === "string" && unreleasedLabel !== value) {
+ value = prettifyVersion(value);
+ }
+
+ results[target] = value;
+ return results;
+ }, {});
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/targets.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/targets.js
new file mode 100644
index 000000000..3cbaeac98
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/targets.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.unreleasedLabels = exports.browserNameMap = void 0;
+const unreleasedLabels = {
+ safari: "tp"
+};
+exports.unreleasedLabels = unreleasedLabels;
+const browserNameMap = {
+ and_chr: "chrome",
+ and_ff: "firefox",
+ android: "android",
+ chrome: "chrome",
+ edge: "edge",
+ firefox: "firefox",
+ ie: "ie",
+ ie_mob: "ie",
+ ios_saf: "ios",
+ node: "node",
+ op_mob: "opera",
+ opera: "opera",
+ safari: "safari",
+ samsung: "samsung"
+};
+exports.browserNameMap = browserNameMap;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/types.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/types.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/utils.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/utils.js
new file mode 100644
index 000000000..711a84f43
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/lib/utils.js
@@ -0,0 +1,69 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getHighestUnreleased = getHighestUnreleased;
+exports.getLowestImplementedVersion = getLowestImplementedVersion;
+exports.getLowestUnreleased = getLowestUnreleased;
+exports.isUnreleasedVersion = isUnreleasedVersion;
+exports.semverMin = semverMin;
+exports.semverify = semverify;
+
+var _semver = require("semver");
+
+var _helperValidatorOption = require("@babel/helper-validator-option");
+
+var _targets = require("./targets");
+
+const versionRegExp = /^(\d+|\d+.\d+)$/;
+const v = new _helperValidatorOption.OptionValidator("@babel/helper-compilation-targets");
+
+function semverMin(first, second) {
+ return first && _semver.lt(first, second) ? first : second;
+}
+
+function semverify(version) {
+ if (typeof version === "string" && _semver.valid(version)) {
+ return version;
+ }
+
+ v.invariant(typeof version === "number" || typeof version === "string" && versionRegExp.test(version), `'${version}' is not a valid version`);
+ const split = version.toString().split(".");
+
+ while (split.length < 3) {
+ split.push("0");
+ }
+
+ return split.join(".");
+}
+
+function isUnreleasedVersion(version, env) {
+ const unreleasedLabel = _targets.unreleasedLabels[env];
+ return !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase();
+}
+
+function getLowestUnreleased(a, b, env) {
+ const unreleasedLabel = _targets.unreleasedLabels[env];
+ const hasUnreleased = [a, b].some(item => item === unreleasedLabel);
+
+ if (hasUnreleased) {
+ return a === hasUnreleased ? b : a || b;
+ }
+
+ return semverMin(a, b);
+}
+
+function getHighestUnreleased(a, b, env) {
+ return getLowestUnreleased(a, b, env) === a ? b : a;
+}
+
+function getLowestImplementedVersion(plugin, environment) {
+ const result = plugin[environment];
+
+ if (!result && environment === "android") {
+ return plugin.chrome;
+ }
+
+ return result;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/package.json
new file mode 100644
index 000000000..9581c6c63
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-compilation-targets/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "@babel/helper-compilation-targets",
+ "version": "7.17.7",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "description": "Helper functions on Babel compilation targets",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-compilation-targets"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": "./lib/index.js",
+ "./package.json": "./package.json"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "keywords": [
+ "babel",
+ "babel-plugin"
+ ],
+ "dependencies": {
+ "@babel/compat-data": "^7.17.7",
+ "@babel/helper-validator-option": "^7.16.7",
+ "browserslist": "^4.17.5",
+ "semver": "^6.3.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.17.7",
+ "@babel/helper-plugin-test-runner": "^7.16.7",
+ "@types/semver": "^5.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/README.md
new file mode 100644
index 000000000..ec74ac360
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-environment-visitor
+
+> Helper visitor to only visit nodes in the current 'this' context
+
+See our website [@babel/helper-environment-visitor](https://babeljs.io/docs/en/babel-helper-environment-visitor) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-environment-visitor
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-environment-visitor --dev
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/lib/index.js
new file mode 100644
index 000000000..e85bf132e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/lib/index.js
@@ -0,0 +1,38 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+exports.skipAllButComputedKey = skipAllButComputedKey;
+
+var _t = require("@babel/types");
+
+const {
+ VISITOR_KEYS,
+ staticBlock
+} = _t;
+
+function skipAllButComputedKey(path) {
+ if (!path.node.computed) {
+ path.skip();
+ return;
+ }
+
+ const keys = VISITOR_KEYS[path.type];
+
+ for (const key of keys) {
+ if (key !== "key") path.skipKey(key);
+ }
+}
+
+const skipKey = (staticBlock ? "StaticBlock|" : "") + "ClassPrivateProperty|TypeAnnotation|FunctionDeclaration|FunctionExpression";
+var _default = {
+ [skipKey]: path => path.skip(),
+
+ "Method|ClassProperty"(path) {
+ skipAllButComputedKey(path);
+ }
+
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/package.json
new file mode 100644
index 000000000..ffc31a3ca
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-environment-visitor/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@babel/helper-environment-visitor",
+ "version": "7.16.7",
+ "description": "Helper visitor to only visit nodes in the current 'this' context",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-environment-visitor"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-environment-visitor",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": "./lib/index.js",
+ "./package.json": "./package.json"
+ },
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "devDependencies": {
+ "@babel/traverse": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/README.md
new file mode 100644
index 000000000..1e490aea1
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-function-name
+
+> Helper function to change the property 'name' of every function
+
+See our website [@babel/helper-function-name](https://babeljs.io/docs/en/babel-helper-function-name) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-function-name
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-function-name
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/lib/index.js
new file mode 100644
index 000000000..749812feb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/lib/index.js
@@ -0,0 +1,198 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+var _template = require("@babel/template");
+
+var _t = require("@babel/types");
+
+const {
+ NOT_LOCAL_BINDING,
+ cloneNode,
+ identifier,
+ isAssignmentExpression,
+ isAssignmentPattern,
+ isFunction,
+ isIdentifier,
+ isLiteral,
+ isNullLiteral,
+ isObjectMethod,
+ isObjectProperty,
+ isRegExpLiteral,
+ isRestElement,
+ isTemplateLiteral,
+ isVariableDeclarator,
+ toBindingIdentifierName
+} = _t;
+
+function getFunctionArity(node) {
+ const count = node.params.findIndex(param => isAssignmentPattern(param) || isRestElement(param));
+ return count === -1 ? node.params.length : count;
+}
+
+const buildPropertyMethodAssignmentWrapper = (0, _template.default)(`
+ (function (FUNCTION_KEY) {
+ function FUNCTION_ID() {
+ return FUNCTION_KEY.apply(this, arguments);
+ }
+
+ FUNCTION_ID.toString = function () {
+ return FUNCTION_KEY.toString();
+ }
+
+ return FUNCTION_ID;
+ })(FUNCTION)
+`);
+const buildGeneratorPropertyMethodAssignmentWrapper = (0, _template.default)(`
+ (function (FUNCTION_KEY) {
+ function* FUNCTION_ID() {
+ return yield* FUNCTION_KEY.apply(this, arguments);
+ }
+
+ FUNCTION_ID.toString = function () {
+ return FUNCTION_KEY.toString();
+ };
+
+ return FUNCTION_ID;
+ })(FUNCTION)
+`);
+const visitor = {
+ "ReferencedIdentifier|BindingIdentifier"(path, state) {
+ if (path.node.name !== state.name) return;
+ const localDeclar = path.scope.getBindingIdentifier(state.name);
+ if (localDeclar !== state.outerDeclar) return;
+ state.selfReference = true;
+ path.stop();
+ }
+
+};
+
+function getNameFromLiteralId(id) {
+ if (isNullLiteral(id)) {
+ return "null";
+ }
+
+ if (isRegExpLiteral(id)) {
+ return `_${id.pattern}_${id.flags}`;
+ }
+
+ if (isTemplateLiteral(id)) {
+ return id.quasis.map(quasi => quasi.value.raw).join("");
+ }
+
+ if (id.value !== undefined) {
+ return id.value + "";
+ }
+
+ return "";
+}
+
+function wrap(state, method, id, scope) {
+ if (state.selfReference) {
+ if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {
+ scope.rename(id.name);
+ } else {
+ if (!isFunction(method)) return;
+ let build = buildPropertyMethodAssignmentWrapper;
+
+ if (method.generator) {
+ build = buildGeneratorPropertyMethodAssignmentWrapper;
+ }
+
+ const template = build({
+ FUNCTION: method,
+ FUNCTION_ID: id,
+ FUNCTION_KEY: scope.generateUidIdentifier(id.name)
+ }).expression;
+ const params = template.callee.body.body[0].params;
+
+ for (let i = 0, len = getFunctionArity(method); i < len; i++) {
+ params.push(scope.generateUidIdentifier("x"));
+ }
+
+ return template;
+ }
+ }
+
+ method.id = id;
+ scope.getProgramParent().references[id.name] = true;
+}
+
+function visit(node, name, scope) {
+ const state = {
+ selfAssignment: false,
+ selfReference: false,
+ outerDeclar: scope.getBindingIdentifier(name),
+ references: [],
+ name: name
+ };
+ const binding = scope.getOwnBinding(name);
+
+ if (binding) {
+ if (binding.kind === "param") {
+ state.selfReference = true;
+ } else {}
+ } else if (state.outerDeclar || scope.hasGlobal(name)) {
+ scope.traverse(node, visitor, state);
+ }
+
+ return state;
+}
+
+function _default({
+ node,
+ parent,
+ scope,
+ id
+}, localBinding = false, supportUnicodeId = false) {
+ if (node.id) return;
+
+ if ((isObjectProperty(parent) || isObjectMethod(parent, {
+ kind: "method"
+ })) && (!parent.computed || isLiteral(parent.key))) {
+ id = parent.key;
+ } else if (isVariableDeclarator(parent)) {
+ id = parent.id;
+
+ if (isIdentifier(id) && !localBinding) {
+ const binding = scope.parent.getBinding(id.name);
+
+ if (binding && binding.constant && scope.getBinding(id.name) === binding) {
+ node.id = cloneNode(id);
+ node.id[NOT_LOCAL_BINDING] = true;
+ return;
+ }
+ }
+ } else if (isAssignmentExpression(parent, {
+ operator: "="
+ })) {
+ id = parent.left;
+ } else if (!id) {
+ return;
+ }
+
+ let name;
+
+ if (id && isLiteral(id)) {
+ name = getNameFromLiteralId(id);
+ } else if (id && isIdentifier(id)) {
+ name = id.name;
+ }
+
+ if (name === undefined) {
+ return;
+ }
+
+ if (!supportUnicodeId && isFunction(node) && /[\uD800-\uDFFF]/.test(name)) {
+ return;
+ }
+
+ name = toBindingIdentifierName(name);
+ id = identifier(name);
+ id[NOT_LOCAL_BINDING] = true;
+ const state = visit(node, name, scope);
+ return wrap(state, node, id, scope) || node;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/package.json
new file mode 100644
index 000000000..a4c9646b5
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-function-name/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "@babel/helper-function-name",
+ "version": "7.17.9",
+ "description": "Helper function to change the property 'name' of every function",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-function-name"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-function-name",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/README.md
new file mode 100644
index 000000000..ef878210f
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-hoist-variables
+
+> Helper function to hoist variables
+
+See our website [@babel/helper-hoist-variables](https://babeljs.io/docs/en/babel-helper-hoist-variables) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-hoist-variables
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-hoist-variables
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/lib/index.js
new file mode 100644
index 000000000..31fb8470e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/lib/index.js
@@ -0,0 +1,58 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = hoistVariables;
+
+var _t = require("@babel/types");
+
+const {
+ assignmentExpression,
+ expressionStatement,
+ identifier
+} = _t;
+const visitor = {
+ Scope(path, state) {
+ if (state.kind === "let") path.skip();
+ },
+
+ FunctionParent(path) {
+ path.skip();
+ },
+
+ VariableDeclaration(path, state) {
+ if (state.kind && path.node.kind !== state.kind) return;
+ const nodes = [];
+ const declarations = path.get("declarations");
+ let firstId;
+
+ for (const declar of declarations) {
+ firstId = declar.node.id;
+
+ if (declar.node.init) {
+ nodes.push(expressionStatement(assignmentExpression("=", declar.node.id, declar.node.init)));
+ }
+
+ for (const name of Object.keys(declar.getBindingIdentifiers())) {
+ state.emit(identifier(name), name, declar.node.init !== null);
+ }
+ }
+
+ if (path.parentPath.isFor({
+ left: path.node
+ })) {
+ path.replaceWith(firstId);
+ } else {
+ path.replaceWithMultiple(nodes);
+ }
+ }
+
+};
+
+function hoistVariables(path, emit, kind = "var") {
+ path.traverse(visitor, {
+ kind,
+ emit
+ });
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/package.json
new file mode 100644
index 000000000..ec99d90ed
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-hoist-variables/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@babel/helper-hoist-variables",
+ "version": "7.16.7",
+ "description": "Helper function to hoist variables",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-hoist-variables"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-hoist-variables",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "TODO": "The @babel/traverse dependency is only needed for the NodePath TS type. We can consider exporting it from @babel/core.",
+ "devDependencies": {
+ "@babel/traverse": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/README.md
new file mode 100644
index 000000000..933c5b75a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-module-imports
+
+> Babel helper functions for inserting module loads
+
+See our website [@babel/helper-module-imports](https://babeljs.io/docs/en/babel-helper-module-imports) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-module-imports
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-module-imports
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-builder.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-builder.js
new file mode 100644
index 000000000..8a1800e64
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-builder.js
@@ -0,0 +1,162 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+const {
+ callExpression,
+ cloneNode,
+ expressionStatement,
+ identifier,
+ importDeclaration,
+ importDefaultSpecifier,
+ importNamespaceSpecifier,
+ importSpecifier,
+ memberExpression,
+ stringLiteral,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+class ImportBuilder {
+ constructor(importedSource, scope, hub) {
+ this._statements = [];
+ this._resultName = null;
+ this._scope = null;
+ this._hub = null;
+ this._importedSource = void 0;
+ this._scope = scope;
+ this._hub = hub;
+ this._importedSource = importedSource;
+ }
+
+ done() {
+ return {
+ statements: this._statements,
+ resultName: this._resultName
+ };
+ }
+
+ import() {
+ this._statements.push(importDeclaration([], stringLiteral(this._importedSource)));
+
+ return this;
+ }
+
+ require() {
+ this._statements.push(expressionStatement(callExpression(identifier("require"), [stringLiteral(this._importedSource)])));
+
+ return this;
+ }
+
+ namespace(name = "namespace") {
+ const local = this._scope.generateUidIdentifier(name);
+
+ const statement = this._statements[this._statements.length - 1];
+
+ _assert(statement.type === "ImportDeclaration");
+
+ _assert(statement.specifiers.length === 0);
+
+ statement.specifiers = [importNamespaceSpecifier(local)];
+ this._resultName = cloneNode(local);
+ return this;
+ }
+
+ default(name) {
+ name = this._scope.generateUidIdentifier(name);
+ const statement = this._statements[this._statements.length - 1];
+
+ _assert(statement.type === "ImportDeclaration");
+
+ _assert(statement.specifiers.length === 0);
+
+ statement.specifiers = [importDefaultSpecifier(name)];
+ this._resultName = cloneNode(name);
+ return this;
+ }
+
+ named(name, importName) {
+ if (importName === "default") return this.default(name);
+ name = this._scope.generateUidIdentifier(name);
+ const statement = this._statements[this._statements.length - 1];
+
+ _assert(statement.type === "ImportDeclaration");
+
+ _assert(statement.specifiers.length === 0);
+
+ statement.specifiers = [importSpecifier(name, identifier(importName))];
+ this._resultName = cloneNode(name);
+ return this;
+ }
+
+ var(name) {
+ name = this._scope.generateUidIdentifier(name);
+ let statement = this._statements[this._statements.length - 1];
+
+ if (statement.type !== "ExpressionStatement") {
+ _assert(this._resultName);
+
+ statement = expressionStatement(this._resultName);
+
+ this._statements.push(statement);
+ }
+
+ this._statements[this._statements.length - 1] = variableDeclaration("var", [variableDeclarator(name, statement.expression)]);
+ this._resultName = cloneNode(name);
+ return this;
+ }
+
+ defaultInterop() {
+ return this._interop(this._hub.addHelper("interopRequireDefault"));
+ }
+
+ wildcardInterop() {
+ return this._interop(this._hub.addHelper("interopRequireWildcard"));
+ }
+
+ _interop(callee) {
+ const statement = this._statements[this._statements.length - 1];
+
+ if (statement.type === "ExpressionStatement") {
+ statement.expression = callExpression(callee, [statement.expression]);
+ } else if (statement.type === "VariableDeclaration") {
+ _assert(statement.declarations.length === 1);
+
+ statement.declarations[0].init = callExpression(callee, [statement.declarations[0].init]);
+ } else {
+ _assert.fail("Unexpected type.");
+ }
+
+ return this;
+ }
+
+ prop(name) {
+ const statement = this._statements[this._statements.length - 1];
+
+ if (statement.type === "ExpressionStatement") {
+ statement.expression = memberExpression(statement.expression, identifier(name));
+ } else if (statement.type === "VariableDeclaration") {
+ _assert(statement.declarations.length === 1);
+
+ statement.declarations[0].init = memberExpression(statement.declarations[0].init, identifier(name));
+ } else {
+ _assert.fail("Unexpected type:" + statement.type);
+ }
+
+ return this;
+ }
+
+ read(name) {
+ this._resultName = memberExpression(this._resultName, identifier(name));
+ }
+
+}
+
+exports.default = ImportBuilder;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-injector.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-injector.js
new file mode 100644
index 000000000..adb9627ef
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/import-injector.js
@@ -0,0 +1,290 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+var _importBuilder = require("./import-builder");
+
+var _isModule = require("./is-module");
+
+const {
+ numericLiteral,
+ sequenceExpression
+} = _t;
+
+class ImportInjector {
+ constructor(path, importedSource, opts) {
+ this._defaultOpts = {
+ importedSource: null,
+ importedType: "commonjs",
+ importedInterop: "babel",
+ importingInterop: "babel",
+ ensureLiveReference: false,
+ ensureNoContext: false,
+ importPosition: "before"
+ };
+ const programPath = path.find(p => p.isProgram());
+ this._programPath = programPath;
+ this._programScope = programPath.scope;
+ this._hub = programPath.hub;
+ this._defaultOpts = this._applyDefaults(importedSource, opts, true);
+ }
+
+ addDefault(importedSourceIn, opts) {
+ return this.addNamed("default", importedSourceIn, opts);
+ }
+
+ addNamed(importName, importedSourceIn, opts) {
+ _assert(typeof importName === "string");
+
+ return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);
+ }
+
+ addNamespace(importedSourceIn, opts) {
+ return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);
+ }
+
+ addSideEffect(importedSourceIn, opts) {
+ return this._generateImport(this._applyDefaults(importedSourceIn, opts), false);
+ }
+
+ _applyDefaults(importedSource, opts, isInit = false) {
+ const optsList = [];
+
+ if (typeof importedSource === "string") {
+ optsList.push({
+ importedSource
+ });
+ optsList.push(opts);
+ } else {
+ _assert(!opts, "Unexpected secondary arguments.");
+
+ optsList.push(importedSource);
+ }
+
+ const newOpts = Object.assign({}, this._defaultOpts);
+
+ for (const opts of optsList) {
+ if (!opts) continue;
+ Object.keys(newOpts).forEach(key => {
+ if (opts[key] !== undefined) newOpts[key] = opts[key];
+ });
+
+ if (!isInit) {
+ if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint;
+ if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist;
+ }
+ }
+
+ return newOpts;
+ }
+
+ _generateImport(opts, importName) {
+ const isDefault = importName === "default";
+ const isNamed = !!importName && !isDefault;
+ const isNamespace = importName === null;
+ const {
+ importedSource,
+ importedType,
+ importedInterop,
+ importingInterop,
+ ensureLiveReference,
+ ensureNoContext,
+ nameHint,
+ importPosition,
+ blockHoist
+ } = opts;
+ let name = nameHint || importName;
+ const isMod = (0, _isModule.default)(this._programPath);
+ const isModuleForNode = isMod && importingInterop === "node";
+ const isModuleForBabel = isMod && importingInterop === "babel";
+
+ if (importPosition === "after" && !isMod) {
+ throw new Error(`"importPosition": "after" is only supported in modules`);
+ }
+
+ const builder = new _importBuilder.default(importedSource, this._programScope, this._hub);
+
+ if (importedType === "es6") {
+ if (!isModuleForNode && !isModuleForBabel) {
+ throw new Error("Cannot import an ES6 module from CommonJS");
+ }
+
+ builder.import();
+
+ if (isNamespace) {
+ builder.namespace(nameHint || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.named(name, importName);
+ }
+ } else if (importedType !== "commonjs") {
+ throw new Error(`Unexpected interopType "${importedType}"`);
+ } else if (importedInterop === "babel") {
+ if (isModuleForNode) {
+ name = name !== "default" ? name : importedSource;
+ const es6Default = `${importedSource}$es6Default`;
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(es6Default).var(name || importedSource).wildcardInterop();
+ } else if (isDefault) {
+ if (ensureLiveReference) {
+ builder.default(es6Default).var(name || importedSource).defaultInterop().read("default");
+ } else {
+ builder.default(es6Default).var(name).defaultInterop().prop(importName);
+ }
+ } else if (isNamed) {
+ builder.default(es6Default).read(importName);
+ }
+ } else if (isModuleForBabel) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.namespace(name || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.named(name, importName);
+ }
+ } else {
+ builder.require();
+
+ if (isNamespace) {
+ builder.var(name || importedSource).wildcardInterop();
+ } else if ((isDefault || isNamed) && ensureLiveReference) {
+ if (isDefault) {
+ name = name !== "default" ? name : importedSource;
+ builder.var(name).read(importName);
+ builder.defaultInterop();
+ } else {
+ builder.var(importedSource).read(importName);
+ }
+ } else if (isDefault) {
+ builder.var(name).defaultInterop().prop(importName);
+ } else if (isNamed) {
+ builder.var(name).prop(importName);
+ }
+ }
+ } else if (importedInterop === "compiled") {
+ if (isModuleForNode) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(name || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.default(importedSource).read(name);
+ }
+ } else if (isModuleForBabel) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.namespace(name || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.named(name, importName);
+ }
+ } else {
+ builder.require();
+
+ if (isNamespace) {
+ builder.var(name || importedSource);
+ } else if (isDefault || isNamed) {
+ if (ensureLiveReference) {
+ builder.var(importedSource).read(name);
+ } else {
+ builder.prop(importName).var(name);
+ }
+ }
+ }
+ } else if (importedInterop === "uncompiled") {
+ if (isDefault && ensureLiveReference) {
+ throw new Error("No live reference for commonjs default");
+ }
+
+ if (isModuleForNode) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(name || importedSource);
+ } else if (isDefault) {
+ builder.default(name);
+ } else if (isNamed) {
+ builder.default(importedSource).read(name);
+ }
+ } else if (isModuleForBabel) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(name || importedSource);
+ } else if (isDefault) {
+ builder.default(name);
+ } else if (isNamed) {
+ builder.named(name, importName);
+ }
+ } else {
+ builder.require();
+
+ if (isNamespace) {
+ builder.var(name || importedSource);
+ } else if (isDefault) {
+ builder.var(name);
+ } else if (isNamed) {
+ if (ensureLiveReference) {
+ builder.var(importedSource).read(name);
+ } else {
+ builder.var(name).prop(importName);
+ }
+ }
+ }
+ } else {
+ throw new Error(`Unknown importedInterop "${importedInterop}".`);
+ }
+
+ const {
+ statements,
+ resultName
+ } = builder.done();
+
+ this._insertStatements(statements, importPosition, blockHoist);
+
+ if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") {
+ return sequenceExpression([numericLiteral(0), resultName]);
+ }
+
+ return resultName;
+ }
+
+ _insertStatements(statements, importPosition = "before", blockHoist = 3) {
+ const body = this._programPath.get("body");
+
+ if (importPosition === "after") {
+ for (let i = body.length - 1; i >= 0; i--) {
+ if (body[i].isImportDeclaration()) {
+ body[i].insertAfter(statements);
+ return;
+ }
+ }
+ } else {
+ statements.forEach(node => {
+ node._blockHoist = blockHoist;
+ });
+ const targetPath = body.find(p => {
+ const val = p.node._blockHoist;
+ return Number.isFinite(val) && val < 4;
+ });
+
+ if (targetPath) {
+ targetPath.insertBefore(statements);
+ return;
+ }
+ }
+
+ this._programPath.unshiftContainer("body", statements);
+ }
+
+}
+
+exports.default = ImportInjector;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/index.js
new file mode 100644
index 000000000..a3d7921ca
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/index.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "ImportInjector", {
+ enumerable: true,
+ get: function () {
+ return _importInjector.default;
+ }
+});
+exports.addDefault = addDefault;
+exports.addNamed = addNamed;
+exports.addNamespace = addNamespace;
+exports.addSideEffect = addSideEffect;
+Object.defineProperty(exports, "isModule", {
+ enumerable: true,
+ get: function () {
+ return _isModule.default;
+ }
+});
+
+var _importInjector = require("./import-injector");
+
+var _isModule = require("./is-module");
+
+function addDefault(path, importedSource, opts) {
+ return new _importInjector.default(path).addDefault(importedSource, opts);
+}
+
+function addNamed(path, name, importedSource, opts) {
+ return new _importInjector.default(path).addNamed(name, importedSource, opts);
+}
+
+function addNamespace(path, importedSource, opts) {
+ return new _importInjector.default(path).addNamespace(importedSource, opts);
+}
+
+function addSideEffect(path, importedSource, opts) {
+ return new _importInjector.default(path).addSideEffect(importedSource, opts);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/is-module.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/is-module.js
new file mode 100644
index 000000000..ad9e39954
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/lib/is-module.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isModule;
+
+function isModule(path) {
+ const {
+ sourceType
+ } = path.node;
+
+ if (sourceType !== "module" && sourceType !== "script") {
+ throw path.buildCodeFrameError(`Unknown sourceType "${sourceType}", cannot transform.`);
+ }
+
+ return path.node.sourceType === "module";
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/package.json
new file mode 100644
index 000000000..7814505e6
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-imports/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@babel/helper-module-imports",
+ "version": "7.16.7",
+ "description": "Babel helper functions for inserting module loads",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-module-imports",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-module-imports"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.16.7",
+ "@babel/traverse": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/README.md
new file mode 100644
index 000000000..c7b1a38a9
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-module-transforms
+
+> Babel helper functions for implementing ES6 module transformations
+
+See our website [@babel/helper-module-transforms](https://babeljs.io/docs/en/babel-helper-module-transforms) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-module-transforms
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-module-transforms
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/get-module-name.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/get-module-name.js
new file mode 100644
index 000000000..87c2b8359
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/get-module-name.js
@@ -0,0 +1,54 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getModuleName;
+{
+ const originalGetModuleName = getModuleName;
+
+ exports.default = getModuleName = function getModuleName(rootOpts, pluginOpts) {
+ var _pluginOpts$moduleId, _pluginOpts$moduleIds, _pluginOpts$getModule, _pluginOpts$moduleRoo;
+
+ return originalGetModuleName(rootOpts, {
+ moduleId: (_pluginOpts$moduleId = pluginOpts.moduleId) != null ? _pluginOpts$moduleId : rootOpts.moduleId,
+ moduleIds: (_pluginOpts$moduleIds = pluginOpts.moduleIds) != null ? _pluginOpts$moduleIds : rootOpts.moduleIds,
+ getModuleId: (_pluginOpts$getModule = pluginOpts.getModuleId) != null ? _pluginOpts$getModule : rootOpts.getModuleId,
+ moduleRoot: (_pluginOpts$moduleRoo = pluginOpts.moduleRoot) != null ? _pluginOpts$moduleRoo : rootOpts.moduleRoot
+ });
+ };
+}
+
+function getModuleName(rootOpts, pluginOpts) {
+ const {
+ filename,
+ filenameRelative = filename,
+ sourceRoot = pluginOpts.moduleRoot
+ } = rootOpts;
+ const {
+ moduleId,
+ moduleIds = !!moduleId,
+ getModuleId,
+ moduleRoot = sourceRoot
+ } = pluginOpts;
+ if (!moduleIds) return null;
+
+ if (moduleId != null && !getModuleId) {
+ return moduleId;
+ }
+
+ let moduleName = moduleRoot != null ? moduleRoot + "/" : "";
+
+ if (filenameRelative) {
+ const sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : "";
+ moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.(\w*?)$/, "");
+ }
+
+ moduleName = moduleName.replace(/\\/g, "/");
+
+ if (getModuleId) {
+ return getModuleId(moduleName) || moduleName;
+ } else {
+ return moduleName;
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/index.js
new file mode 100644
index 000000000..aa555182d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/index.js
@@ -0,0 +1,422 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.buildNamespaceInitStatements = buildNamespaceInitStatements;
+exports.ensureStatementsHoisted = ensureStatementsHoisted;
+Object.defineProperty(exports, "getModuleName", {
+ enumerable: true,
+ get: function () {
+ return _getModuleName.default;
+ }
+});
+Object.defineProperty(exports, "hasExports", {
+ enumerable: true,
+ get: function () {
+ return _normalizeAndLoadMetadata.hasExports;
+ }
+});
+Object.defineProperty(exports, "isModule", {
+ enumerable: true,
+ get: function () {
+ return _helperModuleImports.isModule;
+ }
+});
+Object.defineProperty(exports, "isSideEffectImport", {
+ enumerable: true,
+ get: function () {
+ return _normalizeAndLoadMetadata.isSideEffectImport;
+ }
+});
+exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader;
+Object.defineProperty(exports, "rewriteThis", {
+ enumerable: true,
+ get: function () {
+ return _rewriteThis.default;
+ }
+});
+exports.wrapInterop = wrapInterop;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+var _template = require("@babel/template");
+
+var _helperModuleImports = require("@babel/helper-module-imports");
+
+var _rewriteThis = require("./rewrite-this");
+
+var _rewriteLiveReferences = require("./rewrite-live-references");
+
+var _normalizeAndLoadMetadata = require("./normalize-and-load-metadata");
+
+var _getModuleName = require("./get-module-name");
+
+const {
+ booleanLiteral,
+ callExpression,
+ cloneNode,
+ directive,
+ directiveLiteral,
+ expressionStatement,
+ identifier,
+ isIdentifier,
+ memberExpression,
+ stringLiteral,
+ valueToNode,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function rewriteModuleStatementsAndPrepareHeader(path, {
+ loose,
+ exportName,
+ strict,
+ allowTopLevelThis,
+ strictMode,
+ noInterop,
+ importInterop = noInterop ? "none" : "babel",
+ lazy,
+ esNamespaceOnly,
+ constantReexports = loose,
+ enumerableModuleMeta = loose,
+ noIncompleteNsImportDetection
+}) {
+ (0, _normalizeAndLoadMetadata.validateImportInteropOption)(importInterop);
+
+ _assert((0, _helperModuleImports.isModule)(path), "Cannot process module statements in a script");
+
+ path.node.sourceType = "script";
+ const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, {
+ importInterop,
+ initializeReexports: constantReexports,
+ lazy,
+ esNamespaceOnly
+ });
+
+ if (!allowTopLevelThis) {
+ (0, _rewriteThis.default)(path);
+ }
+
+ (0, _rewriteLiveReferences.default)(path, meta);
+
+ if (strictMode !== false) {
+ const hasStrict = path.node.directives.some(directive => {
+ return directive.value.value === "use strict";
+ });
+
+ if (!hasStrict) {
+ path.unshiftContainer("directives", directive(directiveLiteral("use strict")));
+ }
+ }
+
+ const headers = [];
+
+ if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) {
+ headers.push(buildESModuleHeader(meta, enumerableModuleMeta));
+ }
+
+ const nameList = buildExportNameListDeclaration(path, meta);
+
+ if (nameList) {
+ meta.exportNameListName = nameList.name;
+ headers.push(nameList.statement);
+ }
+
+ headers.push(...buildExportInitializationStatements(path, meta, constantReexports, noIncompleteNsImportDetection));
+ return {
+ meta,
+ headers
+ };
+}
+
+function ensureStatementsHoisted(statements) {
+ statements.forEach(header => {
+ header._blockHoist = 3;
+ });
+}
+
+function wrapInterop(programPath, expr, type) {
+ if (type === "none") {
+ return null;
+ }
+
+ if (type === "node-namespace") {
+ return callExpression(programPath.hub.addHelper("interopRequireWildcard"), [expr, booleanLiteral(true)]);
+ } else if (type === "node-default") {
+ return null;
+ }
+
+ let helper;
+
+ if (type === "default") {
+ helper = "interopRequireDefault";
+ } else if (type === "namespace") {
+ helper = "interopRequireWildcard";
+ } else {
+ throw new Error(`Unknown interop: ${type}`);
+ }
+
+ return callExpression(programPath.hub.addHelper(helper), [expr]);
+}
+
+function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports = false) {
+ const statements = [];
+ let srcNamespace = identifier(sourceMetadata.name);
+ if (sourceMetadata.lazy) srcNamespace = callExpression(srcNamespace, []);
+
+ for (const localName of sourceMetadata.importsNamespace) {
+ if (localName === sourceMetadata.name) continue;
+ statements.push(_template.default.statement`var NAME = SOURCE;`({
+ NAME: localName,
+ SOURCE: cloneNode(srcNamespace)
+ }));
+ }
+
+ if (constantReexports) {
+ statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, true));
+ }
+
+ for (const exportName of sourceMetadata.reexportNamespace) {
+ statements.push((sourceMetadata.lazy ? _template.default.statement`
+ Object.defineProperty(EXPORTS, "NAME", {
+ enumerable: true,
+ get: function() {
+ return NAMESPACE;
+ }
+ });
+ ` : _template.default.statement`EXPORTS.NAME = NAMESPACE;`)({
+ EXPORTS: metadata.exportName,
+ NAME: exportName,
+ NAMESPACE: cloneNode(srcNamespace)
+ }));
+ }
+
+ if (sourceMetadata.reexportAll) {
+ const statement = buildNamespaceReexport(metadata, cloneNode(srcNamespace), constantReexports);
+ statement.loc = sourceMetadata.reexportAll.loc;
+ statements.push(statement);
+ }
+
+ return statements;
+}
+
+const ReexportTemplate = {
+ constant: _template.default.statement`EXPORTS.EXPORT_NAME = NAMESPACE_IMPORT;`,
+ constantComputed: _template.default.statement`EXPORTS["EXPORT_NAME"] = NAMESPACE_IMPORT;`,
+ spec: _template.default.statement`
+ Object.defineProperty(EXPORTS, "EXPORT_NAME", {
+ enumerable: true,
+ get: function() {
+ return NAMESPACE_IMPORT;
+ },
+ });
+ `
+};
+
+const buildReexportsFromMeta = (meta, metadata, constantReexports) => {
+ const namespace = metadata.lazy ? callExpression(identifier(metadata.name), []) : identifier(metadata.name);
+ const {
+ stringSpecifiers
+ } = meta;
+ return Array.from(metadata.reexports, ([exportName, importName]) => {
+ let NAMESPACE_IMPORT = cloneNode(namespace);
+
+ if (importName === "default" && metadata.interop === "node-default") {} else if (stringSpecifiers.has(importName)) {
+ NAMESPACE_IMPORT = memberExpression(NAMESPACE_IMPORT, stringLiteral(importName), true);
+ } else {
+ NAMESPACE_IMPORT = memberExpression(NAMESPACE_IMPORT, identifier(importName));
+ }
+
+ const astNodes = {
+ EXPORTS: meta.exportName,
+ EXPORT_NAME: exportName,
+ NAMESPACE_IMPORT
+ };
+
+ if (constantReexports || isIdentifier(NAMESPACE_IMPORT)) {
+ if (stringSpecifiers.has(exportName)) {
+ return ReexportTemplate.constantComputed(astNodes);
+ } else {
+ return ReexportTemplate.constant(astNodes);
+ }
+ } else {
+ return ReexportTemplate.spec(astNodes);
+ }
+ });
+};
+
+function buildESModuleHeader(metadata, enumerableModuleMeta = false) {
+ return (enumerableModuleMeta ? _template.default.statement`
+ EXPORTS.__esModule = true;
+ ` : _template.default.statement`
+ Object.defineProperty(EXPORTS, "__esModule", {
+ value: true,
+ });
+ `)({
+ EXPORTS: metadata.exportName
+ });
+}
+
+function buildNamespaceReexport(metadata, namespace, constantReexports) {
+ return (constantReexports ? _template.default.statement`
+ Object.keys(NAMESPACE).forEach(function(key) {
+ if (key === "default" || key === "__esModule") return;
+ VERIFY_NAME_LIST;
+ if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
+
+ EXPORTS[key] = NAMESPACE[key];
+ });
+ ` : _template.default.statement`
+ Object.keys(NAMESPACE).forEach(function(key) {
+ if (key === "default" || key === "__esModule") return;
+ VERIFY_NAME_LIST;
+ if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
+
+ Object.defineProperty(EXPORTS, key, {
+ enumerable: true,
+ get: function() {
+ return NAMESPACE[key];
+ },
+ });
+ });
+ `)({
+ NAMESPACE: namespace,
+ EXPORTS: metadata.exportName,
+ VERIFY_NAME_LIST: metadata.exportNameListName ? (0, _template.default)`
+ if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return;
+ `({
+ EXPORTS_LIST: metadata.exportNameListName
+ }) : null
+ });
+}
+
+function buildExportNameListDeclaration(programPath, metadata) {
+ const exportedVars = Object.create(null);
+
+ for (const data of metadata.local.values()) {
+ for (const name of data.names) {
+ exportedVars[name] = true;
+ }
+ }
+
+ let hasReexport = false;
+
+ for (const data of metadata.source.values()) {
+ for (const exportName of data.reexports.keys()) {
+ exportedVars[exportName] = true;
+ }
+
+ for (const exportName of data.reexportNamespace) {
+ exportedVars[exportName] = true;
+ }
+
+ hasReexport = hasReexport || !!data.reexportAll;
+ }
+
+ if (!hasReexport || Object.keys(exportedVars).length === 0) return null;
+ const name = programPath.scope.generateUidIdentifier("exportNames");
+ delete exportedVars.default;
+ return {
+ name: name.name,
+ statement: variableDeclaration("var", [variableDeclarator(name, valueToNode(exportedVars))])
+ };
+}
+
+function buildExportInitializationStatements(programPath, metadata, constantReexports = false, noIncompleteNsImportDetection = false) {
+ const initStatements = [];
+
+ for (const [localName, data] of metadata.local) {
+ if (data.kind === "import") {} else if (data.kind === "hoisted") {
+ initStatements.push([data.names[0], buildInitStatement(metadata, data.names, identifier(localName))]);
+ } else if (!noIncompleteNsImportDetection) {
+ for (const exportName of data.names) {
+ initStatements.push([exportName, null]);
+ }
+ }
+ }
+
+ for (const data of metadata.source.values()) {
+ if (!constantReexports) {
+ const reexportsStatements = buildReexportsFromMeta(metadata, data, false);
+ const reexports = [...data.reexports.keys()];
+
+ for (let i = 0; i < reexportsStatements.length; i++) {
+ initStatements.push([reexports[i], reexportsStatements[i]]);
+ }
+ }
+
+ if (!noIncompleteNsImportDetection) {
+ for (const exportName of data.reexportNamespace) {
+ initStatements.push([exportName, null]);
+ }
+ }
+ }
+
+ initStatements.sort(([a], [b]) => {
+ if (a < b) return -1;
+ if (b < a) return 1;
+ return 0;
+ });
+ const results = [];
+
+ if (noIncompleteNsImportDetection) {
+ for (const [, initStatement] of initStatements) {
+ results.push(initStatement);
+ }
+ } else {
+ const chunkSize = 100;
+
+ for (let i = 0; i < initStatements.length; i += chunkSize) {
+ let uninitializedExportNames = [];
+
+ for (let j = 0; j < chunkSize && i + j < initStatements.length; j++) {
+ const [exportName, initStatement] = initStatements[i + j];
+
+ if (initStatement !== null) {
+ if (uninitializedExportNames.length > 0) {
+ results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
+ uninitializedExportNames = [];
+ }
+
+ results.push(initStatement);
+ } else {
+ uninitializedExportNames.push(exportName);
+ }
+ }
+
+ if (uninitializedExportNames.length > 0) {
+ results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
+ }
+ }
+ }
+
+ return results;
+}
+
+const InitTemplate = {
+ computed: _template.default.expression`EXPORTS["NAME"] = VALUE`,
+ default: _template.default.expression`EXPORTS.NAME = VALUE`
+};
+
+function buildInitStatement(metadata, exportNames, initExpr) {
+ const {
+ stringSpecifiers,
+ exportName: EXPORTS
+ } = metadata;
+ return expressionStatement(exportNames.reduce((acc, exportName) => {
+ const params = {
+ EXPORTS,
+ NAME: exportName,
+ VALUE: acc
+ };
+
+ if (stringSpecifiers.has(exportName)) {
+ return InitTemplate.computed(params);
+ } else {
+ return InitTemplate.default(params);
+ }
+ }, initExpr));
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js
new file mode 100644
index 000000000..f98ee95e0
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js
@@ -0,0 +1,398 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = normalizeModuleAndLoadMetadata;
+exports.hasExports = hasExports;
+exports.isSideEffectImport = isSideEffectImport;
+exports.validateImportInteropOption = validateImportInteropOption;
+
+var _path = require("path");
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+var _helperSplitExportDeclaration = require("@babel/helper-split-export-declaration");
+
+function hasExports(metadata) {
+ return metadata.hasExports;
+}
+
+function isSideEffectImport(source) {
+ return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll;
+}
+
+function validateImportInteropOption(importInterop) {
+ if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") {
+ throw new Error(`.importInterop must be one of "none", "babel", "node", or a function returning one of those values (received ${importInterop}).`);
+ }
+
+ return importInterop;
+}
+
+function resolveImportInterop(importInterop, source) {
+ if (typeof importInterop === "function") {
+ return validateImportInteropOption(importInterop(source));
+ }
+
+ return importInterop;
+}
+
+function normalizeModuleAndLoadMetadata(programPath, exportName, {
+ importInterop,
+ initializeReexports = false,
+ lazy = false,
+ esNamespaceOnly = false
+}) {
+ if (!exportName) {
+ exportName = programPath.scope.generateUidIdentifier("exports").name;
+ }
+
+ const stringSpecifiers = new Set();
+ nameAnonymousExports(programPath);
+ const {
+ local,
+ source,
+ hasExports
+ } = getModuleMetadata(programPath, {
+ initializeReexports,
+ lazy
+ }, stringSpecifiers);
+ removeModuleDeclarations(programPath);
+
+ for (const [, metadata] of source) {
+ if (metadata.importsNamespace.size > 0) {
+ metadata.name = metadata.importsNamespace.values().next().value;
+ }
+
+ const resolvedInterop = resolveImportInterop(importInterop, metadata.source);
+
+ if (resolvedInterop === "none") {
+ metadata.interop = "none";
+ } else if (resolvedInterop === "node" && metadata.interop === "namespace") {
+ metadata.interop = "node-namespace";
+ } else if (resolvedInterop === "node" && metadata.interop === "default") {
+ metadata.interop = "node-default";
+ } else if (esNamespaceOnly && metadata.interop === "namespace") {
+ metadata.interop = "default";
+ }
+ }
+
+ return {
+ exportName,
+ exportNameListName: null,
+ hasExports,
+ local,
+ source,
+ stringSpecifiers
+ };
+}
+
+function getExportSpecifierName(path, stringSpecifiers) {
+ if (path.isIdentifier()) {
+ return path.node.name;
+ } else if (path.isStringLiteral()) {
+ const stringValue = path.node.value;
+
+ if (!(0, _helperValidatorIdentifier.isIdentifierName)(stringValue)) {
+ stringSpecifiers.add(stringValue);
+ }
+
+ return stringValue;
+ } else {
+ throw new Error(`Expected export specifier to be either Identifier or StringLiteral, got ${path.node.type}`);
+ }
+}
+
+function assertExportSpecifier(path) {
+ if (path.isExportSpecifier()) {
+ return;
+ } else if (path.isExportNamespaceSpecifier()) {
+ throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-proposal-export-namespace-from`.");
+ } else {
+ throw path.buildCodeFrameError("Unexpected export specifier type");
+ }
+}
+
+function getModuleMetadata(programPath, {
+ lazy,
+ initializeReexports
+}, stringSpecifiers) {
+ const localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers);
+ const sourceData = new Map();
+
+ const getData = sourceNode => {
+ const source = sourceNode.value;
+ let data = sourceData.get(source);
+
+ if (!data) {
+ data = {
+ name: programPath.scope.generateUidIdentifier((0, _path.basename)(source, (0, _path.extname)(source))).name,
+ interop: "none",
+ loc: null,
+ imports: new Map(),
+ importsNamespace: new Set(),
+ reexports: new Map(),
+ reexportNamespace: new Set(),
+ reexportAll: null,
+ lazy: false,
+ source
+ };
+ sourceData.set(source, data);
+ }
+
+ return data;
+ };
+
+ let hasExports = false;
+ programPath.get("body").forEach(child => {
+ if (child.isImportDeclaration()) {
+ const data = getData(child.node.source);
+ if (!data.loc) data.loc = child.node.loc;
+ child.get("specifiers").forEach(spec => {
+ if (spec.isImportDefaultSpecifier()) {
+ const localName = spec.get("local").node.name;
+ data.imports.set(localName, "default");
+ const reexport = localData.get(localName);
+
+ if (reexport) {
+ localData.delete(localName);
+ reexport.names.forEach(name => {
+ data.reexports.set(name, "default");
+ });
+ }
+ } else if (spec.isImportNamespaceSpecifier()) {
+ const localName = spec.get("local").node.name;
+ data.importsNamespace.add(localName);
+ const reexport = localData.get(localName);
+
+ if (reexport) {
+ localData.delete(localName);
+ reexport.names.forEach(name => {
+ data.reexportNamespace.add(name);
+ });
+ }
+ } else if (spec.isImportSpecifier()) {
+ const importName = getExportSpecifierName(spec.get("imported"), stringSpecifiers);
+ const localName = spec.get("local").node.name;
+ data.imports.set(localName, importName);
+ const reexport = localData.get(localName);
+
+ if (reexport) {
+ localData.delete(localName);
+ reexport.names.forEach(name => {
+ data.reexports.set(name, importName);
+ });
+ }
+ }
+ });
+ } else if (child.isExportAllDeclaration()) {
+ hasExports = true;
+ const data = getData(child.node.source);
+ if (!data.loc) data.loc = child.node.loc;
+ data.reexportAll = {
+ loc: child.node.loc
+ };
+ } else if (child.isExportNamedDeclaration() && child.node.source) {
+ hasExports = true;
+ const data = getData(child.node.source);
+ if (!data.loc) data.loc = child.node.loc;
+ child.get("specifiers").forEach(spec => {
+ assertExportSpecifier(spec);
+ const importName = getExportSpecifierName(spec.get("local"), stringSpecifiers);
+ const exportName = getExportSpecifierName(spec.get("exported"), stringSpecifiers);
+ data.reexports.set(exportName, importName);
+
+ if (exportName === "__esModule") {
+ throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".');
+ }
+ });
+ } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) {
+ hasExports = true;
+ }
+ });
+
+ for (const metadata of sourceData.values()) {
+ let needsDefault = false;
+ let needsNamed = false;
+
+ if (metadata.importsNamespace.size > 0) {
+ needsDefault = true;
+ needsNamed = true;
+ }
+
+ if (metadata.reexportAll) {
+ needsNamed = true;
+ }
+
+ for (const importName of metadata.imports.values()) {
+ if (importName === "default") needsDefault = true;else needsNamed = true;
+ }
+
+ for (const importName of metadata.reexports.values()) {
+ if (importName === "default") needsDefault = true;else needsNamed = true;
+ }
+
+ if (needsDefault && needsNamed) {
+ metadata.interop = "namespace";
+ } else if (needsDefault) {
+ metadata.interop = "default";
+ }
+ }
+
+ for (const [source, metadata] of sourceData) {
+ if (lazy !== false && !(isSideEffectImport(metadata) || metadata.reexportAll)) {
+ if (lazy === true) {
+ metadata.lazy = !/\./.test(source);
+ } else if (Array.isArray(lazy)) {
+ metadata.lazy = lazy.indexOf(source) !== -1;
+ } else if (typeof lazy === "function") {
+ metadata.lazy = lazy(source);
+ } else {
+ throw new Error(`.lazy must be a boolean, string array, or function`);
+ }
+ }
+ }
+
+ return {
+ hasExports,
+ local: localData,
+ source: sourceData
+ };
+}
+
+function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) {
+ const bindingKindLookup = new Map();
+ programPath.get("body").forEach(child => {
+ let kind;
+
+ if (child.isImportDeclaration()) {
+ kind = "import";
+ } else {
+ if (child.isExportDefaultDeclaration()) child = child.get("declaration");
+
+ if (child.isExportNamedDeclaration()) {
+ if (child.node.declaration) {
+ child = child.get("declaration");
+ } else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) {
+ child.get("specifiers").forEach(spec => {
+ assertExportSpecifier(spec);
+ bindingKindLookup.set(spec.get("local").node.name, "block");
+ });
+ return;
+ }
+ }
+
+ if (child.isFunctionDeclaration()) {
+ kind = "hoisted";
+ } else if (child.isClassDeclaration()) {
+ kind = "block";
+ } else if (child.isVariableDeclaration({
+ kind: "var"
+ })) {
+ kind = "var";
+ } else if (child.isVariableDeclaration()) {
+ kind = "block";
+ } else {
+ return;
+ }
+ }
+
+ Object.keys(child.getOuterBindingIdentifiers()).forEach(name => {
+ bindingKindLookup.set(name, kind);
+ });
+ });
+ const localMetadata = new Map();
+
+ const getLocalMetadata = idPath => {
+ const localName = idPath.node.name;
+ let metadata = localMetadata.get(localName);
+
+ if (!metadata) {
+ const kind = bindingKindLookup.get(localName);
+
+ if (kind === undefined) {
+ throw idPath.buildCodeFrameError(`Exporting local "${localName}", which is not declared.`);
+ }
+
+ metadata = {
+ names: [],
+ kind
+ };
+ localMetadata.set(localName, metadata);
+ }
+
+ return metadata;
+ };
+
+ programPath.get("body").forEach(child => {
+ if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) {
+ if (child.node.declaration) {
+ const declaration = child.get("declaration");
+ const ids = declaration.getOuterBindingIdentifierPaths();
+ Object.keys(ids).forEach(name => {
+ if (name === "__esModule") {
+ throw declaration.buildCodeFrameError('Illegal export "__esModule".');
+ }
+
+ getLocalMetadata(ids[name]).names.push(name);
+ });
+ } else {
+ child.get("specifiers").forEach(spec => {
+ const local = spec.get("local");
+ const exported = spec.get("exported");
+ const localMetadata = getLocalMetadata(local);
+ const exportName = getExportSpecifierName(exported, stringSpecifiers);
+
+ if (exportName === "__esModule") {
+ throw exported.buildCodeFrameError('Illegal export "__esModule".');
+ }
+
+ localMetadata.names.push(exportName);
+ });
+ }
+ } else if (child.isExportDefaultDeclaration()) {
+ const declaration = child.get("declaration");
+
+ if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
+ getLocalMetadata(declaration.get("id")).names.push("default");
+ } else {
+ throw declaration.buildCodeFrameError("Unexpected default expression export.");
+ }
+ }
+ });
+ return localMetadata;
+}
+
+function nameAnonymousExports(programPath) {
+ programPath.get("body").forEach(child => {
+ if (!child.isExportDefaultDeclaration()) return;
+ (0, _helperSplitExportDeclaration.default)(child);
+ });
+}
+
+function removeModuleDeclarations(programPath) {
+ programPath.get("body").forEach(child => {
+ if (child.isImportDeclaration()) {
+ child.remove();
+ } else if (child.isExportNamedDeclaration()) {
+ if (child.node.declaration) {
+ child.node.declaration._blockHoist = child.node._blockHoist;
+ child.replaceWith(child.node.declaration);
+ } else {
+ child.remove();
+ }
+ } else if (child.isExportDefaultDeclaration()) {
+ const declaration = child.get("declaration");
+
+ if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
+ declaration._blockHoist = child.node._blockHoist;
+ child.replaceWith(declaration);
+ } else {
+ throw declaration.buildCodeFrameError("Unexpected default expression export.");
+ }
+ } else if (child.isExportAllDeclaration()) {
+ child.remove();
+ }
+ });
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js
new file mode 100644
index 000000000..aba8a6490
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js
@@ -0,0 +1,401 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = rewriteLiveReferences;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+var _template = require("@babel/template");
+
+var _helperSimpleAccess = require("@babel/helper-simple-access");
+
+const {
+ assignmentExpression,
+ callExpression,
+ cloneNode,
+ expressionStatement,
+ getOuterBindingIdentifiers,
+ identifier,
+ isMemberExpression,
+ isVariableDeclaration,
+ jsxIdentifier,
+ jsxMemberExpression,
+ memberExpression,
+ numericLiteral,
+ sequenceExpression,
+ stringLiteral,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function isInType(path) {
+ do {
+ switch (path.parent.type) {
+ case "TSTypeAnnotation":
+ case "TSTypeAliasDeclaration":
+ case "TSTypeReference":
+ case "TypeAnnotation":
+ case "TypeAlias":
+ return true;
+
+ case "ExportSpecifier":
+ return path.parentPath.parent.exportKind === "type";
+
+ default:
+ if (path.parentPath.isStatement() || path.parentPath.isExpression()) {
+ return false;
+ }
+
+ }
+ } while (path = path.parentPath);
+}
+
+function rewriteLiveReferences(programPath, metadata) {
+ const imported = new Map();
+ const exported = new Map();
+
+ const requeueInParent = path => {
+ programPath.requeue(path);
+ };
+
+ for (const [source, data] of metadata.source) {
+ for (const [localName, importName] of data.imports) {
+ imported.set(localName, [source, importName, null]);
+ }
+
+ for (const localName of data.importsNamespace) {
+ imported.set(localName, [source, null, localName]);
+ }
+ }
+
+ for (const [local, data] of metadata.local) {
+ let exportMeta = exported.get(local);
+
+ if (!exportMeta) {
+ exportMeta = [];
+ exported.set(local, exportMeta);
+ }
+
+ exportMeta.push(...data.names);
+ }
+
+ const rewriteBindingInitVisitorState = {
+ metadata,
+ requeueInParent,
+ scope: programPath.scope,
+ exported
+ };
+ programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState);
+ (0, _helperSimpleAccess.default)(programPath, new Set([...Array.from(imported.keys()), ...Array.from(exported.keys())]), false);
+ const rewriteReferencesVisitorState = {
+ seen: new WeakSet(),
+ metadata,
+ requeueInParent,
+ scope: programPath.scope,
+ imported,
+ exported,
+ buildImportReference: ([source, importName, localName], identNode) => {
+ const meta = metadata.source.get(source);
+
+ if (localName) {
+ if (meta.lazy) identNode = callExpression(identNode, []);
+ return identNode;
+ }
+
+ let namespace = identifier(meta.name);
+ if (meta.lazy) namespace = callExpression(namespace, []);
+
+ if (importName === "default" && meta.interop === "node-default") {
+ return namespace;
+ }
+
+ const computed = metadata.stringSpecifiers.has(importName);
+ return memberExpression(namespace, computed ? stringLiteral(importName) : identifier(importName), computed);
+ }
+ };
+ programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState);
+}
+
+const rewriteBindingInitVisitor = {
+ Scope(path) {
+ path.skip();
+ },
+
+ ClassDeclaration(path) {
+ const {
+ requeueInParent,
+ exported,
+ metadata
+ } = this;
+ const {
+ id
+ } = path.node;
+ if (!id) throw new Error("Expected class to have a name");
+ const localName = id.name;
+ const exportNames = exported.get(localName) || [];
+
+ if (exportNames.length > 0) {
+ const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName)));
+ statement._blockHoist = path.node._blockHoist;
+ requeueInParent(path.insertAfter(statement)[0]);
+ }
+ },
+
+ VariableDeclaration(path) {
+ const {
+ requeueInParent,
+ exported,
+ metadata
+ } = this;
+ Object.keys(path.getOuterBindingIdentifiers()).forEach(localName => {
+ const exportNames = exported.get(localName) || [];
+
+ if (exportNames.length > 0) {
+ const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName)));
+ statement._blockHoist = path.node._blockHoist;
+ requeueInParent(path.insertAfter(statement)[0]);
+ }
+ });
+ }
+
+};
+
+const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr) => {
+ return (exportNames || []).reduce((expr, exportName) => {
+ const {
+ stringSpecifiers
+ } = metadata;
+ const computed = stringSpecifiers.has(exportName);
+ return assignmentExpression("=", memberExpression(identifier(metadata.exportName), computed ? stringLiteral(exportName) : identifier(exportName), computed), expr);
+ }, localExpr);
+};
+
+const buildImportThrow = localName => {
+ return _template.default.expression.ast`
+ (function() {
+ throw new Error('"' + '${localName}' + '" is read-only.');
+ })()
+ `;
+};
+
+const rewriteReferencesVisitor = {
+ ReferencedIdentifier(path) {
+ const {
+ seen,
+ buildImportReference,
+ scope,
+ imported,
+ requeueInParent
+ } = this;
+ if (seen.has(path.node)) return;
+ seen.add(path.node);
+ const localName = path.node.name;
+ const importData = imported.get(localName);
+
+ if (importData) {
+ if (isInType(path)) {
+ throw path.buildCodeFrameError(`Cannot transform the imported binding "${localName}" since it's also used in a type annotation. ` + `Please strip type annotations using @babel/preset-typescript or @babel/preset-flow.`);
+ }
+
+ const localBinding = path.scope.getBinding(localName);
+ const rootBinding = scope.getBinding(localName);
+ if (rootBinding !== localBinding) return;
+ const ref = buildImportReference(importData, path.node);
+ ref.loc = path.node.loc;
+
+ if ((path.parentPath.isCallExpression({
+ callee: path.node
+ }) || path.parentPath.isOptionalCallExpression({
+ callee: path.node
+ }) || path.parentPath.isTaggedTemplateExpression({
+ tag: path.node
+ })) && isMemberExpression(ref)) {
+ path.replaceWith(sequenceExpression([numericLiteral(0), ref]));
+ } else if (path.isJSXIdentifier() && isMemberExpression(ref)) {
+ const {
+ object,
+ property
+ } = ref;
+ path.replaceWith(jsxMemberExpression(jsxIdentifier(object.name), jsxIdentifier(property.name)));
+ } else {
+ path.replaceWith(ref);
+ }
+
+ requeueInParent(path);
+ path.skip();
+ }
+ },
+
+ UpdateExpression(path) {
+ const {
+ scope,
+ seen,
+ imported,
+ exported,
+ requeueInParent,
+ buildImportReference
+ } = this;
+ if (seen.has(path.node)) return;
+ seen.add(path.node);
+ const arg = path.get("argument");
+ if (arg.isMemberExpression()) return;
+ const update = path.node;
+
+ if (arg.isIdentifier()) {
+ const localName = arg.node.name;
+
+ if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
+ return;
+ }
+
+ const exportedNames = exported.get(localName);
+ const importData = imported.get(localName);
+
+ if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) {
+ if (importData) {
+ path.replaceWith(assignmentExpression(update.operator[0] + "=", buildImportReference(importData, arg.node), buildImportThrow(localName)));
+ } else if (update.prefix) {
+ path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, cloneNode(update)));
+ } else {
+ const ref = scope.generateDeclaredUidIdentifier(localName);
+ path.replaceWith(sequenceExpression([assignmentExpression("=", cloneNode(ref), cloneNode(update)), buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier(localName)), cloneNode(ref)]));
+ }
+ }
+ }
+
+ requeueInParent(path);
+ path.skip();
+ },
+
+ AssignmentExpression: {
+ exit(path) {
+ const {
+ scope,
+ seen,
+ imported,
+ exported,
+ requeueInParent,
+ buildImportReference
+ } = this;
+ if (seen.has(path.node)) return;
+ seen.add(path.node);
+ const left = path.get("left");
+ if (left.isMemberExpression()) return;
+
+ if (left.isIdentifier()) {
+ const localName = left.node.name;
+
+ if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
+ return;
+ }
+
+ const exportedNames = exported.get(localName);
+ const importData = imported.get(localName);
+
+ if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) {
+ _assert(path.node.operator === "=", "Path was not simplified");
+
+ const assignment = path.node;
+
+ if (importData) {
+ assignment.left = buildImportReference(importData, assignment.left);
+ assignment.right = sequenceExpression([assignment.right, buildImportThrow(localName)]);
+ }
+
+ path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment));
+ requeueInParent(path);
+ }
+ } else {
+ const ids = left.getOuterBindingIdentifiers();
+ const programScopeIds = Object.keys(ids).filter(localName => scope.getBinding(localName) === path.scope.getBinding(localName));
+ const id = programScopeIds.find(localName => imported.has(localName));
+
+ if (id) {
+ path.node.right = sequenceExpression([path.node.right, buildImportThrow(id)]);
+ }
+
+ const items = [];
+ programScopeIds.forEach(localName => {
+ const exportedNames = exported.get(localName) || [];
+
+ if (exportedNames.length > 0) {
+ items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier(localName)));
+ }
+ });
+
+ if (items.length > 0) {
+ let node = sequenceExpression(items);
+
+ if (path.parentPath.isExpressionStatement()) {
+ node = expressionStatement(node);
+ node._blockHoist = path.parentPath.node._blockHoist;
+ }
+
+ const statement = path.insertAfter(node)[0];
+ requeueInParent(statement);
+ }
+ }
+ }
+
+ },
+
+ "ForOfStatement|ForInStatement"(path) {
+ const {
+ scope,
+ node
+ } = path;
+ const {
+ left
+ } = node;
+ const {
+ exported,
+ imported,
+ scope: programScope
+ } = this;
+
+ if (!isVariableDeclaration(left)) {
+ let didTransformExport = false,
+ importConstViolationName;
+ const loopBodyScope = path.get("body").scope;
+
+ for (const name of Object.keys(getOuterBindingIdentifiers(left))) {
+ if (programScope.getBinding(name) === scope.getBinding(name)) {
+ if (exported.has(name)) {
+ didTransformExport = true;
+
+ if (loopBodyScope.hasOwnBinding(name)) {
+ loopBodyScope.rename(name);
+ }
+ }
+
+ if (imported.has(name) && !importConstViolationName) {
+ importConstViolationName = name;
+ }
+ }
+ }
+
+ if (!didTransformExport && !importConstViolationName) {
+ return;
+ }
+
+ path.ensureBlock();
+ const bodyPath = path.get("body");
+ const newLoopId = scope.generateUidIdentifierBasedOnNode(left);
+ path.get("left").replaceWith(variableDeclaration("let", [variableDeclarator(cloneNode(newLoopId))]));
+ scope.registerDeclaration(path.get("left"));
+
+ if (didTransformExport) {
+ bodyPath.unshiftContainer("body", expressionStatement(assignmentExpression("=", left, newLoopId)));
+ }
+
+ if (importConstViolationName) {
+ bodyPath.unshiftContainer("body", expressionStatement(buildImportThrow(importConstViolationName)));
+ }
+ }
+ }
+
+};
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js
new file mode 100644
index 000000000..91655399a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = rewriteThis;
+
+var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor");
+
+var _traverse = require("@babel/traverse");
+
+var _t = require("@babel/types");
+
+const {
+ numericLiteral,
+ unaryExpression
+} = _t;
+
+function rewriteThis(programPath) {
+ (0, _traverse.default)(programPath.node, Object.assign({}, rewriteThisVisitor, {
+ noScope: true
+ }));
+}
+
+const rewriteThisVisitor = _traverse.default.visitors.merge([_helperEnvironmentVisitor.default, {
+ ThisExpression(path) {
+ path.replaceWith(unaryExpression("void", numericLiteral(0), true));
+ }
+
+}]);
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/package.json
new file mode 100644
index 000000000..67de31dcb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-module-transforms/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@babel/helper-module-transforms",
+ "version": "7.17.7",
+ "description": "Babel helper functions for implementing ES6 module transformations",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-module-transforms",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-module-transforms"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-simple-access": "^7.17.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.3",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/README.md
new file mode 100644
index 000000000..c17852d3a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-plugin-utils
+
+> General utilities for plugins to use
+
+See our website [@babel/helper-plugin-utils](https://babeljs.io/docs/en/babel-helper-plugin-utils) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-plugin-utils
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-plugin-utils
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/lib/index.js
new file mode 100644
index 000000000..0ba1be022
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/lib/index.js
@@ -0,0 +1,90 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.declare = declare;
+
+function declare(builder) {
+ return (api, options, dirname) => {
+ var _clonedApi2;
+
+ let clonedApi;
+
+ for (const name of Object.keys(apiPolyfills)) {
+ var _clonedApi;
+
+ if (api[name]) continue;
+ clonedApi = (_clonedApi = clonedApi) != null ? _clonedApi : copyApiObject(api);
+ clonedApi[name] = apiPolyfills[name](clonedApi);
+ }
+
+ return builder((_clonedApi2 = clonedApi) != null ? _clonedApi2 : api, options || {}, dirname);
+ };
+}
+
+const apiPolyfills = {
+ assertVersion: api => range => {
+ throwVersionError(range, api.version);
+ },
+ targets: () => () => {
+ return {};
+ },
+ assumption: () => () => {}
+};
+
+function copyApiObject(api) {
+ let proto = null;
+
+ if (typeof api.version === "string" && /^7\./.test(api.version)) {
+ proto = Object.getPrototypeOf(api);
+
+ if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) {
+ proto = null;
+ }
+ }
+
+ return Object.assign({}, proto, api);
+}
+
+function has(obj, key) {
+ return Object.prototype.hasOwnProperty.call(obj, key);
+}
+
+function throwVersionError(range, version) {
+ if (typeof range === "number") {
+ if (!Number.isInteger(range)) {
+ throw new Error("Expected string or integer value.");
+ }
+
+ range = `^${range}.0.0-0`;
+ }
+
+ if (typeof range !== "string") {
+ throw new Error("Expected string or integer value.");
+ }
+
+ const limit = Error.stackTraceLimit;
+
+ if (typeof limit === "number" && limit < 25) {
+ Error.stackTraceLimit = 25;
+ }
+
+ let err;
+
+ if (version.slice(0, 2) === "7.") {
+ err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`);
+ } else {
+ err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`);
+ }
+
+ if (typeof limit === "number") {
+ Error.stackTraceLimit = limit;
+ }
+
+ throw Object.assign(err, {
+ code: "BABEL_VERSION_UNSUPPORTED",
+ version,
+ range
+ });
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/package.json
new file mode 100644
index 000000000..740d52ac3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-plugin-utils/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "@babel/helper-plugin-utils",
+ "version": "7.16.7",
+ "description": "General utilities for plugins to use",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-plugin-utils",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-plugin-utils"
+ },
+ "main": "./lib/index.js",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/README.md
new file mode 100644
index 000000000..01aa70a6b
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-simple-access
+
+> Babel helper for ensuring that access to a given value is performed through simple accesses
+
+See our website [@babel/helper-simple-access](https://babeljs.io/docs/en/babel-helper-simple-access) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-simple-access
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-simple-access
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/lib/index.js
new file mode 100644
index 000000000..0f19aea79
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/lib/index.js
@@ -0,0 +1,100 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = simplifyAccess;
+
+var _t = require("@babel/types");
+
+const {
+ LOGICAL_OPERATORS,
+ assignmentExpression,
+ binaryExpression,
+ cloneNode,
+ identifier,
+ logicalExpression,
+ numericLiteral,
+ sequenceExpression,
+ unaryExpression
+} = _t;
+
+function simplifyAccess(path, bindingNames, includeUpdateExpression = true) {
+ path.traverse(simpleAssignmentVisitor, {
+ scope: path.scope,
+ bindingNames,
+ seen: new WeakSet(),
+ includeUpdateExpression
+ });
+}
+
+const simpleAssignmentVisitor = {
+ UpdateExpression: {
+ exit(path) {
+ const {
+ scope,
+ bindingNames,
+ includeUpdateExpression
+ } = this;
+
+ if (!includeUpdateExpression) {
+ return;
+ }
+
+ const arg = path.get("argument");
+ if (!arg.isIdentifier()) return;
+ const localName = arg.node.name;
+ if (!bindingNames.has(localName)) return;
+
+ if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
+ return;
+ }
+
+ if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) {
+ const operator = path.node.operator == "++" ? "+=" : "-=";
+ path.replaceWith(assignmentExpression(operator, arg.node, numericLiteral(1)));
+ } else if (path.node.prefix) {
+ path.replaceWith(assignmentExpression("=", identifier(localName), binaryExpression(path.node.operator[0], unaryExpression("+", arg.node), numericLiteral(1))));
+ } else {
+ const old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old");
+ const varName = old.name;
+ path.scope.push({
+ id: old
+ });
+ const binary = binaryExpression(path.node.operator[0], identifier(varName), numericLiteral(1));
+ path.replaceWith(sequenceExpression([assignmentExpression("=", identifier(varName), unaryExpression("+", arg.node)), assignmentExpression("=", cloneNode(arg.node), binary), identifier(varName)]));
+ }
+ }
+
+ },
+ AssignmentExpression: {
+ exit(path) {
+ const {
+ scope,
+ seen,
+ bindingNames
+ } = this;
+ if (path.node.operator === "=") return;
+ if (seen.has(path.node)) return;
+ seen.add(path.node);
+ const left = path.get("left");
+ if (!left.isIdentifier()) return;
+ const localName = left.node.name;
+ if (!bindingNames.has(localName)) return;
+
+ if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
+ return;
+ }
+
+ const operator = path.node.operator.slice(0, -1);
+
+ if (LOGICAL_OPERATORS.includes(operator)) {
+ path.replaceWith(logicalExpression(operator, path.node.left, assignmentExpression("=", cloneNode(path.node.left), path.node.right)));
+ } else {
+ path.node.right = binaryExpression(operator, cloneNode(path.node.left), path.node.right);
+ path.node.operator = "=";
+ }
+ }
+
+ }
+};
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/package.json
new file mode 100644
index 000000000..a44a37dab
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-simple-access/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@babel/helper-simple-access",
+ "version": "7.17.7",
+ "description": "Babel helper for ensuring that access to a given value is performed through simple accesses",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-simple-access",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-simple-access"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.17.0"
+ },
+ "devDependencies": {
+ "@babel/traverse": "^7.17.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/README.md
new file mode 100644
index 000000000..b76e8ef20
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-split-export-declaration
+
+>
+
+See our website [@babel/helper-split-export-declaration](https://babeljs.io/docs/en/babel-helper-split-export-declaration) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-split-export-declaration
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-split-export-declaration
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/lib/index.js
new file mode 100644
index 000000000..6007f89c2
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/lib/index.js
@@ -0,0 +1,67 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = splitExportDeclaration;
+
+var _t = require("@babel/types");
+
+const {
+ cloneNode,
+ exportNamedDeclaration,
+ exportSpecifier,
+ identifier,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function splitExportDeclaration(exportDeclaration) {
+ if (!exportDeclaration.isExportDeclaration()) {
+ throw new Error("Only export declarations can be split.");
+ }
+
+ const isDefault = exportDeclaration.isExportDefaultDeclaration();
+ const declaration = exportDeclaration.get("declaration");
+ const isClassDeclaration = declaration.isClassDeclaration();
+
+ if (isDefault) {
+ const standaloneDeclaration = declaration.isFunctionDeclaration() || isClassDeclaration;
+ const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope;
+ let id = declaration.node.id;
+ let needBindingRegistration = false;
+
+ if (!id) {
+ needBindingRegistration = true;
+ id = scope.generateUidIdentifier("default");
+
+ if (standaloneDeclaration || declaration.isFunctionExpression() || declaration.isClassExpression()) {
+ declaration.node.id = cloneNode(id);
+ }
+ }
+
+ const updatedDeclaration = standaloneDeclaration ? declaration : variableDeclaration("var", [variableDeclarator(cloneNode(id), declaration.node)]);
+ const updatedExportDeclaration = exportNamedDeclaration(null, [exportSpecifier(cloneNode(id), identifier("default"))]);
+ exportDeclaration.insertAfter(updatedExportDeclaration);
+ exportDeclaration.replaceWith(updatedDeclaration);
+
+ if (needBindingRegistration) {
+ scope.registerDeclaration(exportDeclaration);
+ }
+
+ return exportDeclaration;
+ }
+
+ if (exportDeclaration.get("specifiers").length > 0) {
+ throw new Error("It doesn't make sense to split exported specifiers.");
+ }
+
+ const bindingIdentifiers = declaration.getOuterBindingIdentifiers();
+ const specifiers = Object.keys(bindingIdentifiers).map(name => {
+ return exportSpecifier(identifier(name), identifier(name));
+ });
+ const aliasDeclar = exportNamedDeclaration(null, specifiers);
+ exportDeclaration.insertAfter(aliasDeclar);
+ exportDeclaration.replaceWith(declaration.node);
+ return exportDeclaration;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/package.json
new file mode 100644
index 000000000..3836b192d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-split-export-declaration/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@babel/helper-split-export-declaration",
+ "version": "7.16.7",
+ "description": "",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-split-export-declaration"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-split-export-declaration",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/README.md
new file mode 100644
index 000000000..4f704c428
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-validator-identifier
+
+> Validate identifier/keywords name
+
+See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-validator-identifier
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-validator-identifier
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/identifier.js
new file mode 100644
index 000000000..cbade222d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/identifier.js
@@ -0,0 +1,84 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIdentifierChar = isIdentifierChar;
+exports.isIdentifierName = isIdentifierName;
+exports.isIdentifierStart = isIdentifierStart;
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+
+ return false;
+}
+
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+
+function isIdentifierName(name) {
+ let isFirst = true;
+
+ for (let i = 0; i < name.length; i++) {
+ let cp = name.charCodeAt(i);
+
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
+ const trail = name.charCodeAt(++i);
+
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+
+ if (isFirst) {
+ isFirst = false;
+
+ if (!isIdentifierStart(cp)) {
+ return false;
+ }
+ } else if (!isIdentifierChar(cp)) {
+ return false;
+ }
+ }
+
+ return !isFirst;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/index.js
new file mode 100644
index 000000000..ca9decf9c
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/index.js
@@ -0,0 +1,57 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "isIdentifierChar", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierChar;
+ }
+});
+Object.defineProperty(exports, "isIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierName;
+ }
+});
+Object.defineProperty(exports, "isIdentifierStart", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierStart;
+ }
+});
+Object.defineProperty(exports, "isKeyword", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isKeyword;
+ }
+});
+Object.defineProperty(exports, "isReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindOnlyReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictReservedWord;
+ }
+});
+
+var _identifier = require("./identifier");
+
+var _keyword = require("./keyword");
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/keyword.js
new file mode 100644
index 000000000..0939e9a0e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/lib/keyword.js
@@ -0,0 +1,38 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isKeyword = isKeyword;
+exports.isReservedWord = isReservedWord;
+exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
+exports.isStrictBindReservedWord = isStrictBindReservedWord;
+exports.isStrictReservedWord = isStrictReservedWord;
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+
+function isKeyword(word) {
+ return keywords.has(word);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/package.json
new file mode 100644
index 000000000..972fdf11d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@babel/helper-validator-identifier",
+ "version": "7.16.7",
+ "description": "Validate identifier/keywords name",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-validator-identifier"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": "./lib/index.js",
+ "./package.json": "./package.json"
+ },
+ "devDependencies": {
+ "@unicode/unicode-14.0.0": "^1.2.1",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
new file mode 100644
index 000000000..f644d77df
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
@@ -0,0 +1,75 @@
+"use strict";
+
+// Always use the latest available version of Unicode!
+// https://tc39.github.io/ecma262/#sec-conformance
+const version = "14.0.0";
+
+const start = require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Start/code-points.js").filter(function (ch) {
+ return ch > 0x7f;
+});
+let last = -1;
+const cont = [0x200c, 0x200d].concat(
+ require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Continue/code-points.js").filter(function (ch) {
+ return ch > 0x7f && search(start, ch, last + 1) == -1;
+ })
+);
+
+function search(arr, ch, starting) {
+ for (let i = starting; arr[i] <= ch && i < arr.length; last = i++) {
+ if (arr[i] === ch) return i;
+ }
+ return -1;
+}
+
+function pad(str, width) {
+ while (str.length < width) str = "0" + str;
+ return str;
+}
+
+function esc(code) {
+ const hex = code.toString(16);
+ if (hex.length <= 2) return "\\x" + pad(hex, 2);
+ else return "\\u" + pad(hex, 4);
+}
+
+function generate(chars) {
+ const astral = [];
+ let re = "";
+ for (let i = 0, at = 0x10000; i < chars.length; i++) {
+ const from = chars[i];
+ let to = from;
+ while (i < chars.length - 1 && chars[i + 1] == to + 1) {
+ i++;
+ to++;
+ }
+ if (to <= 0xffff) {
+ if (from == to) re += esc(from);
+ else if (from + 1 == to) re += esc(from) + esc(to);
+ else re += esc(from) + "-" + esc(to);
+ } else {
+ astral.push(from - at, to - from);
+ at = to;
+ }
+ }
+ return { nonASCII: re, astral: astral };
+}
+
+const startData = generate(start);
+const contData = generate(cont);
+
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierStartChars = "' + startData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierChars = "' + contData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";"
+);
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";"
+);
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/README.md
new file mode 100644
index 000000000..94ab4284a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-validator-option
+
+> Validate plugin/preset options
+
+See our website [@babel/helper-validator-option](https://babeljs.io/docs/en/babel-helper-validator-option) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-validator-option
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-validator-option
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/find-suggestion.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/find-suggestion.js
new file mode 100644
index 000000000..019ea931d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/find-suggestion.js
@@ -0,0 +1,45 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.findSuggestion = findSuggestion;
+const {
+ min
+} = Math;
+
+function levenshtein(a, b) {
+ let t = [],
+ u = [],
+ i,
+ j;
+ const m = a.length,
+ n = b.length;
+
+ if (!m) {
+ return n;
+ }
+
+ if (!n) {
+ return m;
+ }
+
+ for (j = 0; j <= n; j++) {
+ t[j] = j;
+ }
+
+ for (i = 1; i <= m; i++) {
+ for (u = [i], j = 1; j <= n; j++) {
+ u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : min(t[j - 1], t[j], u[j - 1]) + 1;
+ }
+
+ t = u;
+ }
+
+ return u[n];
+}
+
+function findSuggestion(str, arr) {
+ const distances = arr.map(el => levenshtein(el, str));
+ return arr[distances.indexOf(min(...distances))];
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/index.js
new file mode 100644
index 000000000..8afe86122
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/index.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "OptionValidator", {
+ enumerable: true,
+ get: function () {
+ return _validator.OptionValidator;
+ }
+});
+Object.defineProperty(exports, "findSuggestion", {
+ enumerable: true,
+ get: function () {
+ return _findSuggestion.findSuggestion;
+ }
+});
+
+var _validator = require("./validator");
+
+var _findSuggestion = require("./find-suggestion");
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/validator.js b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/validator.js
new file mode 100644
index 000000000..5b4bad1dc
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/lib/validator.js
@@ -0,0 +1,58 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.OptionValidator = void 0;
+
+var _findSuggestion = require("./find-suggestion");
+
+class OptionValidator {
+ constructor(descriptor) {
+ this.descriptor = descriptor;
+ }
+
+ validateTopLevelOptions(options, TopLevelOptionShape) {
+ const validOptionNames = Object.keys(TopLevelOptionShape);
+
+ for (const option of Object.keys(options)) {
+ if (!validOptionNames.includes(option)) {
+ throw new Error(this.formatMessage(`'${option}' is not a valid top-level option.
+- Did you mean '${(0, _findSuggestion.findSuggestion)(option, validOptionNames)}'?`));
+ }
+ }
+ }
+
+ validateBooleanOption(name, value, defaultValue) {
+ if (value === undefined) {
+ return defaultValue;
+ } else {
+ this.invariant(typeof value === "boolean", `'${name}' option must be a boolean.`);
+ }
+
+ return value;
+ }
+
+ validateStringOption(name, value, defaultValue) {
+ if (value === undefined) {
+ return defaultValue;
+ } else {
+ this.invariant(typeof value === "string", `'${name}' option must be a string.`);
+ }
+
+ return value;
+ }
+
+ invariant(condition, message) {
+ if (!condition) {
+ throw new Error(this.formatMessage(message));
+ }
+ }
+
+ formatMessage(message) {
+ return `${this.descriptor}: ${message}`;
+ }
+
+}
+
+exports.OptionValidator = OptionValidator;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/package.json
new file mode 100644
index 000000000..1fe2da845
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helper-validator-option/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@babel/helper-validator-option",
+ "version": "7.16.7",
+ "description": "Validate plugin/preset options",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-validator-option"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": "./lib/index.js",
+ "./package.json": "./package.json"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/helpers/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/README.md b/weekly_mission_2/examples_4/node_modules/@babel/helpers/README.md
new file mode 100644
index 000000000..3b79dbf55
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/README.md
@@ -0,0 +1,19 @@
+# @babel/helpers
+
+> Collection of helper functions used by Babel transforms.
+
+See our website [@babel/helpers](https://babeljs.io/docs/en/babel-helpers) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helpers
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helpers --dev
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers-generated.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers-generated.js
new file mode 100644
index 000000000..cb4e5f86c
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers-generated.js
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _template = require("@babel/template");
+
+function helper(minVersion, source) {
+ return Object.freeze({
+ minVersion,
+ ast: () => _template.default.program.ast(source)
+ });
+}
+
+var _default = Object.freeze({
+ applyDecs: helper("7.17.8", 'function createMetadataMethodsForProperty(metadataMap,kind,property,decoratorFinishedRef){return{getMetadata:function(key){assertNotFinished(decoratorFinishedRef,"getMetadata"),assertMetadataKey(key);var metadataForKey=metadataMap[key];if(void 0!==metadataForKey)if(1===kind){var pub=metadataForKey.public;if(void 0!==pub)return pub[property]}else if(2===kind){var priv=metadataForKey.private;if(void 0!==priv)return priv.get(property)}else if(Object.hasOwnProperty.call(metadataForKey,"constructor"))return metadataForKey.constructor},setMetadata:function(key,value){assertNotFinished(decoratorFinishedRef,"setMetadata"),assertMetadataKey(key);var metadataForKey=metadataMap[key];if(void 0===metadataForKey&&(metadataForKey=metadataMap[key]={}),1===kind){var pub=metadataForKey.public;void 0===pub&&(pub=metadataForKey.public={}),pub[property]=value}else if(2===kind){var priv=metadataForKey.priv;void 0===priv&&(priv=metadataForKey.private=new Map),priv.set(property,value)}else metadataForKey.constructor=value}}}function convertMetadataMapToFinal(obj,metadataMap){var parentMetadataMap=obj[Symbol.metadata||Symbol.for("Symbol.metadata")],metadataKeys=Object.getOwnPropertySymbols(metadataMap);if(0!==metadataKeys.length){for(var i=0;i=0;i--){var newInit;if(void 0!==(newValue=memberDec(decs[i],name,desc,metadataMap,initializers,kind,isStatic,isPrivate,value)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=getInit(newValue),get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===initializer?initializer=newInit:"function"==typeof initializer?initializer=[initializer,newInit]:initializer.push(newInit))}if(0===kind||1===kind){if(void 0===initializer)initializer=function(instance,init){return init};else if("function"!=typeof initializer){var ownInitializers=initializer;initializer=function(instance,init){for(var value=init,i=0;i3,isStatic=kind>=5;if(isStatic?(base=Class,metadataMap=staticMetadataMap,0!==(kind-=5)&&(initializers=staticInitializers=staticInitializers||[])):(base=Class.prototype,metadataMap=protoMetadataMap,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);!existingKind&&kind>2?existingNonFields.set(name,kind):existingNonFields.set(name,!0)}applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,metadataMap,initializers)}}pushInitializers(ret,protoInitializers),pushInitializers(ret,staticInitializers)}function pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i0){for(var initializers=[],newClass=targetClass,name=targetClass.name,i=classDecs.length-1;i>=0;i--){var decoratorFinishedRef={v:!1};try{var ctx=Object.assign({kind:"class",name:name,addInitializer:createAddInitializerMethod(initializers,decoratorFinishedRef)},createMetadataMethodsForProperty(metadataMap,0,name,decoratorFinishedRef)),nextNewClass=classDecs[i](newClass,ctx)}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(assertValidReturnValue(10,nextNewClass),newClass=nextNewClass)}ret.push(newClass,(function(){for(var i=0;i1){for(var childArray=new Array(childrenLength),i=0;i]+)>/g,(function(_,name){return"$"+groups[name]})))}if("function"==typeof substitution){var _this=this;return _super[Symbol.replace].call(this,str,(function(){var args=arguments;return"object"!=typeof args[args.length-1]&&(args=[].slice.call(args)).push(buildGroups(args,_this)),substitution.apply(this,args)}))}return _super[Symbol.replace].call(this,str,substitution)},_wrapRegExp.apply(this,arguments)}')
+});
+
+exports.default = _default;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers.js
new file mode 100644
index 000000000..3b8eea243
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers.js
@@ -0,0 +1,1959 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _template = require("@babel/template");
+
+var _helpersGenerated = require("./helpers-generated");
+
+const helpers = Object.assign({
+ __proto__: null
+}, _helpersGenerated.default);
+var _default = helpers;
+exports.default = _default;
+
+const helper = minVersion => tpl => ({
+ minVersion,
+ ast: () => _template.default.program.ast(tpl)
+});
+
+helpers.AwaitValue = helper("7.0.0-beta.0")`
+ export default function _AwaitValue(value) {
+ this.wrapped = value;
+ }
+`;
+helpers.AsyncGenerator = helper("7.0.0-beta.0")`
+ import AwaitValue from "AwaitValue";
+
+ export default function AsyncGenerator(gen) {
+ var front, back;
+
+ function send(key, arg) {
+ return new Promise(function (resolve, reject) {
+ var request = {
+ key: key,
+ arg: arg,
+ resolve: resolve,
+ reject: reject,
+ next: null,
+ };
+
+ if (back) {
+ back = back.next = request;
+ } else {
+ front = back = request;
+ resume(key, arg);
+ }
+ });
+ }
+
+ function resume(key, arg) {
+ try {
+ var result = gen[key](arg)
+ var value = result.value;
+ var wrappedAwait = value instanceof AwaitValue;
+
+ Promise.resolve(wrappedAwait ? value.wrapped : value).then(
+ function (arg) {
+ if (wrappedAwait) {
+ resume(key === "return" ? "return" : "next", arg);
+ return
+ }
+
+ settle(result.done ? "return" : "normal", arg);
+ },
+ function (err) { resume("throw", err); });
+ } catch (err) {
+ settle("throw", err);
+ }
+ }
+
+ function settle(type, value) {
+ switch (type) {
+ case "return":
+ front.resolve({ value: value, done: true });
+ break;
+ case "throw":
+ front.reject(value);
+ break;
+ default:
+ front.resolve({ value: value, done: false });
+ break;
+ }
+
+ front = front.next;
+ if (front) {
+ resume(front.key, front.arg);
+ } else {
+ back = null;
+ }
+ }
+
+ this._invoke = send;
+
+ // Hide "return" method if generator return is not supported
+ if (typeof gen.return !== "function") {
+ this.return = undefined;
+ }
+ }
+
+ AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; };
+
+ AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); };
+ AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); };
+ AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); };
+`;
+helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")`
+ import AsyncGenerator from "AsyncGenerator";
+
+ export default function _wrapAsyncGenerator(fn) {
+ return function () {
+ return new AsyncGenerator(fn.apply(this, arguments));
+ };
+ }
+`;
+helpers.awaitAsyncGenerator = helper("7.0.0-beta.0")`
+ import AwaitValue from "AwaitValue";
+
+ export default function _awaitAsyncGenerator(value) {
+ return new AwaitValue(value);
+ }
+`;
+helpers.asyncGeneratorDelegate = helper("7.0.0-beta.0")`
+ export default function _asyncGeneratorDelegate(inner, awaitWrap) {
+ var iter = {}, waiting = false;
+
+ function pump(key, value) {
+ waiting = true;
+ value = new Promise(function (resolve) { resolve(inner[key](value)); });
+ return { done: false, value: awaitWrap(value) };
+ };
+
+ iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () { return this; };
+
+ iter.next = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+ return pump("next", value);
+ };
+
+ if (typeof inner.throw === "function") {
+ iter.throw = function (value) {
+ if (waiting) {
+ waiting = false;
+ throw value;
+ }
+ return pump("throw", value);
+ };
+ }
+
+ if (typeof inner.return === "function") {
+ iter.return = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+ return pump("return", value);
+ };
+ }
+
+ return iter;
+ }
+`;
+helpers.asyncToGenerator = helper("7.0.0-beta.0")`
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+
+ export default function _asyncToGenerator(fn) {
+ return function () {
+ var self = this, args = arguments;
+ return new Promise(function (resolve, reject) {
+ var gen = fn.apply(self, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+
+ _next(undefined);
+ });
+ };
+ }
+`;
+helpers.classCallCheck = helper("7.0.0-beta.0")`
+ export default function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+`;
+helpers.createClass = helper("7.0.0-beta.0")`
+ function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i ++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ export default function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ Object.defineProperty(Constructor, "prototype", { writable: false });
+ return Constructor;
+ }
+`;
+helpers.defineEnumerableProperties = helper("7.0.0-beta.0")`
+ export default function _defineEnumerableProperties(obj, descs) {
+ for (var key in descs) {
+ var desc = descs[key];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, key, desc);
+ }
+
+ // Symbols are not enumerated over by for-in loops. If native
+ // Symbols are available, fetch all of the descs object's own
+ // symbol properties and define them on our target object too.
+ if (Object.getOwnPropertySymbols) {
+ var objectSymbols = Object.getOwnPropertySymbols(descs);
+ for (var i = 0; i < objectSymbols.length; i++) {
+ var sym = objectSymbols[i];
+ var desc = descs[sym];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, sym, desc);
+ }
+ }
+ return obj;
+ }
+`;
+helpers.defaults = helper("7.0.0-beta.0")`
+ export default function _defaults(obj, defaults) {
+ var keys = Object.getOwnPropertyNames(defaults);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var value = Object.getOwnPropertyDescriptor(defaults, key);
+ if (value && value.configurable && obj[key] === undefined) {
+ Object.defineProperty(obj, key, value);
+ }
+ }
+ return obj;
+ }
+`;
+helpers.defineProperty = helper("7.0.0-beta.0")`
+ export default function _defineProperty(obj, key, value) {
+ // Shortcircuit the slow defineProperty path when possible.
+ // We are trying to avoid issues where setters defined on the
+ // prototype cause side effects under the fast path of simple
+ // assignment. By checking for existence of the property with
+ // the in operator, we can optimize most of this overhead away.
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+ }
+`;
+helpers.extends = helper("7.0.0-beta.0")`
+ export default function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+`;
+helpers.objectSpread = helper("7.0.0-beta.0")`
+ import defineProperty from "defineProperty";
+
+ export default function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = (arguments[i] != null) ? Object(arguments[i]) : {};
+ var ownKeys = Object.keys(source);
+ if (typeof Object.getOwnPropertySymbols === 'function') {
+ ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function(sym) {
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+ }));
+ }
+ ownKeys.forEach(function(key) {
+ defineProperty(target, key, source[key]);
+ });
+ }
+ return target;
+ }
+`;
+helpers.inherits = helper("7.0.0-beta.0")`
+ import setPrototypeOf from "setPrototypeOf";
+
+ export default function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+ // We can't use defineProperty to set the prototype in a single step because it
+ // doesn't work in Chrome <= 36. https://github.com/babel/babel/issues/14056
+ // V8 bug: https://bugs.chromium.org/p/v8/issues/detail?id=3334
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ Object.defineProperty(subClass, "prototype", { writable: false });
+ if (superClass) setPrototypeOf(subClass, superClass);
+ }
+`;
+helpers.inheritsLoose = helper("7.0.0-beta.0")`
+ import setPrototypeOf from "setPrototypeOf";
+
+ export default function _inheritsLoose(subClass, superClass) {
+ subClass.prototype = Object.create(superClass.prototype);
+ subClass.prototype.constructor = subClass;
+ setPrototypeOf(subClass, superClass);
+ }
+`;
+helpers.getPrototypeOf = helper("7.0.0-beta.0")`
+ export default function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf
+ ? Object.getPrototypeOf
+ : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+ }
+`;
+helpers.setPrototypeOf = helper("7.0.0-beta.0")`
+ export default function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+ return _setPrototypeOf(o, p);
+ }
+`;
+helpers.isNativeReflectConstruct = helper("7.9.0")`
+ export default function _isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+
+ // core-js@3
+ if (Reflect.construct.sham) return false;
+
+ // Proxy can't be polyfilled. Every browser implemented
+ // proxies before or at the same time as Reflect.construct,
+ // so if they support Proxy they also support Reflect.construct.
+ if (typeof Proxy === "function") return true;
+
+ // Since Reflect.construct can't be properly polyfilled, some
+ // implementations (e.g. core-js@2) don't set the correct internal slots.
+ // Those polyfills don't allow us to subclass built-ins, so we need to
+ // use our fallback implementation.
+ try {
+ // If the internal slots aren't set, this throws an error similar to
+ // TypeError: this is not a Boolean object.
+
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+`;
+helpers.construct = helper("7.0.0-beta.0")`
+ import setPrototypeOf from "setPrototypeOf";
+ import isNativeReflectConstruct from "isNativeReflectConstruct";
+
+ export default function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ _construct = Reflect.construct;
+ } else {
+ // NOTE: If Parent !== Class, the correct __proto__ is set *after*
+ // calling the constructor.
+ _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+ }
+ // Avoid issues with Class being present but undefined when it wasn't
+ // present in the original call.
+ return _construct.apply(null, arguments);
+ }
+`;
+helpers.isNativeFunction = helper("7.0.0-beta.0")`
+ export default function _isNativeFunction(fn) {
+ // Note: This function returns "true" for core-js functions.
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+ }
+`;
+helpers.wrapNativeSuper = helper("7.0.0-beta.0")`
+ import getPrototypeOf from "getPrototypeOf";
+ import setPrototypeOf from "setPrototypeOf";
+ import isNativeFunction from "isNativeFunction";
+ import construct from "construct";
+
+ export default function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !isNativeFunction(Class)) return Class;
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+ _cache.set(Class, Wrapper);
+ }
+ function Wrapper() {
+ return construct(Class, arguments, getPrototypeOf(this).constructor)
+ }
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true,
+ }
+ });
+
+ return setPrototypeOf(Wrapper, Class);
+ }
+
+ return _wrapNativeSuper(Class)
+ }
+`;
+helpers.instanceof = helper("7.0.0-beta.0")`
+ export default function _instanceof(left, right) {
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
+ return !!right[Symbol.hasInstance](left);
+ } else {
+ return left instanceof right;
+ }
+ }
+`;
+helpers.interopRequireDefault = helper("7.0.0-beta.0")`
+ export default function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+`;
+helpers.interopRequireWildcard = helper("7.14.0")`
+ function _getRequireWildcardCache(nodeInterop) {
+ if (typeof WeakMap !== "function") return null;
+
+ var cacheBabelInterop = new WeakMap();
+ var cacheNodeInterop = new WeakMap();
+ return (_getRequireWildcardCache = function (nodeInterop) {
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+ })(nodeInterop);
+ }
+
+ export default function _interopRequireWildcard(obj, nodeInterop) {
+ if (!nodeInterop && obj && obj.__esModule) {
+ return obj;
+ }
+
+ if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) {
+ return { default: obj }
+ }
+
+ var cache = _getRequireWildcardCache(nodeInterop);
+ if (cache && cache.has(obj)) {
+ return cache.get(obj);
+ }
+
+ var newObj = {};
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+ for (var key in obj) {
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = hasPropertyDescriptor
+ ? Object.getOwnPropertyDescriptor(obj, key)
+ : null;
+ if (desc && (desc.get || desc.set)) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ newObj.default = obj;
+ if (cache) {
+ cache.set(obj, newObj);
+ }
+ return newObj;
+ }
+`;
+helpers.newArrowCheck = helper("7.0.0-beta.0")`
+ export default function _newArrowCheck(innerThis, boundThis) {
+ if (innerThis !== boundThis) {
+ throw new TypeError("Cannot instantiate an arrow function");
+ }
+ }
+`;
+helpers.objectDestructuringEmpty = helper("7.0.0-beta.0")`
+ export default function _objectDestructuringEmpty(obj) {
+ if (obj == null) throw new TypeError("Cannot destructure undefined");
+ }
+`;
+helpers.objectWithoutPropertiesLoose = helper("7.0.0-beta.0")`
+ export default function _objectWithoutPropertiesLoose(source, excluded) {
+ if (source == null) return {};
+
+ var target = {};
+ var sourceKeys = Object.keys(source);
+ var key, i;
+
+ for (i = 0; i < sourceKeys.length; i++) {
+ key = sourceKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ target[key] = source[key];
+ }
+
+ return target;
+ }
+`;
+helpers.objectWithoutProperties = helper("7.0.0-beta.0")`
+ import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose";
+
+ export default function _objectWithoutProperties(source, excluded) {
+ if (source == null) return {};
+
+ var target = objectWithoutPropertiesLoose(source, excluded);
+ var key, i;
+
+ if (Object.getOwnPropertySymbols) {
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
+ key = sourceSymbolKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
+ target[key] = source[key];
+ }
+ }
+
+ return target;
+ }
+`;
+helpers.assertThisInitialized = helper("7.0.0-beta.0")`
+ export default function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return self;
+ }
+`;
+helpers.possibleConstructorReturn = helper("7.0.0-beta.0")`
+ import assertThisInitialized from "assertThisInitialized";
+
+ export default function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ } else if (call !== void 0) {
+ throw new TypeError("Derived constructors may only return object or undefined");
+ }
+
+ return assertThisInitialized(self);
+ }
+`;
+helpers.createSuper = helper("7.9.0")`
+ import getPrototypeOf from "getPrototypeOf";
+ import isNativeReflectConstruct from "isNativeReflectConstruct";
+ import possibleConstructorReturn from "possibleConstructorReturn";
+
+ export default function _createSuper(Derived) {
+ var hasNativeReflectConstruct = isNativeReflectConstruct();
+
+ return function _createSuperInternal() {
+ var Super = getPrototypeOf(Derived), result;
+ if (hasNativeReflectConstruct) {
+ // NOTE: This doesn't work if this.__proto__.constructor has been modified.
+ var NewTarget = getPrototypeOf(this).constructor;
+ result = Reflect.construct(Super, arguments, NewTarget);
+ } else {
+ result = Super.apply(this, arguments);
+ }
+ return possibleConstructorReturn(this, result);
+ }
+ }
+ `;
+helpers.superPropBase = helper("7.0.0-beta.0")`
+ import getPrototypeOf from "getPrototypeOf";
+
+ export default function _superPropBase(object, property) {
+ // Yes, this throws if object is null to being with, that's on purpose.
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
+ object = getPrototypeOf(object);
+ if (object === null) break;
+ }
+ return object;
+ }
+`;
+helpers.get = helper("7.0.0-beta.0")`
+ import superPropBase from "superPropBase";
+
+ export default function _get() {
+ if (typeof Reflect !== "undefined" && Reflect.get) {
+ _get = Reflect.get;
+ } else {
+ _get = function _get(target, property, receiver) {
+ var base = superPropBase(target, property);
+
+ if (!base) return;
+
+ var desc = Object.getOwnPropertyDescriptor(base, property);
+ if (desc.get) {
+ // STEP 3. If receiver is not present, then set receiver to target.
+ return desc.get.call(arguments.length < 3 ? target : receiver);
+ }
+
+ return desc.value;
+ };
+ }
+ return _get.apply(this, arguments);
+ }
+`;
+helpers.set = helper("7.0.0-beta.0")`
+ import superPropBase from "superPropBase";
+ import defineProperty from "defineProperty";
+
+ function set(target, property, value, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.set) {
+ set = Reflect.set;
+ } else {
+ set = function set(target, property, value, receiver) {
+ var base = superPropBase(target, property);
+ var desc;
+
+ if (base) {
+ desc = Object.getOwnPropertyDescriptor(base, property);
+ if (desc.set) {
+ desc.set.call(receiver, value);
+ return true;
+ } else if (!desc.writable) {
+ // Both getter and non-writable fall into this.
+ return false;
+ }
+ }
+
+ // Without a super that defines the property, spec boils down to
+ // "define on receiver" for some reason.
+ desc = Object.getOwnPropertyDescriptor(receiver, property);
+ if (desc) {
+ if (!desc.writable) {
+ // Setter, getter, and non-writable fall into this.
+ return false;
+ }
+
+ desc.value = value;
+ Object.defineProperty(receiver, property, desc);
+ } else {
+ // Avoid setters that may be defined on Sub's prototype, but not on
+ // the instance.
+ defineProperty(receiver, property, value);
+ }
+
+ return true;
+ };
+ }
+
+ return set(target, property, value, receiver);
+ }
+
+ export default function _set(target, property, value, receiver, isStrict) {
+ var s = set(target, property, value, receiver || target);
+ if (!s && isStrict) {
+ throw new Error('failed to set property');
+ }
+
+ return value;
+ }
+`;
+helpers.taggedTemplateLiteral = helper("7.0.0-beta.0")`
+ export default function _taggedTemplateLiteral(strings, raw) {
+ if (!raw) { raw = strings.slice(0); }
+ return Object.freeze(Object.defineProperties(strings, {
+ raw: { value: Object.freeze(raw) }
+ }));
+ }
+`;
+helpers.taggedTemplateLiteralLoose = helper("7.0.0-beta.0")`
+ export default function _taggedTemplateLiteralLoose(strings, raw) {
+ if (!raw) { raw = strings.slice(0); }
+ strings.raw = raw;
+ return strings;
+ }
+`;
+helpers.readOnlyError = helper("7.0.0-beta.0")`
+ export default function _readOnlyError(name) {
+ throw new TypeError("\\"" + name + "\\" is read-only");
+ }
+`;
+helpers.writeOnlyError = helper("7.12.13")`
+ export default function _writeOnlyError(name) {
+ throw new TypeError("\\"" + name + "\\" is write-only");
+ }
+`;
+helpers.classNameTDZError = helper("7.0.0-beta.0")`
+ export default function _classNameTDZError(name) {
+ throw new Error("Class \\"" + name + "\\" cannot be referenced in computed property keys.");
+ }
+`;
+helpers.temporalUndefined = helper("7.0.0-beta.0")`
+ // This function isn't mean to be called, but to be used as a reference.
+ // We can't use a normal object because it isn't hoisted.
+ export default function _temporalUndefined() {}
+`;
+helpers.tdz = helper("7.5.5")`
+ export default function _tdzError(name) {
+ throw new ReferenceError(name + " is not defined - temporal dead zone");
+ }
+`;
+helpers.temporalRef = helper("7.0.0-beta.0")`
+ import undef from "temporalUndefined";
+ import err from "tdz";
+
+ export default function _temporalRef(val, name) {
+ return val === undef ? err(name) : val;
+ }
+`;
+helpers.slicedToArray = helper("7.0.0-beta.0")`
+ import arrayWithHoles from "arrayWithHoles";
+ import iterableToArrayLimit from "iterableToArrayLimit";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableRest from "nonIterableRest";
+
+ export default function _slicedToArray(arr, i) {
+ return (
+ arrayWithHoles(arr) ||
+ iterableToArrayLimit(arr, i) ||
+ unsupportedIterableToArray(arr, i) ||
+ nonIterableRest()
+ );
+ }
+`;
+helpers.slicedToArrayLoose = helper("7.0.0-beta.0")`
+ import arrayWithHoles from "arrayWithHoles";
+ import iterableToArrayLimitLoose from "iterableToArrayLimitLoose";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableRest from "nonIterableRest";
+
+ export default function _slicedToArrayLoose(arr, i) {
+ return (
+ arrayWithHoles(arr) ||
+ iterableToArrayLimitLoose(arr, i) ||
+ unsupportedIterableToArray(arr, i) ||
+ nonIterableRest()
+ );
+ }
+`;
+helpers.toArray = helper("7.0.0-beta.0")`
+ import arrayWithHoles from "arrayWithHoles";
+ import iterableToArray from "iterableToArray";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableRest from "nonIterableRest";
+
+ export default function _toArray(arr) {
+ return (
+ arrayWithHoles(arr) ||
+ iterableToArray(arr) ||
+ unsupportedIterableToArray(arr) ||
+ nonIterableRest()
+ );
+ }
+`;
+helpers.toConsumableArray = helper("7.0.0-beta.0")`
+ import arrayWithoutHoles from "arrayWithoutHoles";
+ import iterableToArray from "iterableToArray";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableSpread from "nonIterableSpread";
+
+ export default function _toConsumableArray(arr) {
+ return (
+ arrayWithoutHoles(arr) ||
+ iterableToArray(arr) ||
+ unsupportedIterableToArray(arr) ||
+ nonIterableSpread()
+ );
+ }
+`;
+helpers.arrayWithoutHoles = helper("7.0.0-beta.0")`
+ import arrayLikeToArray from "arrayLikeToArray";
+
+ export default function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) return arrayLikeToArray(arr);
+ }
+`;
+helpers.arrayWithHoles = helper("7.0.0-beta.0")`
+ export default function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+ }
+`;
+helpers.maybeArrayLike = helper("7.9.0")`
+ import arrayLikeToArray from "arrayLikeToArray";
+
+ export default function _maybeArrayLike(next, arr, i) {
+ if (arr && !Array.isArray(arr) && typeof arr.length === "number") {
+ var len = arr.length;
+ return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);
+ }
+ return next(arr, i);
+ }
+`;
+helpers.iterableToArray = helper("7.0.0-beta.0")`
+ export default function _iterableToArray(iter) {
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+ }
+`;
+helpers.iterableToArrayLimit = helper("7.0.0-beta.0")`
+ export default function _iterableToArrayLimit(arr, i) {
+ // this is an expanded form of \`for...of\` that properly supports abrupt completions of
+ // iterators etc. variable names have been minimised to reduce the size of this massive
+ // helper. sometimes spec compliance is annoying :(
+ //
+ // _n = _iteratorNormalCompletion
+ // _d = _didIteratorError
+ // _e = _iteratorError
+ // _i = _iterator
+ // _s = _step
+
+ var _i = arr == null ? null : (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
+ if (_i == null) return;
+
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _s, _e;
+ try {
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+ return _arr;
+ }
+`;
+helpers.iterableToArrayLimitLoose = helper("7.0.0-beta.0")`
+ export default function _iterableToArrayLimitLoose(arr, i) {
+ var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
+ if (_i == null) return;
+
+ var _arr = [];
+ for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) {
+ _arr.push(_step.value);
+ if (i && _arr.length === i) break;
+ }
+ return _arr;
+ }
+`;
+helpers.unsupportedIterableToArray = helper("7.9.0")`
+ import arrayLikeToArray from "arrayLikeToArray";
+
+ export default function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
+ return arrayLikeToArray(o, minLen);
+ }
+`;
+helpers.arrayLikeToArray = helper("7.9.0")`
+ export default function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+ return arr2;
+ }
+`;
+helpers.nonIterableSpread = helper("7.0.0-beta.0")`
+ export default function _nonIterableSpread() {
+ throw new TypeError(
+ "Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+ );
+ }
+`;
+helpers.nonIterableRest = helper("7.0.0-beta.0")`
+ export default function _nonIterableRest() {
+ throw new TypeError(
+ "Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+ );
+ }
+`;
+helpers.createForOfIteratorHelper = helper("7.9.0")`
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+
+ // s: start (create the iterator)
+ // n: next
+ // e: error (called whenever something throws)
+ // f: finish (always called at the end)
+
+ export default function _createForOfIteratorHelper(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+
+ if (!it) {
+ // Fallback for engines without symbol support
+ if (
+ Array.isArray(o) ||
+ (it = unsupportedIterableToArray(o)) ||
+ (allowArrayLike && o && typeof o.length === "number")
+ ) {
+ if (it) o = it;
+ var i = 0;
+ var F = function(){};
+ return {
+ s: F,
+ n: function() {
+ if (i >= o.length) return { done: true };
+ return { done: false, value: o[i++] };
+ },
+ e: function(e) { throw e; },
+ f: F,
+ };
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+
+ var normalCompletion = true, didErr = false, err;
+
+ return {
+ s: function() {
+ it = it.call(o);
+ },
+ n: function() {
+ var step = it.next();
+ normalCompletion = step.done;
+ return step;
+ },
+ e: function(e) {
+ didErr = true;
+ err = e;
+ },
+ f: function() {
+ try {
+ if (!normalCompletion && it.return != null) it.return();
+ } finally {
+ if (didErr) throw err;
+ }
+ }
+ };
+ }
+`;
+helpers.createForOfIteratorHelperLoose = helper("7.9.0")`
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+
+ export default function _createForOfIteratorHelperLoose(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+
+ if (it) return (it = it.call(o)).next.bind(it);
+
+ // Fallback for engines without symbol support
+ if (
+ Array.isArray(o) ||
+ (it = unsupportedIterableToArray(o)) ||
+ (allowArrayLike && o && typeof o.length === "number")
+ ) {
+ if (it) o = it;
+ var i = 0;
+ return function() {
+ if (i >= o.length) return { done: true };
+ return { done: false, value: o[i++] };
+ }
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+`;
+helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")`
+ export default function _skipFirstGeneratorNext(fn) {
+ return function () {
+ var it = fn.apply(this, arguments);
+ it.next();
+ return it;
+ }
+ }
+`;
+helpers.toPrimitive = helper("7.1.5")`
+ export default function _toPrimitive(
+ input,
+ hint /*: "default" | "string" | "number" | void */
+ ) {
+ if (typeof input !== "object" || input === null) return input;
+ var prim = input[Symbol.toPrimitive];
+ if (prim !== undefined) {
+ var res = prim.call(input, hint || "default");
+ if (typeof res !== "object") return res;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return (hint === "string" ? String : Number)(input);
+ }
+`;
+helpers.toPropertyKey = helper("7.1.5")`
+ import toPrimitive from "toPrimitive";
+
+ export default function _toPropertyKey(arg) {
+ var key = toPrimitive(arg, "string");
+ return typeof key === "symbol" ? key : String(key);
+ }
+`;
+helpers.initializerWarningHelper = helper("7.0.0-beta.0")`
+ export default function _initializerWarningHelper(descriptor, context){
+ throw new Error(
+ 'Decorating class property failed. Please ensure that ' +
+ 'proposal-class-properties is enabled and runs after the decorators transform.'
+ );
+ }
+`;
+helpers.initializerDefineProperty = helper("7.0.0-beta.0")`
+ export default function _initializerDefineProperty(target, property, descriptor, context){
+ if (!descriptor) return;
+
+ Object.defineProperty(target, property, {
+ enumerable: descriptor.enumerable,
+ configurable: descriptor.configurable,
+ writable: descriptor.writable,
+ value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,
+ });
+ }
+`;
+helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")`
+ export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){
+ var desc = {};
+ Object.keys(descriptor).forEach(function(key){
+ desc[key] = descriptor[key];
+ });
+ desc.enumerable = !!desc.enumerable;
+ desc.configurable = !!desc.configurable;
+ if ('value' in desc || desc.initializer){
+ desc.writable = true;
+ }
+
+ desc = decorators.slice().reverse().reduce(function(desc, decorator){
+ return decorator(target, property, desc) || desc;
+ }, desc);
+
+ if (context && desc.initializer !== void 0){
+ desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+ desc.initializer = undefined;
+ }
+
+ if (desc.initializer === void 0){
+ Object.defineProperty(target, property, desc);
+ desc = null;
+ }
+
+ return desc;
+ }
+`;
+helpers.classPrivateFieldLooseKey = helper("7.0.0-beta.0")`
+ var id = 0;
+ export default function _classPrivateFieldKey(name) {
+ return "__private_" + (id++) + "_" + name;
+ }
+`;
+helpers.classPrivateFieldLooseBase = helper("7.0.0-beta.0")`
+ export default function _classPrivateFieldBase(receiver, privateKey) {
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
+ throw new TypeError("attempted to use private field on non-instance");
+ }
+ return receiver;
+ }
+`;
+helpers.classPrivateFieldGet = helper("7.0.0-beta.0")`
+ import classApplyDescriptorGet from "classApplyDescriptorGet";
+ import classExtractFieldDescriptor from "classExtractFieldDescriptor";
+ export default function _classPrivateFieldGet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+ }
+`;
+helpers.classPrivateFieldSet = helper("7.0.0-beta.0")`
+ import classApplyDescriptorSet from "classApplyDescriptorSet";
+ import classExtractFieldDescriptor from "classExtractFieldDescriptor";
+ export default function _classPrivateFieldSet(receiver, privateMap, value) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+ }
+`;
+helpers.classPrivateFieldDestructureSet = helper("7.4.4")`
+ import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet";
+ import classExtractFieldDescriptor from "classExtractFieldDescriptor";
+ export default function _classPrivateFieldDestructureSet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+ }
+`;
+helpers.classExtractFieldDescriptor = helper("7.13.10")`
+ export default function _classExtractFieldDescriptor(receiver, privateMap, action) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to " + action + " private field on non-instance");
+ }
+ return privateMap.get(receiver);
+ }
+`;
+helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")`
+ import classApplyDescriptorGet from "classApplyDescriptorGet";
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
+ export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+ }
+`;
+helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")`
+ import classApplyDescriptorSet from "classApplyDescriptorSet";
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
+ export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+ }
+`;
+helpers.classStaticPrivateMethodGet = helper("7.3.2")`
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ return method;
+ }
+`;
+helpers.classStaticPrivateMethodSet = helper("7.3.2")`
+ export default function _classStaticPrivateMethodSet() {
+ throw new TypeError("attempted to set read only static private field");
+ }
+`;
+helpers.classApplyDescriptorGet = helper("7.13.10")`
+ export default function _classApplyDescriptorGet(receiver, descriptor) {
+ if (descriptor.get) {
+ return descriptor.get.call(receiver);
+ }
+ return descriptor.value;
+ }
+`;
+helpers.classApplyDescriptorSet = helper("7.13.10")`
+ export default function _classApplyDescriptorSet(receiver, descriptor, value) {
+ if (descriptor.set) {
+ descriptor.set.call(receiver, value);
+ } else {
+ if (!descriptor.writable) {
+ // This should only throw in strict mode, but class bodies are
+ // always strict and private fields can only be used inside
+ // class bodies.
+ throw new TypeError("attempted to set read only private field");
+ }
+ descriptor.value = value;
+ }
+ }
+`;
+helpers.classApplyDescriptorDestructureSet = helper("7.13.10")`
+ export default function _classApplyDescriptorDestructureSet(receiver, descriptor) {
+ if (descriptor.set) {
+ if (!("__destrObj" in descriptor)) {
+ descriptor.__destrObj = {
+ set value(v) {
+ descriptor.set.call(receiver, v)
+ },
+ };
+ }
+ return descriptor.__destrObj;
+ } else {
+ if (!descriptor.writable) {
+ // This should only throw in strict mode, but class bodies are
+ // always strict and private fields can only be used inside
+ // class bodies.
+ throw new TypeError("attempted to set read only private field");
+ }
+
+ return descriptor;
+ }
+ }
+`;
+helpers.classStaticPrivateFieldDestructureSet = helper("7.13.10")`
+ import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet";
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
+ export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+ }
+`;
+helpers.classCheckPrivateStaticAccess = helper("7.13.10")`
+ export default function _classCheckPrivateStaticAccess(receiver, classConstructor) {
+ if (receiver !== classConstructor) {
+ throw new TypeError("Private static access of wrong provenance");
+ }
+ }
+`;
+helpers.classCheckPrivateStaticFieldDescriptor = helper("7.13.10")`
+ export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
+ if (descriptor === undefined) {
+ throw new TypeError("attempted to " + action + " private static field before its declaration");
+ }
+ }
+`;
+helpers.decorate = helper("7.1.5")`
+ import toArray from "toArray";
+ import toPropertyKey from "toPropertyKey";
+
+ // These comments are stripped by @babel/template
+ /*::
+ type PropertyDescriptor =
+ | {
+ value: any,
+ writable: boolean,
+ configurable: boolean,
+ enumerable: boolean,
+ }
+ | {
+ get?: () => any,
+ set?: (v: any) => void,
+ configurable: boolean,
+ enumerable: boolean,
+ };
+
+ type FieldDescriptor ={
+ writable: boolean,
+ configurable: boolean,
+ enumerable: boolean,
+ };
+
+ type Placement = "static" | "prototype" | "own";
+ type Key = string | symbol; // PrivateName is not supported yet.
+
+ type ElementDescriptor =
+ | {
+ kind: "method",
+ key: Key,
+ placement: Placement,
+ descriptor: PropertyDescriptor
+ }
+ | {
+ kind: "field",
+ key: Key,
+ placement: Placement,
+ descriptor: FieldDescriptor,
+ initializer?: () => any,
+ };
+
+ // This is exposed to the user code
+ type ElementObjectInput = ElementDescriptor & {
+ [@@toStringTag]?: "Descriptor"
+ };
+
+ // This is exposed to the user code
+ type ElementObjectOutput = ElementDescriptor & {
+ [@@toStringTag]?: "Descriptor"
+ extras?: ElementDescriptor[],
+ finisher?: ClassFinisher,
+ };
+
+ // This is exposed to the user code
+ type ClassObject = {
+ [@@toStringTag]?: "Descriptor",
+ kind: "class",
+ elements: ElementDescriptor[],
+ };
+
+ type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput;
+ type ClassDecorator = (descriptor: ClassObject) => ?ClassObject;
+ type ClassFinisher = (cl: Class) => Class;
+
+ // Only used by Babel in the transform output, not part of the spec.
+ type ElementDefinition =
+ | {
+ kind: "method",
+ value: any,
+ key: Key,
+ static?: boolean,
+ decorators?: ElementDecorator[],
+ }
+ | {
+ kind: "field",
+ value: () => any,
+ key: Key,
+ static?: boolean,
+ decorators?: ElementDecorator[],
+ };
+
+ declare function ClassFactory(initialize: (instance: C) => void): {
+ F: Class,
+ d: ElementDefinition[]
+ }
+
+ */
+
+ /*::
+ // Various combinations with/without extras and with one or many finishers
+
+ type ElementFinisherExtras = {
+ element: ElementDescriptor,
+ finisher?: ClassFinisher,
+ extras?: ElementDescriptor[],
+ };
+
+ type ElementFinishersExtras = {
+ element: ElementDescriptor,
+ finishers: ClassFinisher[],
+ extras: ElementDescriptor[],
+ };
+
+ type ElementsFinisher = {
+ elements: ElementDescriptor[],
+ finisher?: ClassFinisher,
+ };
+
+ type ElementsFinishers = {
+ elements: ElementDescriptor[],
+ finishers: ClassFinisher[],
+ };
+
+ */
+
+ /*::
+
+ type Placements = {
+ static: Key[],
+ prototype: Key[],
+ own: Key[],
+ };
+
+ */
+
+ // ClassDefinitionEvaluation (Steps 26-*)
+ export default function _decorate(
+ decorators /*: ClassDecorator[] */,
+ factory /*: ClassFactory */,
+ superClass /*: ?Class<*> */,
+ mixins /*: ?Array */,
+ ) /*: Class<*> */ {
+ var api = _getDecoratorsApi();
+ if (mixins) {
+ for (var i = 0; i < mixins.length; i++) {
+ api = mixins[i](api);
+ }
+ }
+
+ var r = factory(function initialize(O) {
+ api.initializeInstanceElements(O, decorated.elements);
+ }, superClass);
+ var decorated = api.decorateClass(
+ _coalesceClassElements(r.d.map(_createElementDescriptor)),
+ decorators,
+ );
+
+ api.initializeClassElements(r.F, decorated.elements);
+
+ return api.runClassFinishers(r.F, decorated.finishers);
+ }
+
+ function _getDecoratorsApi() {
+ _getDecoratorsApi = function() {
+ return api;
+ };
+
+ var api = {
+ elementsDefinitionOrder: [["method"], ["field"]],
+
+ // InitializeInstanceElements
+ initializeInstanceElements: function(
+ /*::*/ O /*: C */,
+ elements /*: ElementDescriptor[] */,
+ ) {
+ ["method", "field"].forEach(function(kind) {
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ if (element.kind === kind && element.placement === "own") {
+ this.defineClassElement(O, element);
+ }
+ }, this);
+ }, this);
+ },
+
+ // InitializeClassElements
+ initializeClassElements: function(
+ /*::*/ F /*: Class */,
+ elements /*: ElementDescriptor[] */,
+ ) {
+ var proto = F.prototype;
+
+ ["method", "field"].forEach(function(kind) {
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ var placement = element.placement;
+ if (
+ element.kind === kind &&
+ (placement === "static" || placement === "prototype")
+ ) {
+ var receiver = placement === "static" ? F : proto;
+ this.defineClassElement(receiver, element);
+ }
+ }, this);
+ }, this);
+ },
+
+ // DefineClassElement
+ defineClassElement: function(
+ /*::*/ receiver /*: C | Class */,
+ element /*: ElementDescriptor */,
+ ) {
+ var descriptor /*: PropertyDescriptor */ = element.descriptor;
+ if (element.kind === "field") {
+ var initializer = element.initializer;
+ descriptor = {
+ enumerable: descriptor.enumerable,
+ writable: descriptor.writable,
+ configurable: descriptor.configurable,
+ value: initializer === void 0 ? void 0 : initializer.call(receiver),
+ };
+ }
+ Object.defineProperty(receiver, element.key, descriptor);
+ },
+
+ // DecorateClass
+ decorateClass: function(
+ elements /*: ElementDescriptor[] */,
+ decorators /*: ClassDecorator[] */,
+ ) /*: ElementsFinishers */ {
+ var newElements /*: ElementDescriptor[] */ = [];
+ var finishers /*: ClassFinisher[] */ = [];
+ var placements /*: Placements */ = {
+ static: [],
+ prototype: [],
+ own: [],
+ };
+
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ this.addElementPlacement(element, placements);
+ }, this);
+
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ if (!_hasDecorators(element)) return newElements.push(element);
+
+ var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement(
+ element,
+ placements,
+ );
+ newElements.push(elementFinishersExtras.element);
+ newElements.push.apply(newElements, elementFinishersExtras.extras);
+ finishers.push.apply(finishers, elementFinishersExtras.finishers);
+ }, this);
+
+ if (!decorators) {
+ return { elements: newElements, finishers: finishers };
+ }
+
+ var result /*: ElementsFinishers */ = this.decorateConstructor(
+ newElements,
+ decorators,
+ );
+ finishers.push.apply(finishers, result.finishers);
+ result.finishers = finishers;
+
+ return result;
+ },
+
+ // AddElementPlacement
+ addElementPlacement: function(
+ element /*: ElementDescriptor */,
+ placements /*: Placements */,
+ silent /*: boolean */,
+ ) {
+ var keys = placements[element.placement];
+ if (!silent && keys.indexOf(element.key) !== -1) {
+ throw new TypeError("Duplicated element (" + element.key + ")");
+ }
+ keys.push(element.key);
+ },
+
+ // DecorateElement
+ decorateElement: function(
+ element /*: ElementDescriptor */,
+ placements /*: Placements */,
+ ) /*: ElementFinishersExtras */ {
+ var extras /*: ElementDescriptor[] */ = [];
+ var finishers /*: ClassFinisher[] */ = [];
+
+ for (
+ var decorators = element.decorators, i = decorators.length - 1;
+ i >= 0;
+ i--
+ ) {
+ // (inlined) RemoveElementPlacement
+ var keys = placements[element.placement];
+ keys.splice(keys.indexOf(element.key), 1);
+
+ var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor(
+ element,
+ );
+ var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras(
+ (0, decorators[i])(elementObject) /*: ElementObjectOutput */ ||
+ elementObject,
+ );
+
+ element = elementFinisherExtras.element;
+ this.addElementPlacement(element, placements);
+
+ if (elementFinisherExtras.finisher) {
+ finishers.push(elementFinisherExtras.finisher);
+ }
+
+ var newExtras /*: ElementDescriptor[] | void */ =
+ elementFinisherExtras.extras;
+ if (newExtras) {
+ for (var j = 0; j < newExtras.length; j++) {
+ this.addElementPlacement(newExtras[j], placements);
+ }
+ extras.push.apply(extras, newExtras);
+ }
+ }
+
+ return { element: element, finishers: finishers, extras: extras };
+ },
+
+ // DecorateConstructor
+ decorateConstructor: function(
+ elements /*: ElementDescriptor[] */,
+ decorators /*: ClassDecorator[] */,
+ ) /*: ElementsFinishers */ {
+ var finishers /*: ClassFinisher[] */ = [];
+
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var obj /*: ClassObject */ = this.fromClassDescriptor(elements);
+ var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor(
+ (0, decorators[i])(obj) /*: ClassObject */ || obj,
+ );
+
+ if (elementsAndFinisher.finisher !== undefined) {
+ finishers.push(elementsAndFinisher.finisher);
+ }
+
+ if (elementsAndFinisher.elements !== undefined) {
+ elements = elementsAndFinisher.elements;
+
+ for (var j = 0; j < elements.length - 1; j++) {
+ for (var k = j + 1; k < elements.length; k++) {
+ if (
+ elements[j].key === elements[k].key &&
+ elements[j].placement === elements[k].placement
+ ) {
+ throw new TypeError(
+ "Duplicated element (" + elements[j].key + ")",
+ );
+ }
+ }
+ }
+ }
+ }
+
+ return { elements: elements, finishers: finishers };
+ },
+
+ // FromElementDescriptor
+ fromElementDescriptor: function(
+ element /*: ElementDescriptor */,
+ ) /*: ElementObject */ {
+ var obj /*: ElementObject */ = {
+ kind: element.kind,
+ key: element.key,
+ placement: element.placement,
+ descriptor: element.descriptor,
+ };
+
+ var desc = {
+ value: "Descriptor",
+ configurable: true,
+ };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+
+ if (element.kind === "field") obj.initializer = element.initializer;
+
+ return obj;
+ },
+
+ // ToElementDescriptors
+ toElementDescriptors: function(
+ elementObjects /*: ElementObject[] */,
+ ) /*: ElementDescriptor[] */ {
+ if (elementObjects === undefined) return;
+ return toArray(elementObjects).map(function(elementObject) {
+ var element = this.toElementDescriptor(elementObject);
+ this.disallowProperty(elementObject, "finisher", "An element descriptor");
+ this.disallowProperty(elementObject, "extras", "An element descriptor");
+ return element;
+ }, this);
+ },
+
+ // ToElementDescriptor
+ toElementDescriptor: function(
+ elementObject /*: ElementObject */,
+ ) /*: ElementDescriptor */ {
+ var kind = String(elementObject.kind);
+ if (kind !== "method" && kind !== "field") {
+ throw new TypeError(
+ 'An element descriptor\\'s .kind property must be either "method" or' +
+ ' "field", but a decorator created an element descriptor with' +
+ ' .kind "' +
+ kind +
+ '"',
+ );
+ }
+
+ var key = toPropertyKey(elementObject.key);
+
+ var placement = String(elementObject.placement);
+ if (
+ placement !== "static" &&
+ placement !== "prototype" &&
+ placement !== "own"
+ ) {
+ throw new TypeError(
+ 'An element descriptor\\'s .placement property must be one of "static",' +
+ ' "prototype" or "own", but a decorator created an element descriptor' +
+ ' with .placement "' +
+ placement +
+ '"',
+ );
+ }
+
+ var descriptor /*: PropertyDescriptor */ = elementObject.descriptor;
+
+ this.disallowProperty(elementObject, "elements", "An element descriptor");
+
+ var element /*: ElementDescriptor */ = {
+ kind: kind,
+ key: key,
+ placement: placement,
+ descriptor: Object.assign({}, descriptor),
+ };
+
+ if (kind !== "field") {
+ this.disallowProperty(elementObject, "initializer", "A method descriptor");
+ } else {
+ this.disallowProperty(
+ descriptor,
+ "get",
+ "The property descriptor of a field descriptor",
+ );
+ this.disallowProperty(
+ descriptor,
+ "set",
+ "The property descriptor of a field descriptor",
+ );
+ this.disallowProperty(
+ descriptor,
+ "value",
+ "The property descriptor of a field descriptor",
+ );
+
+ element.initializer = elementObject.initializer;
+ }
+
+ return element;
+ },
+
+ toElementFinisherExtras: function(
+ elementObject /*: ElementObject */,
+ ) /*: ElementFinisherExtras */ {
+ var element /*: ElementDescriptor */ = this.toElementDescriptor(
+ elementObject,
+ );
+ var finisher /*: ClassFinisher */ = _optionalCallableProperty(
+ elementObject,
+ "finisher",
+ );
+ var extras /*: ElementDescriptors[] */ = this.toElementDescriptors(
+ elementObject.extras,
+ );
+
+ return { element: element, finisher: finisher, extras: extras };
+ },
+
+ // FromClassDescriptor
+ fromClassDescriptor: function(
+ elements /*: ElementDescriptor[] */,
+ ) /*: ClassObject */ {
+ var obj = {
+ kind: "class",
+ elements: elements.map(this.fromElementDescriptor, this),
+ };
+
+ var desc = { value: "Descriptor", configurable: true };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+
+ return obj;
+ },
+
+ // ToClassDescriptor
+ toClassDescriptor: function(
+ obj /*: ClassObject */,
+ ) /*: ElementsFinisher */ {
+ var kind = String(obj.kind);
+ if (kind !== "class") {
+ throw new TypeError(
+ 'A class descriptor\\'s .kind property must be "class", but a decorator' +
+ ' created a class descriptor with .kind "' +
+ kind +
+ '"',
+ );
+ }
+
+ this.disallowProperty(obj, "key", "A class descriptor");
+ this.disallowProperty(obj, "placement", "A class descriptor");
+ this.disallowProperty(obj, "descriptor", "A class descriptor");
+ this.disallowProperty(obj, "initializer", "A class descriptor");
+ this.disallowProperty(obj, "extras", "A class descriptor");
+
+ var finisher = _optionalCallableProperty(obj, "finisher");
+ var elements = this.toElementDescriptors(obj.elements);
+
+ return { elements: elements, finisher: finisher };
+ },
+
+ // RunClassFinishers
+ runClassFinishers: function(
+ constructor /*: Class<*> */,
+ finishers /*: ClassFinisher[] */,
+ ) /*: Class<*> */ {
+ for (var i = 0; i < finishers.length; i++) {
+ var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor);
+ if (newConstructor !== undefined) {
+ // NOTE: This should check if IsConstructor(newConstructor) is false.
+ if (typeof newConstructor !== "function") {
+ throw new TypeError("Finishers must return a constructor.");
+ }
+ constructor = newConstructor;
+ }
+ }
+ return constructor;
+ },
+
+ disallowProperty: function(obj, name, objectType) {
+ if (obj[name] !== undefined) {
+ throw new TypeError(objectType + " can't have a ." + name + " property.");
+ }
+ }
+ };
+
+ return api;
+ }
+
+ // ClassElementEvaluation
+ function _createElementDescriptor(
+ def /*: ElementDefinition */,
+ ) /*: ElementDescriptor */ {
+ var key = toPropertyKey(def.key);
+
+ var descriptor /*: PropertyDescriptor */;
+ if (def.kind === "method") {
+ descriptor = {
+ value: def.value,
+ writable: true,
+ configurable: true,
+ enumerable: false,
+ };
+ } else if (def.kind === "get") {
+ descriptor = { get: def.value, configurable: true, enumerable: false };
+ } else if (def.kind === "set") {
+ descriptor = { set: def.value, configurable: true, enumerable: false };
+ } else if (def.kind === "field") {
+ descriptor = { configurable: true, writable: true, enumerable: true };
+ }
+
+ var element /*: ElementDescriptor */ = {
+ kind: def.kind === "field" ? "field" : "method",
+ key: key,
+ placement: def.static
+ ? "static"
+ : def.kind === "field"
+ ? "own"
+ : "prototype",
+ descriptor: descriptor,
+ };
+ if (def.decorators) element.decorators = def.decorators;
+ if (def.kind === "field") element.initializer = def.value;
+
+ return element;
+ }
+
+ // CoalesceGetterSetter
+ function _coalesceGetterSetter(
+ element /*: ElementDescriptor */,
+ other /*: ElementDescriptor */,
+ ) {
+ if (element.descriptor.get !== undefined) {
+ other.descriptor.get = element.descriptor.get;
+ } else {
+ other.descriptor.set = element.descriptor.set;
+ }
+ }
+
+ // CoalesceClassElements
+ function _coalesceClassElements(
+ elements /*: ElementDescriptor[] */,
+ ) /*: ElementDescriptor[] */ {
+ var newElements /*: ElementDescriptor[] */ = [];
+
+ var isSameElement = function(
+ other /*: ElementDescriptor */,
+ ) /*: boolean */ {
+ return (
+ other.kind === "method" &&
+ other.key === element.key &&
+ other.placement === element.placement
+ );
+ };
+
+ for (var i = 0; i < elements.length; i++) {
+ var element /*: ElementDescriptor */ = elements[i];
+ var other /*: ElementDescriptor */;
+
+ if (
+ element.kind === "method" &&
+ (other = newElements.find(isSameElement))
+ ) {
+ if (
+ _isDataDescriptor(element.descriptor) ||
+ _isDataDescriptor(other.descriptor)
+ ) {
+ if (_hasDecorators(element) || _hasDecorators(other)) {
+ throw new ReferenceError(
+ "Duplicated methods (" + element.key + ") can't be decorated.",
+ );
+ }
+ other.descriptor = element.descriptor;
+ } else {
+ if (_hasDecorators(element)) {
+ if (_hasDecorators(other)) {
+ throw new ReferenceError(
+ "Decorators can't be placed on different accessors with for " +
+ "the same property (" +
+ element.key +
+ ").",
+ );
+ }
+ other.decorators = element.decorators;
+ }
+ _coalesceGetterSetter(element, other);
+ }
+ } else {
+ newElements.push(element);
+ }
+ }
+
+ return newElements;
+ }
+
+ function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ {
+ return element.decorators && element.decorators.length;
+ }
+
+ function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ {
+ return (
+ desc !== undefined &&
+ !(desc.value === undefined && desc.writable === undefined)
+ );
+ }
+
+ function _optionalCallableProperty /*::*/(
+ obj /*: T */,
+ name /*: $Keys */,
+ ) /*: ?Function */ {
+ var value = obj[name];
+ if (value !== undefined && typeof value !== "function") {
+ throw new TypeError("Expected '" + name + "' to be a function");
+ }
+ return value;
+ }
+
+`;
+helpers.classPrivateMethodGet = helper("7.1.6")`
+ export default function _classPrivateMethodGet(receiver, privateSet, fn) {
+ if (!privateSet.has(receiver)) {
+ throw new TypeError("attempted to get private field on non-instance");
+ }
+ return fn;
+ }
+`;
+helpers.checkPrivateRedeclaration = helper("7.14.1")`
+ export default function _checkPrivateRedeclaration(obj, privateCollection) {
+ if (privateCollection.has(obj)) {
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
+ }
+ }
+`;
+helpers.classPrivateFieldInitSpec = helper("7.14.1")`
+ import checkPrivateRedeclaration from "checkPrivateRedeclaration";
+
+ export default function _classPrivateFieldInitSpec(obj, privateMap, value) {
+ checkPrivateRedeclaration(obj, privateMap);
+ privateMap.set(obj, value);
+ }
+`;
+helpers.classPrivateMethodInitSpec = helper("7.14.1")`
+ import checkPrivateRedeclaration from "checkPrivateRedeclaration";
+
+ export default function _classPrivateMethodInitSpec(obj, privateSet) {
+ checkPrivateRedeclaration(obj, privateSet);
+ privateSet.add(obj);
+ }
+`;
+{
+ helpers.classPrivateMethodSet = helper("7.1.6")`
+ export default function _classPrivateMethodSet() {
+ throw new TypeError("attempted to reassign private method");
+ }
+ `;
+}
+helpers.identity = helper("7.17.0")`
+ export default function _identity(x) {
+ return x;
+ }
+`;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/applyDecs.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/applyDecs.js
new file mode 100644
index 000000000..8808a4018
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/applyDecs.js
@@ -0,0 +1,530 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = applyDecs;
+
+function createMetadataMethodsForProperty(metadataMap, kind, property, decoratorFinishedRef) {
+ return {
+ getMetadata: function (key) {
+ assertNotFinished(decoratorFinishedRef, "getMetadata");
+ assertMetadataKey(key);
+ var metadataForKey = metadataMap[key];
+ if (metadataForKey === void 0) return void 0;
+
+ if (kind === 1) {
+ var pub = metadataForKey.public;
+
+ if (pub !== void 0) {
+ return pub[property];
+ }
+ } else if (kind === 2) {
+ var priv = metadataForKey.private;
+
+ if (priv !== void 0) {
+ return priv.get(property);
+ }
+ } else if (Object.hasOwnProperty.call(metadataForKey, "constructor")) {
+ return metadataForKey.constructor;
+ }
+ },
+ setMetadata: function (key, value) {
+ assertNotFinished(decoratorFinishedRef, "setMetadata");
+ assertMetadataKey(key);
+ var metadataForKey = metadataMap[key];
+
+ if (metadataForKey === void 0) {
+ metadataForKey = metadataMap[key] = {};
+ }
+
+ if (kind === 1) {
+ var pub = metadataForKey.public;
+
+ if (pub === void 0) {
+ pub = metadataForKey.public = {};
+ }
+
+ pub[property] = value;
+ } else if (kind === 2) {
+ var priv = metadataForKey.priv;
+
+ if (priv === void 0) {
+ priv = metadataForKey.private = new Map();
+ }
+
+ priv.set(property, value);
+ } else {
+ metadataForKey.constructor = value;
+ }
+ }
+ };
+}
+
+function convertMetadataMapToFinal(obj, metadataMap) {
+ var parentMetadataMap = obj[Symbol.metadata || Symbol.for("Symbol.metadata")];
+ var metadataKeys = Object.getOwnPropertySymbols(metadataMap);
+ if (metadataKeys.length === 0) return;
+
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i];
+ var metaForKey = metadataMap[key];
+ var parentMetaForKey = parentMetadataMap ? parentMetadataMap[key] : null;
+ var pub = metaForKey.public;
+ var parentPub = parentMetaForKey ? parentMetaForKey.public : null;
+
+ if (pub && parentPub) {
+ Object.setPrototypeOf(pub, parentPub);
+ }
+
+ var priv = metaForKey.private;
+
+ if (priv) {
+ var privArr = Array.from(priv.values());
+ var parentPriv = parentMetaForKey ? parentMetaForKey.private : null;
+
+ if (parentPriv) {
+ privArr = privArr.concat(parentPriv);
+ }
+
+ metaForKey.private = privArr;
+ }
+
+ if (parentMetaForKey) {
+ Object.setPrototypeOf(metaForKey, parentMetaForKey);
+ }
+ }
+
+ if (parentMetadataMap) {
+ Object.setPrototypeOf(metadataMap, parentMetadataMap);
+ }
+
+ obj[Symbol.metadata || Symbol.for("Symbol.metadata")] = metadataMap;
+}
+
+function createAddInitializerMethod(initializers, decoratorFinishedRef) {
+ return function addInitializer(initializer) {
+ assertNotFinished(decoratorFinishedRef, "addInitializer");
+ assertCallable(initializer, "An initializer");
+ initializers.push(initializer);
+ };
+}
+
+function memberDec(dec, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value) {
+ var kindStr;
+
+ switch (kind) {
+ case 1:
+ kindStr = "accessor";
+ break;
+
+ case 2:
+ kindStr = "method";
+ break;
+
+ case 3:
+ kindStr = "getter";
+ break;
+
+ case 4:
+ kindStr = "setter";
+ break;
+
+ default:
+ kindStr = "field";
+ }
+
+ var ctx = {
+ kind: kindStr,
+ name: isPrivate ? "#" + name : name,
+ isStatic: isStatic,
+ isPrivate: isPrivate
+ };
+ var decoratorFinishedRef = {
+ v: false
+ };
+
+ if (kind !== 0) {
+ ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef);
+ }
+
+ var metadataKind, metadataName;
+
+ if (isPrivate) {
+ metadataKind = 2;
+ metadataName = Symbol(name);
+ var access = {};
+
+ if (kind === 0) {
+ access.get = desc.get;
+ access.set = desc.set;
+ } else if (kind === 2) {
+ access.get = function () {
+ return desc.value;
+ };
+ } else {
+ if (kind === 1 || kind === 3) {
+ access.get = function () {
+ return desc.get.call(this);
+ };
+ }
+
+ if (kind === 1 || kind === 4) {
+ access.set = function (v) {
+ desc.set.call(this, v);
+ };
+ }
+ }
+
+ ctx.access = access;
+ } else {
+ metadataKind = 1;
+ metadataName = name;
+ }
+
+ try {
+ return dec(value, Object.assign(ctx, createMetadataMethodsForProperty(metadataMap, metadataKind, metadataName, decoratorFinishedRef)));
+ } finally {
+ decoratorFinishedRef.v = true;
+ }
+}
+
+function assertNotFinished(decoratorFinishedRef, fnName) {
+ if (decoratorFinishedRef.v) {
+ throw new Error("attempted to call " + fnName + " after decoration was finished");
+ }
+}
+
+function assertMetadataKey(key) {
+ if (typeof key !== "symbol") {
+ throw new TypeError("Metadata keys must be symbols, received: " + key);
+ }
+}
+
+function assertCallable(fn, hint) {
+ if (typeof fn !== "function") {
+ throw new TypeError(hint + " must be a function");
+ }
+}
+
+function assertValidReturnValue(kind, value) {
+ var type = typeof value;
+
+ if (kind === 1) {
+ if (type !== "object" || value === null) {
+ throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ }
+
+ if (value.get !== undefined) {
+ assertCallable(value.get, "accessor.get");
+ }
+
+ if (value.set !== undefined) {
+ assertCallable(value.set, "accessor.set");
+ }
+
+ if (value.init !== undefined) {
+ assertCallable(value.init, "accessor.init");
+ }
+
+ if (value.initializer !== undefined) {
+ assertCallable(value.initializer, "accessor.initializer");
+ }
+ } else if (type !== "function") {
+ var hint;
+
+ if (kind === 0) {
+ hint = "field";
+ } else if (kind === 10) {
+ hint = "class";
+ } else {
+ hint = "method";
+ }
+
+ throw new TypeError(hint + " decorators must return a function or void 0");
+ }
+}
+
+function getInit(desc) {
+ var initializer;
+
+ if ((initializer = desc.init) == null && (initializer = desc.initializer) && typeof console !== "undefined") {
+ console.warn(".initializer has been renamed to .init as of March 2022");
+ }
+
+ return initializer;
+}
+
+function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers) {
+ var decs = decInfo[0];
+ var desc, initializer, value;
+
+ if (isPrivate) {
+ if (kind === 0 || kind === 1) {
+ desc = {
+ get: decInfo[3],
+ set: decInfo[4]
+ };
+ } else if (kind === 3) {
+ desc = {
+ get: decInfo[3]
+ };
+ } else if (kind === 4) {
+ desc = {
+ set: decInfo[3]
+ };
+ } else {
+ desc = {
+ value: decInfo[3]
+ };
+ }
+ } else if (kind !== 0) {
+ desc = Object.getOwnPropertyDescriptor(base, name);
+ }
+
+ if (kind === 1) {
+ value = {
+ get: desc.get,
+ set: desc.set
+ };
+ } else if (kind === 2) {
+ value = desc.value;
+ } else if (kind === 3) {
+ value = desc.get;
+ } else if (kind === 4) {
+ value = desc.set;
+ }
+
+ var newValue, get, set;
+
+ if (typeof decs === "function") {
+ newValue = memberDec(decs, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value);
+
+ if (newValue !== void 0) {
+ assertValidReturnValue(kind, newValue);
+
+ if (kind === 0) {
+ initializer = newValue;
+ } else if (kind === 1) {
+ initializer = getInit(newValue);
+ get = newValue.get || value.get;
+ set = newValue.set || value.set;
+ value = {
+ get: get,
+ set: set
+ };
+ } else {
+ value = newValue;
+ }
+ }
+ } else {
+ for (var i = decs.length - 1; i >= 0; i--) {
+ var dec = decs[i];
+ newValue = memberDec(dec, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value);
+
+ if (newValue !== void 0) {
+ assertValidReturnValue(kind, newValue);
+ var newInit;
+
+ if (kind === 0) {
+ newInit = newValue;
+ } else if (kind === 1) {
+ newInit = getInit(newValue);
+ get = newValue.get || value.get;
+ set = newValue.set || value.set;
+ value = {
+ get: get,
+ set: set
+ };
+ } else {
+ value = newValue;
+ }
+
+ if (newInit !== void 0) {
+ if (initializer === void 0) {
+ initializer = newInit;
+ } else if (typeof initializer === "function") {
+ initializer = [initializer, newInit];
+ } else {
+ initializer.push(newInit);
+ }
+ }
+ }
+ }
+ }
+
+ if (kind === 0 || kind === 1) {
+ if (initializer === void 0) {
+ initializer = function (instance, init) {
+ return init;
+ };
+ } else if (typeof initializer !== "function") {
+ var ownInitializers = initializer;
+
+ initializer = function (instance, init) {
+ var value = init;
+
+ for (var i = 0; i < ownInitializers.length; i++) {
+ value = ownInitializers[i].call(instance, value);
+ }
+
+ return value;
+ };
+ } else {
+ var originalInitializer = initializer;
+
+ initializer = function (instance, init) {
+ return originalInitializer.call(instance, init);
+ };
+ }
+
+ ret.push(initializer);
+ }
+
+ if (kind !== 0) {
+ if (kind === 1) {
+ desc.get = value.get;
+ desc.set = value.set;
+ } else if (kind === 2) {
+ desc.value = value;
+ } else if (kind === 3) {
+ desc.get = value;
+ } else if (kind === 4) {
+ desc.set = value;
+ }
+
+ if (isPrivate) {
+ if (kind === 1) {
+ ret.push(function (instance, args) {
+ return value.get.call(instance, args);
+ });
+ ret.push(function (instance, args) {
+ return value.set.call(instance, args);
+ });
+ } else if (kind === 2) {
+ ret.push(value);
+ } else {
+ ret.push(function (instance, args) {
+ return value.call(instance, args);
+ });
+ }
+ } else {
+ Object.defineProperty(base, name, desc);
+ }
+ }
+}
+
+function applyMemberDecs(ret, Class, protoMetadataMap, staticMetadataMap, decInfos) {
+ var protoInitializers;
+ var staticInitializers;
+ var existingProtoNonFields = new Map();
+ var existingStaticNonFields = new Map();
+
+ for (var i = 0; i < decInfos.length; i++) {
+ var decInfo = decInfos[i];
+ if (!Array.isArray(decInfo)) continue;
+ var kind = decInfo[1];
+ var name = decInfo[2];
+ var isPrivate = decInfo.length > 3;
+ var isStatic = kind >= 5;
+ var base;
+ var metadataMap;
+ var initializers;
+
+ if (isStatic) {
+ base = Class;
+ metadataMap = staticMetadataMap;
+ kind = kind - 5;
+
+ if (kind !== 0) {
+ staticInitializers = staticInitializers || [];
+ initializers = staticInitializers;
+ }
+ } else {
+ base = Class.prototype;
+ metadataMap = protoMetadataMap;
+
+ if (kind !== 0) {
+ protoInitializers = protoInitializers || [];
+ initializers = protoInitializers;
+ }
+ }
+
+ if (kind !== 0 && !isPrivate) {
+ var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields;
+ var existingKind = existingNonFields.get(name) || 0;
+
+ if (existingKind === true || existingKind === 3 && kind !== 4 || existingKind === 4 && kind !== 3) {
+ throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + name);
+ } else if (!existingKind && kind > 2) {
+ existingNonFields.set(name, kind);
+ } else {
+ existingNonFields.set(name, true);
+ }
+ }
+
+ applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers);
+ }
+
+ pushInitializers(ret, protoInitializers);
+ pushInitializers(ret, staticInitializers);
+}
+
+function pushInitializers(ret, initializers) {
+ if (initializers) {
+ ret.push(function (instance) {
+ for (var i = 0; i < initializers.length; i++) {
+ initializers[i].call(instance);
+ }
+
+ return instance;
+ });
+ }
+}
+
+function applyClassDecs(ret, targetClass, metadataMap, classDecs) {
+ if (classDecs.length > 0) {
+ var initializers = [];
+ var newClass = targetClass;
+ var name = targetClass.name;
+
+ for (var i = classDecs.length - 1; i >= 0; i--) {
+ var decoratorFinishedRef = {
+ v: false
+ };
+
+ try {
+ var ctx = Object.assign({
+ kind: "class",
+ name: name,
+ addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef)
+ }, createMetadataMethodsForProperty(metadataMap, 0, name, decoratorFinishedRef));
+ var nextNewClass = classDecs[i](newClass, ctx);
+ } finally {
+ decoratorFinishedRef.v = true;
+ }
+
+ if (nextNewClass !== undefined) {
+ assertValidReturnValue(10, nextNewClass);
+ newClass = nextNewClass;
+ }
+ }
+
+ ret.push(newClass, function () {
+ for (var i = 0; i < initializers.length; i++) {
+ initializers[i].call(newClass);
+ }
+ });
+ }
+}
+
+function applyDecs(targetClass, memberDecs, classDecs) {
+ var ret = [];
+ var staticMetadataMap = {};
+ var protoMetadataMap = {};
+ applyMemberDecs(ret, targetClass, protoMetadataMap, staticMetadataMap, memberDecs);
+ convertMetadataMapToFinal(targetClass.prototype, protoMetadataMap);
+ applyClassDecs(ret, targetClass, staticMetadataMap, classDecs);
+ convertMetadataMapToFinal(targetClass, staticMetadataMap);
+ return ret;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/asyncIterator.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/asyncIterator.js
new file mode 100644
index 000000000..0a6d9de18
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/asyncIterator.js
@@ -0,0 +1,81 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _asyncIterator;
+
+function _asyncIterator(iterable) {
+ var method,
+ async,
+ sync,
+ retry = 2;
+
+ if (typeof Symbol !== "undefined") {
+ async = Symbol.asyncIterator;
+ sync = Symbol.iterator;
+ }
+
+ while (retry--) {
+ if (async && (method = iterable[async]) != null) {
+ return method.call(iterable);
+ }
+
+ if (sync && (method = iterable[sync]) != null) {
+ return new AsyncFromSyncIterator(method.call(iterable));
+ }
+
+ async = "@@asyncIterator";
+ sync = "@@iterator";
+ }
+
+ throw new TypeError("Object is not async iterable");
+}
+
+function AsyncFromSyncIterator(s) {
+ AsyncFromSyncIterator = function (s) {
+ this.s = s;
+ this.n = s.next;
+ };
+
+ AsyncFromSyncIterator.prototype = {
+ s: null,
+ n: null,
+ next: function () {
+ return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
+ },
+ return: function (value) {
+ var ret = this.s.return;
+
+ if (ret === undefined) {
+ return Promise.resolve({
+ value: value,
+ done: true
+ });
+ }
+
+ return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));
+ },
+ throw: function (value) {
+ var thr = this.s.return;
+ if (thr === undefined) return Promise.reject(value);
+ return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));
+ }
+ };
+
+ function AsyncFromSyncIteratorContinuation(r) {
+ if (Object(r) !== r) {
+ return Promise.reject(new TypeError(r + " is not an object."));
+ }
+
+ var done = r.done;
+ return Promise.resolve(r.value).then(function (value) {
+ return {
+ value: value,
+ done: done
+ };
+ });
+ }
+
+ return new AsyncFromSyncIterator(s);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/jsx.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/jsx.js
new file mode 100644
index 000000000..68de16843
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/jsx.js
@@ -0,0 +1,53 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _createRawReactElement;
+var REACT_ELEMENT_TYPE;
+
+function _createRawReactElement(type, props, key, children) {
+ if (!REACT_ELEMENT_TYPE) {
+ REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7;
+ }
+
+ var defaultProps = type && type.defaultProps;
+ var childrenLength = arguments.length - 3;
+
+ if (!props && childrenLength !== 0) {
+ props = {
+ children: void 0
+ };
+ }
+
+ if (childrenLength === 1) {
+ props.children = children;
+ } else if (childrenLength > 1) {
+ var childArray = new Array(childrenLength);
+
+ for (var i = 0; i < childrenLength; i++) {
+ childArray[i] = arguments[i + 3];
+ }
+
+ props.children = childArray;
+ }
+
+ if (props && defaultProps) {
+ for (var propName in defaultProps) {
+ if (props[propName] === void 0) {
+ props[propName] = defaultProps[propName];
+ }
+ }
+ } else if (!props) {
+ props = defaultProps || {};
+ }
+
+ return {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type: type,
+ key: key === undefined ? null : "" + key,
+ ref: null,
+ props: props,
+ _owner: null
+ };
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/objectSpread2.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/objectSpread2.js
new file mode 100644
index 000000000..03db0068a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/objectSpread2.js
@@ -0,0 +1,46 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _objectSpread2;
+
+var _defineProperty = require("defineProperty");
+
+function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+
+ if (enumerableOnly) {
+ symbols = symbols.filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ }
+
+ keys.push.apply(keys, symbols);
+ }
+
+ return keys;
+}
+
+function _objectSpread2(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function (key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function (key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+
+ return target;
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/typeof.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/typeof.js
new file mode 100644
index 000000000..b1a728b92
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/typeof.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _typeof;
+
+function _typeof(obj) {
+ "@babel/helpers - typeof";
+
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+ exports.default = _typeof = function (obj) {
+ return typeof obj;
+ };
+ } else {
+ exports.default = _typeof = function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ }
+
+ return _typeof(obj);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js
new file mode 100644
index 000000000..6375b7119
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js
@@ -0,0 +1,73 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _wrapRegExp;
+
+var _setPrototypeOf = require("setPrototypeOf");
+
+var _inherits = require("inherits");
+
+function _wrapRegExp() {
+ exports.default = _wrapRegExp = function (re, groups) {
+ return new BabelRegExp(re, undefined, groups);
+ };
+
+ var _super = RegExp.prototype;
+
+ var _groups = new WeakMap();
+
+ function BabelRegExp(re, flags, groups) {
+ var _this = new RegExp(re, flags);
+
+ _groups.set(_this, groups || _groups.get(re));
+
+ return _setPrototypeOf(_this, BabelRegExp.prototype);
+ }
+
+ _inherits(BabelRegExp, RegExp);
+
+ BabelRegExp.prototype.exec = function (str) {
+ var result = _super.exec.call(this, str);
+
+ if (result) result.groups = buildGroups(result, this);
+ return result;
+ };
+
+ BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
+ if (typeof substitution === "string") {
+ var groups = _groups.get(this);
+
+ return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) {
+ return "$" + groups[name];
+ }));
+ } else if (typeof substitution === "function") {
+ var _this = this;
+
+ return _super[Symbol.replace].call(this, str, function () {
+ var args = arguments;
+
+ if (typeof args[args.length - 1] !== "object") {
+ args = [].slice.call(args);
+ args.push(buildGroups(args, _this));
+ }
+
+ return substitution.apply(this, args);
+ });
+ } else {
+ return _super[Symbol.replace].call(this, str, substitution);
+ }
+ };
+
+ function buildGroups(result, re) {
+ var g = _groups.get(re);
+
+ return Object.keys(g).reduce(function (groups, name) {
+ groups[name] = result[g[name]];
+ return groups;
+ }, Object.create(null));
+ }
+
+ return _wrapRegExp.apply(this, arguments);
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/index.js
new file mode 100644
index 000000000..511c6c5b8
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/lib/index.js
@@ -0,0 +1,290 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+exports.ensure = ensure;
+exports.get = get;
+exports.getDependencies = getDependencies;
+exports.list = void 0;
+exports.minVersion = minVersion;
+
+var _traverse = require("@babel/traverse");
+
+var _t = require("@babel/types");
+
+var _helpers = require("./helpers");
+
+const {
+ assignmentExpression,
+ cloneNode,
+ expressionStatement,
+ file,
+ identifier
+} = _t;
+
+function makePath(path) {
+ const parts = [];
+
+ for (; path.parentPath; path = path.parentPath) {
+ parts.push(path.key);
+ if (path.inList) parts.push(path.listKey);
+ }
+
+ return parts.reverse().join(".");
+}
+
+let FileClass = undefined;
+
+function getHelperMetadata(file) {
+ const globals = new Set();
+ const localBindingNames = new Set();
+ const dependencies = new Map();
+ let exportName;
+ let exportPath;
+ const exportBindingAssignments = [];
+ const importPaths = [];
+ const importBindingsReferences = [];
+ const dependencyVisitor = {
+ ImportDeclaration(child) {
+ const name = child.node.source.value;
+
+ if (!_helpers.default[name]) {
+ throw child.buildCodeFrameError(`Unknown helper ${name}`);
+ }
+
+ if (child.get("specifiers").length !== 1 || !child.get("specifiers.0").isImportDefaultSpecifier()) {
+ throw child.buildCodeFrameError("Helpers can only import a default value");
+ }
+
+ const bindingIdentifier = child.node.specifiers[0].local;
+ dependencies.set(bindingIdentifier, name);
+ importPaths.push(makePath(child));
+ },
+
+ ExportDefaultDeclaration(child) {
+ const decl = child.get("declaration");
+
+ if (!decl.isFunctionDeclaration() || !decl.node.id) {
+ throw decl.buildCodeFrameError("Helpers can only export named function declarations");
+ }
+
+ exportName = decl.node.id.name;
+ exportPath = makePath(child);
+ },
+
+ ExportAllDeclaration(child) {
+ throw child.buildCodeFrameError("Helpers can only export default");
+ },
+
+ ExportNamedDeclaration(child) {
+ throw child.buildCodeFrameError("Helpers can only export default");
+ },
+
+ Statement(child) {
+ if (child.isModuleDeclaration()) return;
+ child.skip();
+ }
+
+ };
+ const referenceVisitor = {
+ Program(path) {
+ const bindings = path.scope.getAllBindings();
+ Object.keys(bindings).forEach(name => {
+ if (name === exportName) return;
+ if (dependencies.has(bindings[name].identifier)) return;
+ localBindingNames.add(name);
+ });
+ },
+
+ ReferencedIdentifier(child) {
+ const name = child.node.name;
+ const binding = child.scope.getBinding(name);
+
+ if (!binding) {
+ globals.add(name);
+ } else if (dependencies.has(binding.identifier)) {
+ importBindingsReferences.push(makePath(child));
+ }
+ },
+
+ AssignmentExpression(child) {
+ const left = child.get("left");
+ if (!(exportName in left.getBindingIdentifiers())) return;
+
+ if (!left.isIdentifier()) {
+ throw left.buildCodeFrameError("Only simple assignments to exports are allowed in helpers");
+ }
+
+ const binding = child.scope.getBinding(exportName);
+
+ if (binding != null && binding.scope.path.isProgram()) {
+ exportBindingAssignments.push(makePath(child));
+ }
+ }
+
+ };
+ (0, _traverse.default)(file.ast, dependencyVisitor, file.scope);
+ (0, _traverse.default)(file.ast, referenceVisitor, file.scope);
+ if (!exportPath) throw new Error("Helpers must have a default export.");
+ exportBindingAssignments.reverse();
+ return {
+ globals: Array.from(globals),
+ localBindingNames: Array.from(localBindingNames),
+ dependencies,
+ exportBindingAssignments,
+ exportPath,
+ exportName,
+ importBindingsReferences,
+ importPaths
+ };
+}
+
+function permuteHelperAST(file, metadata, id, localBindings, getDependency) {
+ if (localBindings && !id) {
+ throw new Error("Unexpected local bindings for module-based helpers.");
+ }
+
+ if (!id) return;
+ const {
+ localBindingNames,
+ dependencies,
+ exportBindingAssignments,
+ exportPath,
+ exportName,
+ importBindingsReferences,
+ importPaths
+ } = metadata;
+ const dependenciesRefs = {};
+ dependencies.forEach((name, id) => {
+ dependenciesRefs[id.name] = typeof getDependency === "function" && getDependency(name) || id;
+ });
+ const toRename = {};
+ const bindings = new Set(localBindings || []);
+ localBindingNames.forEach(name => {
+ let newName = name;
+
+ while (bindings.has(newName)) newName = "_" + newName;
+
+ if (newName !== name) toRename[name] = newName;
+ });
+
+ if (id.type === "Identifier" && exportName !== id.name) {
+ toRename[exportName] = id.name;
+ }
+
+ const {
+ path
+ } = file;
+ const exp = path.get(exportPath);
+ const imps = importPaths.map(p => path.get(p));
+ const impsBindingRefs = importBindingsReferences.map(p => path.get(p));
+ const decl = exp.get("declaration");
+
+ if (id.type === "Identifier") {
+ exp.replaceWith(decl);
+ } else if (id.type === "MemberExpression") {
+ exportBindingAssignments.forEach(assignPath => {
+ const assign = path.get(assignPath);
+ assign.replaceWith(assignmentExpression("=", id, assign.node));
+ });
+ exp.replaceWith(decl);
+ path.pushContainer("body", expressionStatement(assignmentExpression("=", id, identifier(exportName))));
+ } else {
+ throw new Error("Unexpected helper format.");
+ }
+
+ Object.keys(toRename).forEach(name => {
+ path.scope.rename(name, toRename[name]);
+ });
+
+ for (const path of imps) path.remove();
+
+ for (const path of impsBindingRefs) {
+ const node = cloneNode(dependenciesRefs[path.node.name]);
+ path.replaceWith(node);
+ }
+}
+
+const helperData = Object.create(null);
+
+function loadHelper(name) {
+ if (!helperData[name]) {
+ const helper = _helpers.default[name];
+
+ if (!helper) {
+ throw Object.assign(new ReferenceError(`Unknown helper ${name}`), {
+ code: "BABEL_HELPER_UNKNOWN",
+ helper: name
+ });
+ }
+
+ const fn = () => {
+ {
+ if (!FileClass) {
+ const fakeFile = {
+ ast: file(helper.ast()),
+ path: null
+ };
+ (0, _traverse.default)(fakeFile.ast, {
+ Program: path => (fakeFile.path = path).stop()
+ });
+ return fakeFile;
+ }
+ }
+ return new FileClass({
+ filename: `babel-helper://${name}`
+ }, {
+ ast: file(helper.ast()),
+ code: "[internal Babel helper code]",
+ inputMap: null
+ });
+ };
+
+ let metadata = null;
+ helperData[name] = {
+ minVersion: helper.minVersion,
+
+ build(getDependency, id, localBindings) {
+ const file = fn();
+ metadata || (metadata = getHelperMetadata(file));
+ permuteHelperAST(file, metadata, id, localBindings, getDependency);
+ return {
+ nodes: file.ast.program.body,
+ globals: metadata.globals
+ };
+ },
+
+ getDependencies() {
+ metadata || (metadata = getHelperMetadata(fn()));
+ return Array.from(metadata.dependencies.values());
+ }
+
+ };
+ }
+
+ return helperData[name];
+}
+
+function get(name, getDependency, id, localBindings) {
+ return loadHelper(name).build(getDependency, id, localBindings);
+}
+
+function minVersion(name) {
+ return loadHelper(name).minVersion;
+}
+
+function getDependencies(name) {
+ return loadHelper(name).getDependencies();
+}
+
+function ensure(name, newFileClass) {
+ FileClass || (FileClass = newFileClass);
+ loadHelper(name);
+}
+
+const list = Object.keys(_helpers.default).map(name => name.replace(/^_/, ""));
+exports.list = list;
+var _default = get;
+exports.default = _default;
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helpers/package.json
new file mode 100644
index 000000000..7f2a2a94b
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@babel/helpers",
+ "version": "7.17.9",
+ "description": "Collection of helper functions used by Babel transforms.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helpers",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helpers"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.17.9",
+ "@babel/types": "^7.17.0"
+ },
+ "devDependencies": {
+ "@babel/helper-plugin-test-runner": "^7.16.7",
+ "terser": "^5.9.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/generate-helpers.js b/weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/generate-helpers.js
new file mode 100644
index 000000000..1c59746df
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/generate-helpers.js
@@ -0,0 +1,64 @@
+import fs from "fs";
+import { join } from "path";
+import { URL, fileURLToPath } from "url";
+import { minify } from "terser"; // eslint-disable-line
+
+const HELPERS_FOLDER = new URL("../src/helpers", import.meta.url);
+const IGNORED_FILES = new Set(["package.json"]);
+
+export default async function generateHelpers() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'yarn gulp generate-runtime-helpers'
+ */
+
+import template from "@babel/template";
+
+function helper(minVersion, source) {
+ return Object.freeze({
+ minVersion,
+ ast: () => template.program.ast(source),
+ })
+}
+
+export default Object.freeze({
+`;
+
+ for (const file of (await fs.promises.readdir(HELPERS_FOLDER)).sort()) {
+ if (IGNORED_FILES.has(file)) continue;
+ if (file.startsWith(".")) continue; // ignore e.g. vim swap files
+
+ const [helperName] = file.split(".");
+
+ const filePath = join(fileURLToPath(HELPERS_FOLDER), file);
+ if (!file.endsWith(".js")) {
+ console.error("ignoring", filePath);
+ continue;
+ }
+
+ const fileContents = await fs.promises.readFile(filePath, "utf8");
+ const minVersionMatch = fileContents.match(
+ /^\s*\/\*\s*@minVersion\s+(?\S+)\s*\*\/\s*$/m
+ );
+ if (!minVersionMatch) {
+ throw new Error(`@minVersion number missing in ${filePath}`);
+ }
+ const { minVersion } = minVersionMatch.groups;
+
+ const source = await minify(fileContents, {
+ mangle: false,
+ // The _typeof helper has a custom directive that we must keep
+ compress: { directives: false },
+ });
+
+ output += `\
+ ${JSON.stringify(helperName)}: helper(
+ ${JSON.stringify(minVersion)},
+ ${JSON.stringify(source.code)},
+ ),
+`;
+ }
+
+ output += "});";
+ return output;
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/package.json b/weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/package.json
new file mode 100644
index 000000000..5ffd9800b
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/helpers/scripts/package.json
@@ -0,0 +1 @@
+{ "type": "module" }
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/LICENSE b/weekly_mission_2/examples_4/node_modules/@babel/highlight/LICENSE
new file mode 100644
index 000000000..f31575ec7
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/README.md b/weekly_mission_2/examples_4/node_modules/@babel/highlight/README.md
new file mode 100644
index 000000000..f8887ad2c
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/README.md
@@ -0,0 +1,19 @@
+# @babel/highlight
+
+> Syntax highlight JavaScript strings for output in terminals.
+
+See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/highlight
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/highlight --dev
+```
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/lib/index.js b/weekly_mission_2/examples_4/node_modules/@babel/highlight/lib/index.js
new file mode 100644
index 000000000..856dfd9fb
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/lib/index.js
@@ -0,0 +1,116 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = highlight;
+exports.getChalk = getChalk;
+exports.shouldHighlight = shouldHighlight;
+
+var _jsTokens = require("js-tokens");
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+var _chalk = require("chalk");
+
+const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
+
+function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsxIdentifier: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
+}
+
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+const BRACKET = /^[()[\]{}]$/;
+let tokenize;
+{
+ const JSX_TAG = /^[a-z][\w-]*$/i;
+
+ const getTokenType = function (token, offset, text) {
+ if (token.type === "name") {
+ if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {
+ return "keyword";
+ }
+
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) == "")) {
+ return "jsxIdentifier";
+ }
+
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
+
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
+
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
+
+ return token.type;
+ };
+
+ tokenize = function* (text) {
+ let match;
+
+ while (match = _jsTokens.default.exec(text)) {
+ const token = _jsTokens.matchToToken(match);
+
+ yield {
+ type: getTokenType(token, match.index, text),
+ value: token.value
+ };
+ }
+ };
+}
+
+function highlightTokens(defs, text) {
+ let highlighted = "";
+
+ for (const {
+ type,
+ value
+ } of tokenize(text)) {
+ const colorize = defs[type];
+
+ if (colorize) {
+ highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n");
+ } else {
+ highlighted += value;
+ }
+ }
+
+ return highlighted;
+}
+
+function shouldHighlight(options) {
+ return !!_chalk.supportsColor || options.forceColor;
+}
+
+function getChalk(options) {
+ return options.forceColor ? new _chalk.constructor({
+ enabled: true,
+ level: 1
+ }) : _chalk;
+}
+
+function highlight(code, options = {}) {
+ if (code !== "" && shouldHighlight(options)) {
+ const chalk = getChalk(options);
+ const defs = getDefs(chalk);
+ return highlightTokens(defs, code);
+ } else {
+ return code;
+ }
+}
\ No newline at end of file
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/index.js b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
new file mode 100644
index 000000000..90a871c4d
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
@@ -0,0 +1,165 @@
+'use strict';
+const colorConvert = require('color-convert');
+
+const wrapAnsi16 = (fn, offset) => function () {
+ const code = fn.apply(colorConvert, arguments);
+ return `\u001B[${code + offset}m`;
+};
+
+const wrapAnsi256 = (fn, offset) => function () {
+ const code = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};5;${code}m`;
+};
+
+const wrapAnsi16m = (fn, offset) => function () {
+ const rgb = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+};
+
+function assembleStyles() {
+ const codes = new Map();
+ const styles = {
+ modifier: {
+ reset: [0, 0],
+ // 21 isn't widely supported and 22 does the same thing
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+
+ // Bright color
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+
+ // Bright color
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ };
+
+ // Fix humans
+ styles.color.grey = styles.color.gray;
+
+ for (const groupName of Object.keys(styles)) {
+ const group = styles[groupName];
+
+ for (const styleName of Object.keys(group)) {
+ const style = group[styleName];
+
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
+
+ group[styleName] = styles[styleName];
+
+ codes.set(style[0], style[1]);
+ }
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+ }
+
+ const ansi2ansi = n => n;
+ const rgb2rgb = (r, g, b) => [r, g, b];
+
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
+
+ styles.color.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 0)
+ };
+ styles.color.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 0)
+ };
+ styles.color.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 0)
+ };
+
+ styles.bgColor.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 10)
+ };
+
+ for (let key of Object.keys(colorConvert)) {
+ if (typeof colorConvert[key] !== 'object') {
+ continue;
+ }
+
+ const suite = colorConvert[key];
+
+ if (key === 'ansi16') {
+ key = 'ansi';
+ }
+
+ if ('ansi16' in suite) {
+ styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+ styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+ }
+
+ if ('ansi256' in suite) {
+ styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+ styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+ }
+
+ if ('rgb' in suite) {
+ styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+ styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+ }
+ }
+
+ return styles;
+}
+
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+});
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/license b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/license
new file mode 100644
index 000000000..e7af2f771
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/package.json b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
new file mode 100644
index 000000000..65edb48c3
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "ansi-styles",
+ "version": "3.2.1",
+ "description": "ANSI escape codes for styling strings in the terminal",
+ "license": "MIT",
+ "repository": "chalk/ansi-styles",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava",
+ "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "devDependencies": {
+ "ava": "*",
+ "babel-polyfill": "^6.23.0",
+ "svg-term-cli": "^2.1.1",
+ "xo": "*"
+ },
+ "ava": {
+ "require": "babel-polyfill"
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md
new file mode 100644
index 000000000..3158e2df5
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md
@@ -0,0 +1,147 @@
+# ansi-styles [](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+
+
+
+## Install
+
+```
+$ npm install ansi-styles
+```
+
+
+## Usage
+
+```js
+const style = require('ansi-styles');
+
+console.log(`${style.green.open}Hello world!${style.green.close}`);
+
+
+// Color conversion between 16/256/truecolor
+// NOTE: If conversion goes to 16 colors or 256 colors, the original color
+// may be degraded to fit that color palette. This means terminals
+// that do not support 16 million colors will best-match the
+// original color.
+console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close);
+console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close);
+console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close);
+```
+
+## API
+
+Each style has an `open` and `close` property.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `gray` ("bright black")
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright`
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+
+## Advanced usage
+
+By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `style.modifier`
+- `style.color`
+- `style.bgColor`
+
+###### Example
+
+```js
+console.log(style.color.green.open);
+```
+
+Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values.
+
+###### Example
+
+```js
+console.log(style.codes.get(36));
+//=> 39
+```
+
+
+## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728)
+
+`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors.
+
+To use these, call the associated conversion function with the intended output, for example:
+
+```js
+style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code
+style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code
+
+style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+
+style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code
+style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code
+```
+
+
+## Related
+
+- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js
new file mode 100644
index 000000000..1cc5fa89a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js
@@ -0,0 +1,228 @@
+'use strict';
+const escapeStringRegexp = require('escape-string-regexp');
+const ansiStyles = require('ansi-styles');
+const stdoutColor = require('supports-color').stdout;
+
+const template = require('./templates.js');
+
+const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
+
+// `supportsColor.level` → `ansiStyles.color[name]` mapping
+const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
+
+// `color-convert` models to exclude from the Chalk API due to conflicts and such
+const skipModels = new Set(['gray']);
+
+const styles = Object.create(null);
+
+function applyOptions(obj, options) {
+ options = options || {};
+
+ // Detect level if not set manually
+ const scLevel = stdoutColor ? stdoutColor.level : 0;
+ obj.level = options.level === undefined ? scLevel : options.level;
+ obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
+}
+
+function Chalk(options) {
+ // We check for this.template here since calling `chalk.constructor()`
+ // by itself will have a `this` of a previously constructed chalk object
+ if (!this || !(this instanceof Chalk) || this.template) {
+ const chalk = {};
+ applyOptions(chalk, options);
+
+ chalk.template = function () {
+ const args = [].slice.call(arguments);
+ return chalkTag.apply(null, [chalk.template].concat(args));
+ };
+
+ Object.setPrototypeOf(chalk, Chalk.prototype);
+ Object.setPrototypeOf(chalk.template, chalk);
+
+ chalk.template.constructor = Chalk;
+
+ return chalk.template;
+ }
+
+ applyOptions(this, options);
+}
+
+// Use bright blue on Windows as the normal blue color is illegible
+if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = '\u001B[94m';
+}
+
+for (const key of Object.keys(ansiStyles)) {
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+
+ styles[key] = {
+ get() {
+ const codes = ansiStyles[key];
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
+ }
+ };
+}
+
+styles.visible = {
+ get() {
+ return build.call(this, this._styles || [], true, 'visible');
+ }
+};
+
+ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
+for (const model of Object.keys(ansiStyles.color.ansi)) {
+ if (skipModels.has(model)) {
+ continue;
+ }
+
+ styles[model] = {
+ get() {
+ const level = this.level;
+ return function () {
+ const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
+ const codes = {
+ open,
+ close: ansiStyles.color.close,
+ closeRe: ansiStyles.color.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+ };
+}
+
+ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
+for (const model of Object.keys(ansiStyles.bgColor.ansi)) {
+ if (skipModels.has(model)) {
+ continue;
+ }
+
+ const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
+ styles[bgModel] = {
+ get() {
+ const level = this.level;
+ return function () {
+ const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
+ const codes = {
+ open,
+ close: ansiStyles.bgColor.close,
+ closeRe: ansiStyles.bgColor.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+ };
+}
+
+const proto = Object.defineProperties(() => {}, styles);
+
+function build(_styles, _empty, key) {
+ const builder = function () {
+ return applyStyle.apply(builder, arguments);
+ };
+
+ builder._styles = _styles;
+ builder._empty = _empty;
+
+ const self = this;
+
+ Object.defineProperty(builder, 'level', {
+ enumerable: true,
+ get() {
+ return self.level;
+ },
+ set(level) {
+ self.level = level;
+ }
+ });
+
+ Object.defineProperty(builder, 'enabled', {
+ enumerable: true,
+ get() {
+ return self.enabled;
+ },
+ set(enabled) {
+ self.enabled = enabled;
+ }
+ });
+
+ // See below for fix regarding invisible grey/dim combination on Windows
+ builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
+
+ // `__proto__` is used because we must return a function, but there is
+ // no way to create a function with a different prototype
+ builder.__proto__ = proto; // eslint-disable-line no-proto
+
+ return builder;
+}
+
+function applyStyle() {
+ // Support varags, but simply cast to string in case there's only one arg
+ const args = arguments;
+ const argsLen = args.length;
+ let str = String(arguments[0]);
+
+ if (argsLen === 0) {
+ return '';
+ }
+
+ if (argsLen > 1) {
+ // Don't slice `arguments`, it prevents V8 optimizations
+ for (let a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!this.enabled || this.level <= 0 || !str) {
+ return this._empty ? '' : str;
+ }
+
+ // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+ // see https://github.com/chalk/chalk/issues/58
+ // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+ const originalDim = ansiStyles.dim.open;
+ if (isSimpleWindowsTerm && this.hasGrey) {
+ ansiStyles.dim.open = '';
+ }
+
+ for (const code of this._styles.slice().reverse()) {
+ // Replace any instances already present with a re-opening code
+ // otherwise only the part of the string until said closing code
+ // will be colored, and the rest will simply be 'plain'.
+ str = code.open + str.replace(code.closeRe, code.open) + code.close;
+
+ // Close the styling before a linebreak and reopen
+ // after next line to fix a bleed issue on macOS
+ // https://github.com/chalk/chalk/pull/92
+ str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`);
+ }
+
+ // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
+ ansiStyles.dim.open = originalDim;
+
+ return str;
+}
+
+function chalkTag(chalk, strings) {
+ if (!Array.isArray(strings)) {
+ // If chalk() was called by itself or with a string,
+ // return the string itself as a string.
+ return [].slice.call(arguments, 1).join(' ');
+ }
+
+ const args = [].slice.call(arguments, 2);
+ const parts = [strings.raw[0]];
+
+ for (let i = 1; i < strings.length; i++) {
+ parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
+ parts.push(String(strings.raw[i]));
+ }
+
+ return template(chalk, parts.join(''));
+}
+
+Object.defineProperties(Chalk.prototype, styles);
+
+module.exports = Chalk(); // eslint-disable-line new-cap
+module.exports.supportsColor = stdoutColor;
+module.exports.default = module.exports; // For TypeScript
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js.flow b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js.flow
new file mode 100644
index 000000000..622caaa2e
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/index.js.flow
@@ -0,0 +1,93 @@
+// @flow strict
+
+type TemplateStringsArray = $ReadOnlyArray;
+
+export type Level = $Values<{
+ None: 0,
+ Basic: 1,
+ Ansi256: 2,
+ TrueColor: 3
+}>;
+
+export type ChalkOptions = {|
+ enabled?: boolean,
+ level?: Level
+|};
+
+export type ColorSupport = {|
+ level: Level,
+ hasBasic: boolean,
+ has256: boolean,
+ has16m: boolean
+|};
+
+export interface Chalk {
+ (...text: string[]): string,
+ (text: TemplateStringsArray, ...placeholders: string[]): string,
+ constructor(options?: ChalkOptions): Chalk,
+ enabled: boolean,
+ level: Level,
+ rgb(r: number, g: number, b: number): Chalk,
+ hsl(h: number, s: number, l: number): Chalk,
+ hsv(h: number, s: number, v: number): Chalk,
+ hwb(h: number, w: number, b: number): Chalk,
+ bgHex(color: string): Chalk,
+ bgKeyword(color: string): Chalk,
+ bgRgb(r: number, g: number, b: number): Chalk,
+ bgHsl(h: number, s: number, l: number): Chalk,
+ bgHsv(h: number, s: number, v: number): Chalk,
+ bgHwb(h: number, w: number, b: number): Chalk,
+ hex(color: string): Chalk,
+ keyword(color: string): Chalk,
+
+ +reset: Chalk,
+ +bold: Chalk,
+ +dim: Chalk,
+ +italic: Chalk,
+ +underline: Chalk,
+ +inverse: Chalk,
+ +hidden: Chalk,
+ +strikethrough: Chalk,
+
+ +visible: Chalk,
+
+ +black: Chalk,
+ +red: Chalk,
+ +green: Chalk,
+ +yellow: Chalk,
+ +blue: Chalk,
+ +magenta: Chalk,
+ +cyan: Chalk,
+ +white: Chalk,
+ +gray: Chalk,
+ +grey: Chalk,
+ +blackBright: Chalk,
+ +redBright: Chalk,
+ +greenBright: Chalk,
+ +yellowBright: Chalk,
+ +blueBright: Chalk,
+ +magentaBright: Chalk,
+ +cyanBright: Chalk,
+ +whiteBright: Chalk,
+
+ +bgBlack: Chalk,
+ +bgRed: Chalk,
+ +bgGreen: Chalk,
+ +bgYellow: Chalk,
+ +bgBlue: Chalk,
+ +bgMagenta: Chalk,
+ +bgCyan: Chalk,
+ +bgWhite: Chalk,
+ +bgBlackBright: Chalk,
+ +bgRedBright: Chalk,
+ +bgGreenBright: Chalk,
+ +bgYellowBright: Chalk,
+ +bgBlueBright: Chalk,
+ +bgMagentaBright: Chalk,
+ +bgCyanBright: Chalk,
+ +bgWhiteBrigh: Chalk,
+
+ supportsColor: ColorSupport
+};
+
+declare module.exports: Chalk;
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/license b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/license
new file mode 100644
index 000000000..e7af2f771
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/package.json b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/package.json
new file mode 100644
index 000000000..bc324685a
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "chalk",
+ "version": "2.4.2",
+ "description": "Terminal string styling done right",
+ "license": "MIT",
+ "repository": "chalk/chalk",
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava",
+ "bench": "matcha benchmark.js",
+ "coveralls": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "files": [
+ "index.js",
+ "templates.js",
+ "types/index.d.ts",
+ "index.js.flow"
+ ],
+ "keywords": [
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "str",
+ "ansi",
+ "style",
+ "styles",
+ "tty",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "devDependencies": {
+ "ava": "*",
+ "coveralls": "^3.0.0",
+ "execa": "^0.9.0",
+ "flow-bin": "^0.68.0",
+ "import-fresh": "^2.0.0",
+ "matcha": "^0.7.0",
+ "nyc": "^11.0.2",
+ "resolve-from": "^4.0.0",
+ "typescript": "^2.5.3",
+ "xo": "*"
+ },
+ "types": "types/index.d.ts",
+ "xo": {
+ "envs": [
+ "node",
+ "mocha"
+ ],
+ "ignores": [
+ "test/_flow.js"
+ ]
+ }
+}
diff --git a/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/readme.md b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/readme.md
new file mode 100644
index 000000000..d298e2c48
--- /dev/null
+++ b/weekly_mission_2/examples_4/node_modules/@babel/highlight/node_modules/chalk/readme.md
@@ -0,0 +1,314 @@
+